Salve ho un problema complesso da affrontare:
file "search.php":
<form name "cerca1" method="post" action="result.php">
<input TYPE="hidden" NAME="submitted" VALUE="base"><input TYPE="hidden" NAME="submitted" VALUE="base">
<table width="100%">
<tr>
<input TYPE="radio" NAME="criterio" VALUE="autore">
AUTORE
</tr>
<tr>
<input TYPE="radio" CHECKED NAME="criterio" VALUE="titolo">
TITOLO
</tr>
<tr>
<input TYPE="radio" NAME="criterio" VALUE="editore">
EDITORE
</tr>
<tr>
<input TYPE="radio" NAME="criterio" VALUE="anno">
ANNO
</tr>
<tr>
<input TYPE="TEXT" onfocus="this.value='';" SIZE="42" NAME="chiave" value="inserisci una o due parole chiave"><input TYPE="submit" ACTION="result.php" VALUE="cerca" METHOD="get" NAME="search">
</tr>
</table>
</form>
e file "result.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><td valign=\"top\" align=\"center\" style=\"color:red\"></td><td valign=\"top\" align=\"center\" style=\"color:red\"></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");
$sql="SELECT * FROM articoli WHERE ";
$where="";
// elimina gli spazi prima e dopo la parola cercata
$str=strip_tags(trim($_POST['chiave']));
// fine
// evidenzia 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: {$_POST['criterio']}
";
echo"Chiave di ricerca: $chiave
";
echo"Risultati: $num_righe
";
// fine
$i = 0;
while ($row=mysql_fetch_array($result))
{
$i++;
$stringa .= "<tr><td valign=\"top\">$row[N]</td><td valign=\"top\">$row[AUTORE]</td><td valign=\"top\">$row[TITOLO]</td><td valign=\"top\"align=\"center\">$row[ANNO]</td><td valign=\"top\"align=\"center\"><a href=\"view.php?N=$row[N]\" title=\"Dettagli\" class=\"link_libro\"><img border=0 width=45 height=25 src=\"icona dettagli.gif\"></a></td><td valign=\"top\"align=\"center\"><a href=\"indexposta.php?N=$row[N]\" title=\"Acquista\"><img border=0 width=35 height=25 src=\"icona order.gif\"></a></td>";
// 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,"<span style='color:yellow'>\\1</span>",$stringa);}}
// fine
vorrei che quando un utente cerca un parola chiave selezionando come criterio di scelta il campo "titolo", il motore cercasse anche in un ulteriore campo denominato "descrizione".-
E' possibile ??
Ringrazio
Pier Mario