- Home
- Categorie
- Coding e Sistemistica
- Coding
- Evidenziare risultati ricerca
-
Evidenziare risultati ricerca
Ciao a tutti,
ho implementato uno script (questo: w w w. phpro.org/articles/Highlight-Search-Words.html) per evidenziare i risultati di una ricerca.Il problema è che mi effettua la ricerca solo sulla prima riga del database.
questo è il codice:
[php]
<?php
$query_rs_scheda = sprintf("SELECT *, MATCH(scheda_field) AGAINST('$colname_rs_scheda' IN BOOLEAN MODE) ASscoreFROM schede WHERE MATCH(scheda_field)
AGAINST ('$colname_rs_scheda' IN BOOLEAN MODE) ORDER BYscoreDESC", GetSQLValueString($colname_rs_scheda, "text"));
$rs_scheda = mysql_query($query_rs_scheda, $conn) or die(mysql_error());
$row_rs_scheda = mysql_fetch_assoc($rs_scheda);
$totalRows_rs_scheda = mysql_num_rows($rs_scheda);function highlightWords($risultati, $words)
{
foreach ( $words as $word )
{
$risultati = str_ireplace($word, '<span class="highlight_word">'.$word.'</span>', $risultati);
}
return $risultati;
}
$risultati = $row_rs_scheda['scheda_field'];$words = $_POST['ricerca']; *// il problema forse è qui $risultati = highlightWords($risultati, $words);?>
stampo i risultati
<?php echo $risultati?>
[/php]
cosa sbaglio?
grazie mille.
-
Ho dato uno sguardo rapido, prova a cambiare:
[php] $risultati = str_ireplace($word, '<span class="highlight_word">'.$word.'</span>', $risultati);[/php]
con
[php] $risultati .= str_ireplace($word, '<span class="highlight_word">'.$word.'</span>', $risultati);[/php]
-
Ciao codencode,
grazie per la risposta.Ho provato a modificare il codice come mi hai detto ma ottengo sempre lo stesso risultato duplicato per più volte.
In realtà la soluzione l'ho trovata però vorrei avere un aiuto per realizzarlo senza modificare di molto il codice.
-
Questa è la soluzione di cui parlavo, però ho un problema perché ho un campo 'foto' che dovrei stampare a video come immagine, un aiuto?
[php]
<?php
mysql_select_db($database_conn, $conn);
$query_rs_scheda = sprintf("SELECT *, MATCH(scheda_field) AGAINST('$colname_rs_scheda' IN BOOLEAN MODE) ASscoreFROM schede WHERE MATCH(scheda_field)
AGAINST ('$colname_rs_scheda' IN BOOLEAN MODE) ORDER BYscoreDESC", GetSQLValueString($colname_rs_scheda, "text"));
$rs_scheda = mysql_query($query_rs_scheda, $conn) or die(mysql_error());while ($query=mysql_fetch_row ($rs_scheda))
{
$risultati[] = $query[1];
$risultati[] = $query[2]; */campo foto
}
mysql_free_result ($rs_scheda);function highlightWords($risultati, $words)
{
foreach ( $words as $word )
{
$risultati = str_ireplace($word, '<span class="highlight_word">'.$word.'</span>', $risultati);
}
return $risultati;
}
$words = $_POST['ricerca'];$risultati = highlightWords($risultati, $words);?>
[/php]e poi stampo a video così
[php]
<?php echo "\n" ;
foreach ($risultati as $v)
{
echo '<ul class="lista-risultati">';echo $v. "</ul>";}
echo "\n" ;
?>
[/php]
-
Ho risolto modificando questa riga così
[php]
<?php
$risultati2[] = $query[2];
?>
[/php]e poi stampando i risultati a video così:
[php]
<?php
echo "\n" ;
foreach (array_combine($risultati,$risultati2) as $chiave => $valore)
{
$foto = '<img src="'.$valore.'" />';
echo $chiave;
echo $foto;
}
echo "\n" ;
?>
[/php]Anche se il mio intento era quello di risolvere con il metodo iniziale.