ciao a tutti ho questo motore di ricerca :
codice:
if ($_POST['search']){
$searchwords = addslashes(htmlspecialchars($_POST['swords']));
if (strlen($searchwords) == 0){
echo "Inserire un termine da ricercare.";
}
elseif (strlen($searchwords) < 3){
echo "La chiave di ricerca è troppo breve. Inserire una parola di almeno 3 lettere.";
}
else{
$words = explode(' ',$searchwords);
$totalwords = count($words);
$i = 0;
$searchstring = "";
while ($i != $totalwords){
if ($i != 0 and $i != $totalwords){
$searchstring .= " and ";
}
$searchstring .= "nome LIKE '%$words[$i]%' or descrizione LIKE '%$words[$i]%'";
$i = $i + 1;
}
$query = "SELECT * FROM prodotti WHERE $searchstring";
$result = mysql_query($query) or die(mysql_error()) ;
if (mysql_num_rows($result) == 0){
echo "Nessun risultato. Prova ad inserire un termine diverso.";
}
else{
while ($row = mysql_fetch_array($result)){
$des = substr($row['descrizione'], 0, 50);
if($row['immagine'] != ''){
echo "<img src=\"img/{$row['immagine']}.jpg\" width=\"80\" height=\"80\" class=\"img\" alt=\"{$row['extra']}\" />
<p class=\"nome\"><a href=\"viewprod.php?categoria={$row['categoria']}/{$row['nome']}\">{$row['nome']}</a></p>
<div class=\"paragrafo\">$des ...
<p class=\"torna\"><a href=\"#inizio\">
<img src=\"freccia.gif\" alt=\"torna all'inizio\" class=\"torna_img\" /></a></p>\n
</div>\n";}
else{
echo "<p class=\"nome\"><a href=\"viewcat.php?categoria={$row['categoria']}/{$row['nome']}\">{$row['nome']}</a>
<div class=\"sep\">$des ...
<p class=\"torna\"><a href=\"#inizio\">
<img src=\"freccia.gif\" alt=\"torna all'inizio\" class=\"torna_img\" /></a></p>\n
</div>\n";
}
}
}
mysql_free_result($result);}
}
il form per la ricerca è così:
codice:
<form class="cerca" action="search.php" method="post">
<p class="ricerca">
<label>scrivi la parola da cercare
<input name="swords" type="text" size="12" /></label>
<input name="search" type="submit" value="Cerca" />
</p>
</form>
il problema è che non funziona come dovrebbe perchè se metto degli spazi bianchi nel form è come se li considerasse caratteri jolly e mi trova tutto ...
se per esempio metto uno spazio vuoto e jj (_jj) (non c'è niente che corrisponda ovviamente nel database) mi trova tutto ... :master:
oltretutto con firefox funziona (anche se con i problemi di cui sopra) mentre su Internet Explorer non va e mi ridà sempre la ricerca nulla come se non avessi passato nulla con $_POST
(se non passo nulla mi da risposta di errore correttamente)
dove sbaglio ....?