Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662

    Risultato ricerca (complesso)

    Eccoci quà! Ho creato tutto il sistema di registrazione, di autenticazione, la pagina utente e il pannello di controllo, ed ora sono finalmente arrivato al punto del progetto nel quale devo scontrare con la "meccanica" della ricerca.

    Quì, come per il resto, ho bisogno di un piccolo aiuto di partenza (dai che da settembre ad oggi il PHP non è più un mostro sconosciuto )

    Ho un form (diciamo una serie di form) con una serie di campi... ma andiamo con ordine.

    Ho tre campi nel form e devo trovare gli id dei record che abbiano almeno uno dei tre campi, tenendo presente che ogni utente può inserire fino a tre auto.

    Poniamo caso che io debba reperire tutti i record dove l'auto è una fiat o una opel, come inizio?
    Devo trovare gli id dei record giusto? e se il campo è vuoto?

    Una cosa di questo genere?:
    Codice PHP:
    $query1 "SELECT id FROM tabella_auto WHERE
                    auto1='
    $_POST[auto]'   or
                    auto1='
    $_POST[auto1]' or
                    auto1='
    $_POST[auto2]' or
                    auto2='
    $_POST[auto]'  or
                    auto2='
    $_POST[auto1]' or
                    auto2='
    $_POST[auto2]' or
                    auto3='
    $_POST[auto]'  or
                    auto3='
    $_POST[auto1]' or
                    auto3='
    $_POST[auto2]' ";
        
    $res mysql_query($query1,$connect);
        
        while (
    $row mysql_fetch_array($res))
          {
          
    print_r($row);
          } 
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  2. #2
    perchè in "tabella_auto" ci sono tre campi che si chiamano "auto1","auto2" e "auto3"?

    se le condizioni sono in OR dovrai usare l'or nella query

    se il campo è vuoto fai prima un controllo e non ci metti gli OR, cioè costruisci le condizioni della query a seconda dei valori passati.
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    a me tornerebbe così

    $query1 = "SELECT id FROM tabella_auto WHERE
    auto='$_POST[auto]' or
    auto='$_POST[auto1]' or
    auto='$_POST[auto2]'";

    come è fatta la tabella?????

  4. #4
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    Ciao Santino, ciao BStefano!

    Dunque, l'utente ha la possibilità di inserire fino a 3 auto in 3 distinti campi che andranno a popolare 3 diverse celle della tabella_auto (auto1, auto2, auto3)

    Nella ricerca io ho altri 3 campi dove l'utente può scegliere se riempirne 1, 2, o tutti e tre.

    In questo modo dovrebbe cercarmi tutti i record dove almeno una delle 3 auto ricercate sia presente in almeno uno dei campi della tabella (auto1, auto2, auto3)

    Esempio:
    Sono l'utente banart75 e nel mio pannello di controllo ho i 3 campi per l'auto e inserisco nel primo FIAT e nel secondo OPEL (il terzo lo lascio vuoto)

    Sono l'utente pino_lalavatrice e nei tre campi del pannello di controllo ho inserito SKODA, FIAT, vuoto.

    Sono l'utente pippo_troppo e i 3 campi auto nel mio pannello di controllo li ho lasciati bianchi.
    -----
    Sono il ricercatore e nel primo campo scrivo BMW e nel secondo scrivo FIAT.
    Nel risultato ricerca dovrebbero apparire gli id di banart75 e pino_lalavatrice
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  5. #5
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    Ok, dunque... con questo codice:
    Codice PHP:
    $query1 "SELECT * FROM tabella_auto WHERE
                    auto1='
    $_POST[auto]'   or
                    auto1='
    $_POST[auto1]' or
                    auto1='
    $_POST[auto2]' or
                    auto2='
    $_POST[auto]'  or
                    auto2='
    $_POST[auto1]' or
                    auto2='
    $_POST[auto2]' or
                    auto3='
    $_POST[auto]'  or
                    auto3='
    $_POST[auto1]' or
                    auto3='
    $_POST[auto2]' ";
        
    $res mysql_query($query1,$connect);
        
        while (
    $row mysql_fetch_array($res))
          {
          echo 
    $row['id']."
    "
    ;
          } 
    ..riesco a stampare a video gli id che mi interessano... ma anche quelli che NON mi interessano

    Se io nella ricerca non inserisco niente nei campi, nell'esempio di prima, mi da gli id di tutti e tre gli utenti... OVVIO! tutti e tre hanno almeno un campo vuoto e se io dico al sistema "cerca gli ID degli utenti che hanno almeno un campo con dentro (niente)" mi da il risultato che non speravo!

    Come faccio a dirgli "e che non sia vuoto"?
    Valgono le gegole di algebra?
    tipo...:
    Codice PHP:
    $query1 "SELECT * FROM tabella_auto WHERE
                    (auto1='
    $_POST[auto]' && isset($_POST[auto])   or
                    (auto1='
    $_POST[auto1]' && isset($_POST[auto1]) or
                    (auto1='
    $_POST[auto2]' && isset($_POST[auto2]) or
                    (auto2='
    $_POST[auto]' && isset($_POST[auto])  or
                    (auto2='
    $_POST[auto1]' && isset($_POST[auto1]) or
                    (auto2='
    $_POST[auto2]' && isset($_POST[auto2]) or
                    (auto3='
    $_POST[auto]' && isset($_POST[auto])  or
                    (auto3='
    $_POST[auto1]' && isset($_POST[auto1]) or
                    (auto3='
    $_POST[auto2]' && isset($_POST[auto2]) ";
        
    $res mysql_query($query1,$connect);
        
        while (
    $row mysql_fetch_array($res))
          {
          echo 
    $row['id']."
    "
    ;
          } 
    (ommamma... avrò fatto una porcata colossale)
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  6. #6
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    direi di si, controlli prima il valore di $_POST e poi se è settata
    se non è settata esclude che tu possa controllare il valore

  7. #7
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    Così?

    Codice PHP:
    if(isset($_POST[auto])||isset($_POST[auto1])||isset($_POST[auto2])){
        
        
    $query1 "SELECT * FROM tabella_auto WHERE
                        auto1='
    $_POST[auto]'   or
                        auto1='
    $_POST[auto1]' or
                        auto1='
    $_POST[auto2]' or
                        auto2='
    $_POST[auto]'  or
                        auto2='
    $_POST[auto1]' or
                        auto2='
    $_POST[auto2]' or
                        auto3='
    $_POST[auto]'  or
                        auto3='
    $_POST[auto1]' or
                        auto3='
    $_POST[auto2]' ";
            
    $res mysql_query($query1,$connect);
            
    }

        while (
    $row mysql_fetch_array($res))
            {
            echo 
    $row['id']."
    "
    ;
            } 
    ...ma non va... stesso risultato di prima
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  8. #8
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    in teoria è un po' + complesso, ma il problema del risultato della query non credo sia per questo

  9. #9
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    ...ehm... un esempino ino ino?
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  10. #10
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    Codice PHP:
    $where="";

    if(isset(
    $_POST[auto]))
    {
          
    $where.=" auto1='$_POST[auto]'   or ";
          
    $where.=" auto2='$_POST[auto]'   or ";
          
    $where.=" auto3='$_POST[auto]'    ";
    }
    if(isset(
    $_POST[auto1]))
    {
          if(
    $where!="")
          {
                
    $where.=" or "
          
    }
          
    $where.=" auto1='$_POST[auto1]'   or ";
          
    $where.=" auto2='$_POST[auto1]'   or ";
          
    $where.=" auto3='$_POST[auto1]'    ";
    }
    if(isset(
    $_POST[auto2]))
    {
           if(
    $where!="")
          {
                
    $where.=" or "
          
    }
          
    $where.=" auto1='$_POST[auto2]'   or ";
          
    $where.=" auto2='$_POST[auto2]'   or ";
          
    $where.=" auto3='$_POST[auto2]'    ";
    }


     
    $query1 "SELECT * FROM tabella_auto WHERE ".$where
    ma se la logica della query è sbagliata va cambiato anche questo

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 © 2024 vBulletin Solutions, Inc. All rights reserved.