Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di sandu
    Registrato dal
    Feb 2005
    Messaggi
    239

    problemi con un motore di ricerca

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

  2. #2

  3. #3
    Utente di HTML.it L'avatar di sandu
    Registrato dal
    Feb 2005
    Messaggi
    239
    avevo pensato anche io a trim ma anche se metto d_d mi fa lo stesso effetto ...

    cerdo ci sia qualche errore nello script

  4. #4
    ciao.
    ho preso spunto dal tuo script per fare alcune prove.
    ho un problema, se ricerco in questo modo:


    $searchwords="parola1+parola2";
    $words = explode(' ',$searchwords);

    non me lo divide più .. come posso ovviare tenendo conto che l'utente può cercare mettendo lo spazio o anche con la "+" ?

    grazie

  5. #5
    ah.. m'è venuta in mente una cosa.

    1) se l'utente cerca con lo spazio, la clausola di ricerca è "OR"
    2) se l'utente cerca con lo spazio, la clausola di ricerca è "AND"

    giusto? funzionano così i motori di ricerca vero?

    se si, mi faccio un controllo all'inzio se ci sono spazi o "+"..

  6. #6
    Utente di HTML.it L'avatar di sandu
    Registrato dal
    Feb 2005
    Messaggi
    239
    tornato dalle vacanze ... si vede che mi servivano ....

    bastava aggiungere la funziona trim alla stringa inserita ...

    come giustamente indicato da nicola75ss

    grazie ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.