Salve a tutti avrei bisogno di aggiungere ad un sito internet un motore di ricerca che mostrasse tutti i risultati di una stringa immessa dall' utente, cercando fra i record del database del sito. Il sito si occupa principalmente di musica quindi per capirci l' utente scrive nel campo di ricerca "nomeArtista" o "nomeTitolo" e questa fa una ricerca della stringa in tutte le tabelle del dabase.
Ho cercato di cavarmela da solo scaricando questo script http://php.html.it/script/vedi/2187/search/ nella sezione apposita del sito ma non sono riuscito a far girare lo script apparentemente molto semplice.
Ho modificato così il file "after_search.php" che troviamo all' interno del pacchetto ma continua a darmi l' errore
E' necessario specificare la/le parola/parole da cercare
.
Codice PHP:
<?php session_start(); if (isset($_SESSION['logged'])&& $_SESSION['logged']==1)
{$nulla=0;} else { header ("Location:login.php"); die(); }
$_SESSION['STRINGA']=$_POST['stringa']; include("connessione.php");
if(!$stringa or $stringa=="") { echo "<font face=\"arial\" size=\"2\">E' necessario specificare la/le
parola/parole da cercare
<a href=\"javascript:history.back()\">indietro</a></font>"; exit(); }
if($ordine=="crescente") { $ord="ASC"; } elseif($ordine=="decrescente") { $ord="DESC"; }
$cn=mysql_connect($host,$uid,$pw); mysql_select_db($db,$cn);
$sql="SELECT musica.artista , musica.titolo , libri.autore , libri.titolo , prodotti_graffiti.marca ,
prodotti_graffiti.nome , prodotti_djing.marca , prodotti_djing.nome FROM musica , libri ,
prodotti_graffiti , prodotti_djing WHERE musica.artista , musica.titolo , libri.autore , libri.titolo ,
prodotti_graffiti.marca , prodotti_graffiti.nome , prodotti_djing.marca , prodotti_djing.nome LIKE
'%$stringa%'";
if($criterio=="esatta") { $sql.="testo LIKE '%$stringa%' ORDER BY id $ord"; }
elseif($criterio=="almeno") { $lista_parole=explode(" ",$stringa);
for($i=0;$i<count($lista_parole);$i++) { $str.="testo LIKE '%$lista_parole[$i]%' OR "; }
$str=substr($str,0,(strlen($str)-3)); $sql.=$str." ORDER BY id $ord"; } elseif($criterio=="tutte") {
$lista_parole=explode(" ",$stringa); for($i=0;$i<count($lista_parole);$i++) { $str.="testo LIKE
'%$lista_parole[$i]%' AND "; } $str=substr($str,0,(strlen($str)-4)); $sql.=$str." ORDER BY id $ord"; }
$query=mysql_db_query($db,$sql); $num=mysql_num_rows($query); ?>
<html> <head> <title>Esempio di motore di ricerca</title> </head> <body> <center> <font
face="arial" color="red">[b]Risultati della ricerca[/b]</font>
<? if($num<1) { echo "<font face=\"arial\" size=\"2\">Nessun risultato trovato
<a
href=\"javascript:history.back()\">indietro</a></font>"; }
elseif($num>=1) { echo "<table border=\"1\" cellpadding=\"3\" cellspacing=\"0\" bgcolor=\"silver\"
bordercolor=\"red\"><tr valign=\"top\"><td><font face=\"arial\" size=\"2\">[b]Data inserimento[b]
</td><td><font face=\"arial\" size=\"2\">[b]Testo[/b]</td></tr>";
while($riga=mysql_fetch_array($query)) { echo "<tr><td><font face=\"arial\" size=\"2\">$riga[data]
</td><td><font face=\"arial\" size=\"2\">".nl2br($riga[testo])."</td></tr>"; } echo "</table>
<font face=\"arial\" size=\"2\"><a href=\"javascript:history.back()\">indietro</a><font
face=\"arial\" size=\"2\">"; } echo "
<font face=\"arial\" size=\"2\">[b]Query SQL
generata:[/b]
$sql</font>"; mysql_close($cn); ?> </center> </body> </html>
Se qualcuno mi da una mano mi farebbe risparmiare molto tempo !