Newsgroup: it.comp.www.php
Titolo: motore di ricerca per mysql

In un post precedente qualcuno cercava un motore di ricerca per MySql.
Rubacchiando qua e là e pasticciando un bel po' sono riuscito a far
funzionare questo che incollo qui sotto ma che ha due problemi che non
riesco a risolvere:
1) Resta case sensitive nonostante ci sia la stringa 'ereg...'
2) Non somma i risultati delle varie ricerche. Cioè rende:
     keys: primaparola
     tabella coi risultati della ricerca per primaparola
     keys: secondaparola
     tabella coi risultati della ricerca per secondaparola
     keys: terzaparola
     tabella coi risultati della ricerca per terzaparola
     etc.
Come si può correggere questi difetti?
Grazie a chi mi aiuta
---------------------------------------------------
<html><head>
<title>Motore di ricerca per MySQL</title></head>
<body bgcolor="#bbbbbb" text="#000000">
<form method="POST" action=' $_SERVER['PHP_SELF'] '>
Enter key words:
<input type="Text" size="15" maxlength="50" name="keywords">&nbsp;
<input type="Submit" name="cerca" value="Cerca"> </p>
</form>
<hr>
<?php
echo "Cercato:&nbsp;&nbsp;&nbsp; ".$keywords;
$searchstr = $keywords;
echo "<br>searchstr:&nbsp;&nbsp;&nbsp;".$searchstr;
if (ereg("^[a-zA-Z ]+$", $searchstr))
{
$db = mysql_connect("localhost");
if ($db)
{
echo "<br>Matches for:&nbsp;&nbsp;&nbsp; " .$searchstr."<br>";
$keys = explode(" ", $searchstr);
for ($x = 0; $x < count($keys); $x++)
{
echo "<h2><center>keys:&nbsp;&nbsp;&nbsp;$keys[$x]</center></h2>";
$result = mysql_db_query("nome_database", "SELECT * FROM  articoli WHERE
(testo LIKE '%$keys[$x]%')");
if ($frow = mysql_fetch_array($result))
{
$found = true;
$num = mysql_num_rows($result);
}
echo "<center><h2>Record trovati</h2><br>";
echo "<TABLE Border=1><TR>";
echo "<TD><b></b></TD>";
echo "<TD><b>Titolo</b></TD>";
echo "<TD><b>Autore</b></TD>";
echo "<TD><b>Sezione</b></TD></TR>";
for ($i=0; $i<$num; $i++)
{
$titolo = mysql_result($result, $i, "titolo");
$id = mysql_result($result, $i, "id");
$autore = mysql_result($result, $i, "autore");
$sezione = mysql_result($result, $i, "sezione");
$testo = mysql_result($result, $i, "testo");
$lf = $i + 1;
$testo_corr=str_replace("\\n", "<BR>", $testo);
echo "<TR><TD>$lf</TD><TD><a
href='scheda_articolo.php?id=$id'>$titolo</a></TD>";
echo "<TD>$autore</TD><TD>$sezione</TD></TR><TR><TD
colspan=4>$testo_corr</TD></TR><TR><TD colspan=4
bgcolor='white'><hr></TD></TR>";
}
echo "</TABLE></center>";
}
}
}
?>
</body>
</html>
---------------------------------------------------------------

 2) Non somma i risultati delle varie ricerche. Cioè rende:
Cioe'?
Vuoi sommare i risultati delle parole trovate su una certa pagina od
avere un archivio storico delle ricerche?
In quest'ultimo caso hai bisogno di usare un database.
Altrimenti, prima di tutti i cicli ci metti $totale=0 e poi $totale++
all'interno dei cicli.
ciao 
-- 
Marco Bernardini
bernama chiocciola libero it


Per il totale..
modifica queste righe:
[...]
$keys = explode(" ", $searchstr);
$totale=0;
for ($x = 0; $x < count($keys); $x++)
 {
  $totale++;
[...]
  }
echo "TOTALE:".$totale;
[...]
e ti dovrebbe stampare il totale alla fine della tabella
Ciaoe
TWiN


 ha scritto nel messaggio
news:clnL9.74$G4.1...@newsread2.prod.itd.earthlink.net...


 wrote in message
news:atl2c0$i4o$1...@grillo.cs.interbusiness.it...


 > > > 2) Non somma i risultati delle varie ricerche. Cioè rende:


 wrote:
[cut]
Potete per favore citare come si usa normalmente in usenet?
(
http://php.dopoil.com/faq.php?NGRules
 Quotare)

 (testo LIKE '%$keys[$x]%')");
// errore di sintassi ^^^
stampa la query per vedere se è quello che vuoi.
ciao
-- 
Punkarruso
mail:punkarruso chiocchiolona despammed punto com
pubblicità progresso:
http://www.gnu.org/philosophy/gif.html