Salve a tutti,
in questo script di ricerca nel mio sito www.libriantichicavallero.com
quando si cerca in
https://www.libriantichicavallero.com/cerca.php
un testo per titolo ad es:"dante"
i risultati che appaiono sono privi della parte di testo cercato. Questo però vale solo per ricerche tramite telefonino (iphone) non per pc fisso, come mai ?
<?
ini_set('default_charset', 'utf-8');
?>
<?
include("config.inc.php");
include("stile.php");
$stringa = "<table border=\"1\"><tr><td valign=\"top\" style=\"color:red\">N</td><td valign=\"top\" style=\"color:red\">AUTORE</td><td valign=\"top\" style=\"color:red\">TITOLO</td><td valign=\"top\" align=\"center\" style=\"color:red\">ANNO</td></tr>";
$db = mysql_connect($db_host, $db_user, $db_password);
if ($db == FALSE)
die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
mysql_select_db($db_name, $db)
or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
mysql_set_charset("utf8");
$sql="SELECT * FROM articoli WHERE ";
$where="";
// serve per eliminare gli spazi prima e dopo la parola cercata
$str=strip_tags(trim($_POST['chiave']));
// fine
// serve per evidenziare la parola cercata
$search = explode(" ", trim($_POST['chiave']));
for ($i=0; $i<count($search); $i++)
$search[$i] = "/(".trim($search[$i]).")/i";
// fine
// esplode le parole cercate mettendole in un array
$words=explode(" ",$str);
// fine
while (list($key,$value) = each($words)) {
$words[$key] = "{$_POST['criterio']} LIKE '%". $words[$key] ."%'";
}
$where = implode(" AND ", $words);
$result = mysql_query($sql.$where, $db);
// conteggia i risultati
$num_righe=mysql_num_rows($result);
echo"Ricerca per: <i>{$_POST['criterio']}</i><br>";
echo"Chiave di ricerca: <i>$chiave</i><br>";
echo"Risultati: <i>$num_righe</i><br><br>";
// fine
$i = 0;
while ($row=mysql_fetch_array($result))
{
$i++;
$stringa .= "<tr><td valign=\"top\"><b>$row[N]</b></td><td valign=\"top\" align=\"left\">$row[AUTORE] </td>
<td valign=\"top\" align=\"left\"><a href=\"view.php?N=$row[N]\" title=\"Dettagli\">$row[TITOLO]</a></td>
<td valign=\"top\" align=\"right\"> $row[ANNO]</td>
</tr>";
// rimpiazza la parola cercata con la stessa parola ma evidenziata
foreach ($search as $k) {
if (strlen(ereg_replace("/\((.*)\)/","\\1", $k)) > 3) {
$stringa = preg_replace($k,"<b><span style='color:green'>\\1</span></b>",$stringa);
}
}
// fine
}
if ($i == 0)
{
$stringa = "<table><tr><td><i>Spiacente, non abbiamo trovato elementi corrispondenti!<br><br>Prova ad inserire un minor numero di termini.</i><br><br>Oppure <a href=form/indexpostadesiderata.php title=Desiderata>comunicaci la tua richiesta.</a></td></tr>";
}
$stringa .= "</table>";
echo $stringa;
mysql_close();
?>
<p align="center">
<?
echo "<a href=\"#\" onclick=\"history.go(-1)\">Indietro</a>";
?>
</p>