Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [mysql] stampare tutti dati tranne quello passato via GET

    ciao,

    via GET ricevo l'id_articolo $_GET['id'] e la categoria di appartenenza $_GET[id_cat]

    la query:

    codice:
    SELECT id, category_id, title FROM article  
              WHERE category_id ='$_GET[id_cat]' 
              AND CURRENT_TIMESTAMP( )                   
              BETWEEN pubblication_date AND pubblication_end ORDER BY id DESC LIMIT 0 , 30
    dopo la query eseguo un ciclo while che mi stampa tutti gli articoli per quella categoria.

    a me servirebbe però che stampasse tutti gli articoli tranne quello passato via GET, $_GET['id']

    come posso fare? la query lo può fare senza l'ausilio di php?

    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    719
    Metti un punto esclamativo prime dell'uguale.
    WHERE category_id != 'campo_get'

    Ti ricordo che il codice che hai postato tu ha 3 problemi. Te li elenco:
    -Sintassi errata, un array non lo puoi richiamare così da una stringa.
    -Sintassi errata, il nome dell'elemento dell'array deve essere una stringa, quindi mettendolo sensa virgolette diventa una costante che sicuramente non hai definito.
    -Sicurezza minima, se non fai dei controlli chiunque può accedere al tuo database sensa problemi.




  3. #3
    codice:
    SELECT id, category_id, title FROM article            
              WHERE category_id !='$_GET[id_cat]'           
             AND CURRENT_TIMESTAMP( )                              
             BETWEEN pubblication_date AND pubblication_end ORDER BY id DESC LIMIT 0 , 30
    in questo modo però dopo aver cliccato sul primo link, mi perde il category_id, cioè mi prende degli articoli da categorie diverse...che senso ha?

  4. #4
    SELECT id, category_id, title FROM article
    WHERE category_id ='$_GET["id_cat"]'
    AND id != '$_GET["id"]
    AND CURRENT_TIMESTAMP( )
    BETWEEN pubblication_date AND pubblication_end ORDER BY id DESC LIMIT 0 , 30

  5. #5
    si infatti c'ero appena arrivato

    per quanto riguarda la sintassi errata va meglio così?

    codice:
    $category = $_GET['id_cat']; 
     $articolo = $_GET['id'];  
    
    $query = "SELECT id, category_id, title FROM article                  
                 WHERE category_id ='$category' AND id != '$articolo' AND CURRENT_TIMESTAMP( )            BETWEEN pubblication_date AND pubblication_end ORDER BY id DESC LIMIT 0 , 30";

    sicurezza...non passo i dati via form...devo dare una lettura sulle sql injections?

  6. #6
    suppongo che id e id_cat siano numeri, quindi secondo me potrebbe bastare controllare che entrambe le variabili $_GET passate tramite url siano degli interi.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.