Salve a tutti.
io ho questo script
Codice PHP:
<?php
if ($_POST['search']){
if (!empty($_POST['keywords'])) {
$searchStr = str_replace(" ", ".", htmlentities($searchStr, ENT_QUOTES));
$searchStr = $_POST['keywords'];
if (ereg("^[a-zA-Z0-9' ]+$", $searchStr)) {
mysql_connect($host,$user,$password)or die("non riesco a connettermi");
mysql_select_db($database)or die("non riesco a selezionare il database");
print "
Risultati per \"$searchStr\"<hr>
</p>";
$keys = explode(" ", $searchStr);
for ($x = 0; $x < count($keys); $x++) {
$querystr = "SELECT * FROM articoli WHERE testo = \"$keys[$x]\" OR testo LIKE \"%$keys[$x]%\"";
$result = mysql_query($querystr);
if ($frow = mysql_fetch_array($result)) {
$found = true;
do {
//echo "" . $frow["titolo"] . " di ".$frow["autore"] . "
Url di download del driver... ".$frow["url"]."
</p>";
echo "<table border='0' cellpadding='0' height='30' cellpadding='20'>";
echo "<td bgcolor='#bfbbbb'>" . $frow["titolo"] . "</td>";
echo "<td bgcolor='#a79c9c'>" . $frow["autore"] . "</td>";
echo "<td bgcolor='#bfbbbb'>" . $frow["OS"] . "</td>";
echo "<td bgcolor='#bfbbbb'>" . $frow["url"] . "</td>";
echo "</table>";
} while ($frow = mysql_fetch_array($result));
}
}
if (!$found) {
print("Nessuna corrispondenza trovata
");
}
}
else {
print("La stringa di ricerca contiene caratteri non permessi
");
}
}
else {
print("Nessuna stringa di ricerca rilevata
");
}
}
?>
Fa la ricerca in un database MYSQL nel campo Titolo di una tabella. Ora il mio problema è che se inserisco uno spazio vuoto nel campo di ricerca , mi mostra tutto il contenuto del mio database, e se inserisco nel campo di ricerca 2 parole divise da uno spazio ripropone nuovamente tutto il database.
ESEMPIO
Nel DB esiste una tabella con 3 campi " ID , NOME , MATRICOLA "
nel database sono presenti 5 righe:
1 MARIO ROSSI 1234
2 MARIA ROSSI 1235
3 FRANCESCA ROSSI 1236
Se faccio la ricercha di MARIO, ottengno " 1 MARIO ROSSI 1234 "
ma se cerco MARIO (spazio) , o MARIO (spazio) ROSSI, ottengo :
1 MARIO ROSSI 1234
2 MARIA ROSSI 1235
3 FRANCESCA ROSSI 1236
Questo perchè presumo che l'algoritmo in mio possesso interpreti lo SPAZIO come un carattere da cercare nel database, e trovandolo in tutti i record li ripropone .. come faccio a far capire dal motore che MARIO ROSSI deve essere trasformato in MARIO+ROSSI ? e quindi visualizzare solo la riga inerente a MARIO ROSSI xD.
Vi ringrazio per l'eventuale aiuto e spero di essere stato chiaro
Ciao