Seguendo un tutorial su html.it stavo creando un piccolo motore di ricerca per le guide che inserisco nel mio sito.
Questo tutorial però non diceva come creare i classici "messaggi di errore" in caso di chiave di ricerca non inserita oppure in caso di risultato "vuoto"
Il codice base della pagina dei risultati del motere di ricerca è il seguente:
Codice PHP:
<?
include("../top_foot.inc.php");
include("../config.inc.php");
top();
$db = mysql_connect($db_host, $db_user, $db_password);
if ($db == FALSE)
die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
mysql_select_db($db_name, $db)
or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
$keys = explode (",", $chiave);
$query = "";
reset ($keys);
while (list(,$parola) = each ($keys))
{ $parola = trim($parola);
if ($parola != "")
$query .= "titolo LIKE '%$parola%' OR sintesi LIKE '%$parola%' OR indice_1 LIKE '%$parola%' OR testo_1 LIKE '%$parola%' OR indice_2 LIKE '%$parola%' OR testo_2 LIKE '%$parola%' OR indice_3 LIKE '%$parola%' OR testo_3 LIKE '%$parola%' OR indice_4 LIKE '%$parola%' OR testo_4 LIKE '%$parola%' OR indice_5 LIKE '%$parola%' OR testo_5 LIKE '%$parola%' OR indice_6 LIKE '%$parola%' OR testo_6 LIKE '%$parola%' OR indice_7 LIKE '%$parola%' OR testo_7 LIKE '%$parola%' OR ";
}
$query .= "0";
$query = "SELECT id, titolo, data, sintesi FROM tutorials WHERE " . $query;
$result = mysql_query($query, $db);
echo "<dl>";
while ($row = mysql_fetch_array($result))
{
echo "<dt>";
echo "<a class=\"normal\" href=\"view.php?id=$row[id]\"><img src=\"../grafica/ico/gioco_up.png\" title=\"Fai clic sul Link per visionare il tutorial.\" /> $row[titolo]</a> ..::";
echo date("j/n/y", $row[data]);
echo "::.. ";
echo "</dt>";
echo "<dd>";
echo "$row[sintesi]";
echo "</dd>";
}
echo "</dl>";
echo "<a href=\"index.php\" class=\"normal\" title=\"Controlla nuovamente la lista tutorials. Forse sono presenti altre guide sullo stesso tema.\"><img src=\"../grafica/ico/risposta.png\" title=\"Controlla la lista completa dei tutorials per vedere se c'è qualche documento inerente alla tematica trattata.\" />..:: Torna all'indice tutorials </a> <a href=\"search.php\" class=\"normal\" title=\"Usa il motore di ricerca per trovare altre guide che discutono la stessa tematica.\"><img src=\"../grafica/ico/cerca.png\" title=\"Usa il motore di ricerca tutorials.\" />..:: Cerca tutorials</a><br>";
foot()
?>
Il primo controllo per verificare che l'utente abbia effettivamente scritto qualcosa nel campo del form prima di avviare la ricerca l'ho scritto come segue:
Codice PHP:
if ($chiave == "") {
echo "<h1>Chiave di ricerca non inserita</h1>";
echo "<p><img src=\"../grafica/ico/vietato.png\" title=\"Errore di inserimento dati.\" />Non hai inserito nessuna parola nel campo di ricerca. Il motore non può sviluppare alcun risultato.</p>";
echo "<dl>";
echo "<dt>Consigli Per Migliorare La Ricerca:</dt>";
echo "<dd>Per cercare più parole senza restringere troppo il campo usate la virgola tra una parola e l'altra Es.(switch,Label) se non usate la virgola il motore di ricerca mostrerà soltanto i tutorials in cui entrambe le parole sono presenti.</dd>";
echo "</dl>";
}
e l'ho inserito sotto la stringa "$keys = explode (",", $chiave);" della pagina di base, e per fortuna funziona perfettamente.
Ora il problema e nell'inviare il messaggio di errore nel caso la parola chiave inserita non porti a nessun risultato. La mia bozza per questo controllo è il codice sottostante.
Codice PHP:
if ($row == "") {
echo "<h1>Nessun risultato trovato</h1>";
echo "<p><img src=\"../grafica/ico/vietato.png\" title=\"Parola chiave non presente.\" />Il motore non ha individuato nessun risultato per la chiave di ricerca: \"$chiave\" inserita.</p>";
echo "<dl>";
echo "<dt>Consigli Per Migliorare La Ricerca:</dt>";
echo "<dd>Per cercare più parole senza restringere troppo il campo usate la virgola tra una parola e l'altra Es.(switch,Label) se non usate la virgola il motore di ricerca mostrerà soltanto i tutorials in cui entrambe le parole sono presenti.</dd>";
echo "</dl>";
}
Che è stato inserito proprio sotto la funzione wile {} purtroppo però non funziona...O meglio appare in continuazione sia che ci siano risultati sia che non ci siano e sia se non vene inserito nessuna chiave di ricerca...Non so proprio come risolvere il problema