Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Kahen
    Registrato dal
    Aug 2011
    Messaggi
    11

    [PHP] Problemi ricerca database

    Salve a tutti.
    Avrei un problema con un piccolo motore di ricerca interno che sto tentando di creare per un sito. Lavoro con DB MySQL e per aiutarmi uso MySQL Workbench.
    Sostanzialmente ho un problema con una query di ricerca (ho già verificato che legge perfettamente le tabelle e il db facendo stampare a video ogni riga) che vorrei fosse diversa in base ad un form 'menu' presente nella pagina precedente.

    codice:
    <form action="prova.php" method="post">
                  <fieldset>
                <legend align="center">Ricerca Database</legend>
                        <table width="321" border="0">
                            <tr>
                                <td><select name="cerca" value="campo di ricerca">
                                        <option value="all">Tutto</option>
                                        <option value="rag">Ragione Sociale</option>
                                        <option value="rap">Rappresentante</option>
                                        <option value="iva">Partita IVA</option>
                                     </select></td>
                                 <td><input type="text" name="ogg" id="ogg" /></td>
                             	 <td>
                             	     <input name="cerca2" type="submit" value="Cerca" />
                             	 </td>
                             </tr>
                        </table>
                  </fieldset>   
    </form>
    Nella pagina .php successiva viene rimandato il contenuto del form comprensivo di scelta dal menu e la parola ricercata che rimando in questo modo:

    Codice PHP:
    <?php
    $cerca 
    $_POST['cerca'];
    $ogg $_POST['ogg'];
    ?>
    Dopodiché faccio apro la connessione con il DB (verificandola) e poi mi trovo davanti al cuore del problema perché non sono sicuro che possa funzionare. Sostanzialmente volevo fare un caso "Switch": in base al caso delle opzioni di ricerca c'è una query leggermente diversa:

    Codice PHP:
    <?php
    $cerca 
    $_POST['cerca'];
    $ogg $_POST['ogg'];

    $connessione=mysql_connect("localhost","root","root") or die ("non trovo la connessione");

    mysql_select_db("database1prova",$connessione) or die ("non trovo il db");

    switch (
    $cerca)
    {
        case 
    "all";
        {
            
    $sql="SELECT * FROM clienti"."WHERE * = '{$ogg}'";
            break;
        }
        case 
    "nom";
        {
            
    $sql="SELECT * FROM clienti"."WHERE nome = '{$ogg}'";
            break;
        }
        case 
    "rap";
        {
            
    $sql="SELECT * FROM clienti"."WHERE ref = '{$ogg}'";
            break;
        }
        case 
    "tel";
        {
            
    $sql="SELECT * FROM clienti"."WHERE tel = '{$ogg}'";
            break;
        }

    }

    $ris=mysql_query($sql) or die ("Query Fallita");

    while(
    $riga=mysql_fetch_array($ris))
    {
        
            echo 
    "Nome: ".$riga["nome"]."
    "
    ;
            echo 
    "Referente: ".$riga["ref"]."
    "
    ;
            echo 
    "Tel: ".$riga["tel"]."
    "
    ;
            echo 
    "Indirizzo: ".$riga["ind"]."
    "

    }


    mysql_close($connessione);
    ?>
    Ovviamente ciò che restituisce e come si presenta è provvisorio dato che questa è solo una prova per vedere se funziona (infatti manca l'ordinamento dei dati e la selezione del risultato desiderato andando su un'altra pagina con TUTTE le informazioni del DB di quella riga). Al momento l'unica cosa che mi viene restituita è la snervante scritta di controllo "Query Fallita".
    Sono 4 anni che non tocco ne HTML, ne PHP, ne SQL ed è il mio primo tentativo in questo senso. Qualcuno ha qualche idea su dove sbaglio? Ringrazio anticipatamente.

    Kahen

  2. #2
    CIao,

    prova a cambiare questo:

    Codice PHP:
    $sql="SELECT * FROM clienti"."WHERE * = '{$ogg}'"
    in questo

    Codice PHP:
    $sql="SELECT * FROM clienti WHERE nome LIKE %'".$ogg."'%; 
    attenzione perchè ho scritto tutto al volo e forse c'è qualche errore di sintassi (non mi ricordo esattamente LIKE)
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  3. #3
    Utente di HTML.it L'avatar di Kahen
    Registrato dal
    Aug 2011
    Messaggi
    11
    grazie per la dritta ma, purtroppo, mi "muore" ancora la query (Query Fallita)
    Nemmeno io conosco la sintassi di LIKE purtroppo... sono totalmente bloccato.

  4. #4
    Utente di HTML.it L'avatar di Kahen
    Registrato dal
    Aug 2011
    Messaggi
    11
    Neo996sps sei grande! Ho scambiato i % nel comando che mi hai modificato in questo modo:

    Codice PHP:
    $sql="SELECT * FROM clienti WHERE nome LIKE ' "%.$ogg.%" ' "
    Questa è la sintassi corretta e ora ha funzionato! Ti ringrazio tantissimo!

    Spero che questo sia utile a qualcun altro

    EDIT: ora ho un altro problema: come faccio a dire al DB tramite query di cercare in ogni campo?

    Codice PHP:
    $sql="SELECT * FROM clienti WHERE * LIKE ' "%.$ogg.%" ' "
    Premetto che così non funziona e nemmeno così:

    Codice PHP:
    $sql="SELECT * FROM clienti WHERE LIKE ' "%.$ogg.%" ' "

  5. #5
    eh caro mio, li ti devi mettere dentro a mano tutti i campi. Ecco un esempio di PHP maccheronico

    Codice PHP:
    SELECT FROM clienti WHERE nome LIKE ".%$ogg%." || partita_iva LIKE  ".%$ogg%." 
    e via così. Purtroppo è una sega immane perchè il where non accetta il carattere jolly *

    --- EDIT

    || significo or
    && significa and
    != significa diverso
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  6. #6
    Utente di HTML.it L'avatar di Kahen
    Registrato dal
    Aug 2011
    Messaggi
    11
    acc speravo in qualche codicillo simpatico ... mi sembra di essere tornato al 3° anno di Informatica grazie mille delle dritte cmq

    EDIT:

    perfetto così:

    Codice PHP:
    $sql="SELECT * FROM clienti WHERE nome LIKE '%".$ogg."%' || ref LIKE '%".$ogg."%' || tel LIKE '%".$ogg."%' "
    Grazie mille ancora

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.