Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

Discussione: [MySql] Query da form

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    1,627

    [MySql] Query da form

    Ciao a tutti!
    ho un bisogno di un vostro consiglio.

    Ho una form per una ricerca dalla quale passo cselezionare una decina circa di valori.

    Ora ho il problema relativo alla query, che in base ai volori immessi nel form mi selezionerà dei prodotti o altri.

    Queto è un piccolo esempio di come è impostata ora (mancano ancora molti campi)

    $query = "SELECT id, cat, title, price FROM tabella WHERE title LIKE '%$marca%' .......ecc....ecc.. ";

    ora però se mi passo dei campi vuoti come si comporta la query ?

    Gracies

  2. #2
    equivale a cercare tutto:

    $marca = '';

    LIKE '%$marca%'

    sarebbe come dire title LIKE '%' cioe' qualsiasi carattere

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    1,627
    ok..ma allora presupponiamo che io passi queste variabili dal form:

    variabile1 = compilato
    variabile2 = compilato
    variabile3 = nessuna selezione
    variabile4 = nessuna selezione

    la mia select sarà così composta:

    $query = "SELECT id, cat, title, price FROM tabella WHERE title LIKE '%$variabile1%' autore LIKE '%$variabile2%' data LIKE '%$variabile3%' libro LIKE '%$variabile4%'";

    nella mia query i campi variaible3 e variabile 4 dato che sono "vuoti" come vengosno gestiti?

    ied eventualmente come faccio a gestire i campi vuoti??

  4. #4
    Originariamente inviato da james81
    $query = "SELECT id, cat, title, price FROM tabella WHERE title LIKE '%$variabile1%' autore LIKE '%$variabile2%' data LIKE '%$variabile3%' libro LIKE '%$variabile4%'";
    questa e' una query poco probabile perche' nel WHERE i campi cercati debbono essere uniti in forma logica. Quindi una OR nel tuo caso.

    quindi:

    .... WHERE title LIKE '%$variabile1%'
    OR autore LIKE '%$variabile2%'
    OR data LIKE '%$variabile3%'
    OR libro LIKE '%$variabile4%'

    devi verificare prima di costruire la query se il campo e' valorizzato oppure no, in modo da escluderlo dalla ricerca quando e' vuoto.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    1,627
    quindi dovrei fare prima un ciclo if o comunque un controllo per verificare se il campo è vuoto o meno e poi costruire la query?

  6. #6
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Forse in questo 3D c'è qualcosa che ti può essere utile.


  7. #7
    Originariamente inviato da james81
    quindi dovrei fare prima un ciclo if o comunque un controllo per verificare se il campo è vuoto o meno e poi costruire la query?
    Si Appunto

    Volendo potresti fare direttamente così

    Codice PHP:
    if($campo1!='')
       
    $qry.="WHERE campo1 LIKE '%".$campo1."%'";

    if(
    $campo2!='')
       
    $qry.="AND campo2 LIKE '%".$campo2."%'";

    if(
    $campo3!='')
       
    $qry.="AND campo3 LIKE '%".$campo3."%'";

    mysql_query("SELECT * FROM tabella ".$qry.""); 

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    1,627
    si infatti pensavo ad una cosa del genre, il problema è che la query può essere composta da più parti
    in questo caso


    $query = "SELECT id, cat FROM tabellaWHERE '%$variabile1%' '%$variabile2%'";

    ho solo un problema, come coolego le variabili cacolate nel ciclo if ???

  9. #9
    sono già collegate

    In base al fatto che i vari campi siano pieni o no, dentro la variabile $query avrai tutte le variabili compilate.

    In realtà però usa questo che è più completo e corretto.

    Codice PHP:
    if($campo1!='')
       
    $qry.="WHERE campo1 LIKE '%".$campo1."%'";

    if(
    $campo2!='')
    {
       if(
    $qry!='')
         
    $qry.="AND ";
       else
         
    $qry.="WHERE ";
       
    $qry.="campo2 LIKE '%".$campo2."%'";
    }
    if(
    $campo3!='')
    {
       if(
    $qry!='')
         
    $qry.="AND ";
       else
         
    $qry.="WHERE ";
       
    $qry.="AND campo3 LIKE '%".$campo3."%'";
    }
    mysql_query("SELECT * FROM tabella ".$qry.""); 

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    1,627
    sì...ma con questo metodo posso cercare solo un campo alla volta in quanto nella tua select compare solo una variabile

    SELECT * FROM tabella ".$qry.""

    giusto ?

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.