Oggi vedremo come realizzare un semplice form di ricerca in PHP, dinamico, completo e ideale per i nostri cms o progetti web!
Per prima cosa dobbiamo creare il nostro form di ricerca, in questo esempio ho fatto utilizzo dei “placeholder” per scrivere dentro l’input del form per suggerire al visitatore cosa inserire. come sempre ricordiamo di usare il metodo POST per rendere non tracciabili i valori inviati.
Form di ricerca OR
FORM.PHP
<form method="post" action="cerca.php"> <input type="text" name="testo" placeholder="Es. bilocale sul mare" /><br /> <input type="submit" value="CERCA" /> </form>
Ora che abbiamo creato la struttura principale del form siamo pronti per creare la pagina di ricerca che analizzerà i valori inseriti fornendo dei valori utili al visitatore:
CERCA.PHP
<h2 class="intestazione">Risultati della tua ricerca</h2> <?php include('gestione/config.php'); ?> <?php require_once("gestione/connessione_db.php"); //connessione db mysql_select_db("$db_name",$connessione); //seleziono il database e connetto //recupero quello che hanno scritto $testo = $_POST['testo']; $prezzo = $_POST['prezzo']; //query mysql $sql_cerca = mysql_query("SELECT * FROM articoli WHERE (titolo LIKE '%" . $testo . "%') OR (descrizione LIKE '%" . $testo . "%') OR (prezzo LIKE '%" . $prezzo . "%')"); //trovati $trovati = mysql_num_rows($sql_cerca); //se ci sono risultati if($trovati > 0) { echo "<p class='desc' style='margin-left:25px;'>Trovate $trovati voci per il termine <b>".stripslashes($testo)."</b></p>\n"; //inizio il loop while($row = mysql_fetch_array($sql_cerca)) { echo '<p>' . $row['titolo'] . '</p>'; } //fine LOOP valori trovati } //fine risultati if else{ //se non ci sono risultati // notifica in caso di mancanza di risultati echo "Al momento non sono stati pubblicati post/articoli che contengano i termini cercati."; }//fine else ?>
Come vedete il motore di ricerca è semplice ma anche poco preciso: infatti non si esegue nessun filtro su tutti i risultati, viene semplicemente recuperato il valore immesso nel form “testo” e viene confrontato con i valori inseriti nella tabella articoli : la parola chiave inserita nel form viene così confrontata con titolo, descrizione e prezzo che ovviamente sono campi del database. Interessante però l’idea di fornire un messaggio sia nel caso si trovassero degli articoli (in questo caso lo script visualizza quanti ne sono stati trovati), sia nel caso non vi siano elementi. I simboli % davanti e dopo la variabile da confrontare indicano di non tenere conto di eventuali spazi e/o caratteri prima e dopo la variabile (che nel nostro caso è la keyword cercata).
Altri operatori di ricerca PHP
Supponiamo il caso volessimo trovare la frase:
“Viva Targetweb” con descrizione “ciao a tutti buona lettura”
Nell’esempio precedente è stato usato l’operatore OR che scorre la lista dei controlli fino a trovare qualcosa. Esempio: voglio il latte O il caffè. Con OR il valore immesso nel form viene confrontato con i record inseriti in tabella, se viene trovato O il latte O il caffè all’interno del record quest’ultimo viene mostrato al visitatore. Con AND invece se inseriamo nel form: latte | caffè i dati immessi nel form vengono confrontati con i record di tabella , ma questa volta verrà stampato il record che contiene ENTRAMBI i valori richiesti.
Superati questi esempi stupidi:
SELECT * FROM articoli WHERE (titolo LIKE '%". $titolo ."%') AND (descrizione LIKE '%" . $descrizione . "%')
Ovviamente in questo caso invece di un solo campo di input ne dovremo impostare due: uno per il titolo e uno per la descrizione. le due variabili $titolo e $descrizione dovrebbero fornire il risultato voluto solo nel caso vengano trovate insieme, ovvero solo nel caso vi sia un record che ha come titolo= Viva Targetweb e come descrizione=ciao a tutti e buona lettura.
Esistono ovviamente altri e numerosi metodi per rendere la vostra ricerca ancora più precisa, è ovvio che più la ricerca diventa raffinata maggiore sarà il grado di difficoltà. Per oggi ci fermiamo qui, avete appena imparato come funzionano i più comuni e basilari sistemi di ricerca PHP/MYSQL.
condividi e commenta l’articolo se ti è stato utile!
foto credits: @Pixel Fantasy
I would like to say thanks for the efforts you have made compiling this article. You have been an inspiration for me. I’ve forwarded this to a friend of mine.
Bella Riccardo, davvero meritano i tuoi articoli! Complimentoni e continua così, ti sto facendo un bel pò di pubblicità tra colleghi webdesigner 😉 a presto!
Grazie Amerigo! mi fa piacere sapere che il mio lavoro viene apprezzato ^^ alla prossima!
Ciao Riccardo complimenti per la mini guida molto efficace, mi hai risolto un grande problema però c’è una cosa che non va. Quando inserisco il nome ( l’ho cambiato in base al mio db) e clicca su invia lui non mi trova solo quella persona ma mi trova tutte le persona che fanno parte di quella tabella…come mai??
Grazie, Saluti Aurelio
Sei stato molto di aiuto, grazie. 🙂