Form di ricerca semplice in php

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

  1. 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.

  2. Bella Riccardo, davvero meritano i tuoi articoli! Complimentoni e continua così, ti sto facendo un bel pò di pubblicità tra colleghi webdesigner 😉 a presto!

  3. 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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

Up Next:

Overlay jQuery al caricamento della pagina

Overlay jQuery al caricamento della pagina