Motore di ricerca interno

  • Creatore Discussione Creatore Discussione Oswold
  • Data di inizio Data di inizio

Oswold

Utente Attivo
7 Ago 2013
81
0
6
Catania
PHP:
<?php
$connessione=mysqli_connect("", "", "","")          
or die ("Non riesco a connettermi");
?>

<html>
<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input name="cerca" type="text">
<input name="submit" type="submit">
</form>

<?php

if(isset($_POST['submit'])){

$nome=$_POST['cerca'];

$campo=mysqli_query($connessione,"SELECT * FROM nomi WHERE nome='".$nome."'") or die(); 
if(mysqli_num_rows($campo)==1) {  
$row=mysqli_fetch_array($campo); 
$nome1=$row['nome'];

echo '<a href="'.$_POST['cerca'].'.php">Clicca qui per procedere alla pagina desiderata</a>';

}

else

{
echo "Nessuna pagina è stata trovata";
}

}

?>

</html>
</body>

Fino a qui nessun problema.
Inserisco il nome della pagina da cercare e la trova, quindi il primo passo è fatto!
Adesso vorrei inserire un secondo sottoscript all'interno della else, mi spiego meglio.
Vorrei fare in modo che se una persona ricerchi la pagina "Motori e gattini" ma scriva solamente "Motori" non mi dia l'echo "Nessuna pagina è stata trovata" ma prima effettui una seconda ricerca e mi trovi tutti i dati che contengono la parola ricercata all'interno del dabatase.

Stavo pensando di farlo scaricando tutti i dati contenuti nella tabella e fare un controllo ma non mi è riuscito, qualche idea o consiglio?
 
ciao
puoi provare con una querystringa del genere
PHP:
<?php
//.....
$nome="Motori";
$q="SELECT nome FROM nomi WHERE LOCATE('$nome', nome)>0";
//.....
?>
però stai attento, se esiste una pagina chiamata "Motori e gattini" , una "Barche e Motori" e una chiamata "Motori e cani" te le trova tutte e tre
quindi dovrai modificare la visualizzazione dei risultati
PHP:
<?php
//......
$nome=strtolower($_POST['cerca']);//LOCATE e case-sensitive
$q="SELECT nome FROM nomi WHERE LOCATE('$nome', LOWER(nome))>0";
$result=mysql_query($q);
if(mysql_num_rows($result)>0){
	while($riga=mysql_fetch_array($result)){
		echo "<a href=\"".$riga['nome'].".php\">Clicca qui per procedere alla pagina ".$riga['nome']."</a><br />"; 
	}
}else{echo "pagina non trovata";}
//....
?>
prova a vedere se funzia
ho usato le vechie mysql al posto delle mysqli perche mi viene più comodo, tu modificale
 
Non ero a conoscenza del comando LOWER, sarebbe "ricerco ovunque sia presente quella parola" detto in gergo?

Comunque ho eliminato una stringa di codice anche perché non lo faceva funzionare e no ne capivo il senso, adesso funziona perfettamente, lo lascio nel caso serva a qualcuno!

PHP:
$connessione=mysqli_connect("", "", "","")          
or die ("Non riesco a connettermi");

if(isset($_POST['submit'])){

$nome=strtolower($_POST['cerca']);
$q=mysqli_query($connessione,"SELECT * FROM nomi WHERE LOCATE('$nome', LOWER(nome))>0") or die();
if(mysqli_num_rows($q)>0){ 
    while($riga=mysqli_fetch_array($q)){ 
        echo "<a href=\"".$riga['nome'].".php\">Clicca qui per procedere alla pagina ".$riga['nome']."</a><br />";  
    } 
}else{echo "Pagina non trovata";} 

}

Grazie ancora!
 

Discussioni simili