ci sto provando ma niente...
questo e il codice
il problema secondo me e qui...Codice PHP:
<?php
$parola = mysql_real_escape_string(trim($_GET['key']));
if(!empty($parola)){
if($mysql = mysql_connect('localhost', 'zappi', '')){
if(!mysql_select_db('my_zappi', $mysql)){
die('Errore: ' .mysql_error());
}}else{
die('Errore: ' .mysql_error());
}
$array = array();
$str = 'SELECT * FROM tabella WHERE ';
$tok = strtok($parola, ' ');
while($tok !== false){
array_push($array, $tok);
$str .= 'testo LIKE \'%' .$tok. '%\'';
$tok = strtok(' ');
if($tok !== false){
$str .= ' || ';
}}
if(!($query = mysql_query($str))){
die('Errore nella query: ' .mysql_error());
}
$numero_risultati = mysql_num_rows($query);
echo '<div class="titolo_cerca">Risultati ricerca: ' .htmlentities($parola, ENT_QUOTES). '</div><br>' ."\n";
echo '<div class="titolo_post">Tabella ' .$numero_risultati. '</div>' ."\n";
echo '<table width="600" border="0" align="center">' ."\n";
while($cerca = mysql_fetch_array($query)){
foreach($array as $word){
$find = array(
'/\[b\](.*)\[\/b\]/',
'/\[i\](.*)\[\/i\]/',
'/\[u\](.*)\[\/u\]/',
'/\[s\](.*)\[\/s\]/',
'/\[h1\](.*)\[\/h1\]/',
'/(\[url=)(.+)(\])(.+)(\[\/url\])/',
'/\[img\](.*?)\[\/img\]/',
'/(\[font=)(.+)(\])(.*?)(\[\/font\])/',
'/(\[color=)(.+)(\])(.*?)(\[\/color\])/',
'#\[code\](.*?)\[\/code\]#e',
'/\[youtube\](.*)\[\/youtube\]/'
);
$cerca["testo"] = preg_replace($find, '', $cerca['testo']);
$cerca["testo"] = str_replace($word, '<span style="background-color: #' .dechex(rand(0, 16777215)). ';">' .$word. '</span>', strip_tags($cerca['testo']));
}
echo '<tr>' ."\n". '<td class="titolo_post">' ."\n". $cerca['titolo'] ."\n". '</td>' ."\n". '</tr>';
echo '<tr>' ."\n". '<td>' ."\n". $cerca['data'] ."\n". '</td>' ."\n". '</tr>';
echo '<tr>' ."\n". '<td class="testo">' ."\n". $cerca['testo'] ."\n". '</td>' ."\n". '</tr>' ."\n";
}
echo '</table>';
}?>
con andreaCodice PHP:
while($tok !== false){
array_push($array, $tok);
$str .= 'testo LIKE \'%' .$tok. '%\'';
$tok = strtok(' ');
if($tok !== false){
$str .= ' || ';
}}
abbiamo trovato questa soluzione
ma non riesco a sistemare come dico io il codiceCodice PHP:
while($tok !== false){
if(strlen($tok) == 1)
array_push($array, ' '.$tok.' ');
else
array_push($array, $tok);
$tok = strtok(" ");
}
biccheddu sai darmi una mano^^
basta che usi str_replace
Codice PHP:
<?php
$dove = "questa variabile contiene i risultati di una query";
$key = $_GET['key'];
$key2 = "<p style=\"color: red\">".$_GET['key']."</p>";
echo str_replace($key,$key2,$dove);
?>
si ma poi non funziona per le altre parole
se scrivi
questa+variabile
funziona
ma se scrivi questa+una
no
@andreafallico
trova tu la soluzione...xDxD
prova a vedere se così funziona modificando il nome della tabella e del campo nella query
Codice PHP:
<?php
$parola = mysql_real_escape_string(trim($_GET['key']));
$parola2 = "<p style=\"color: red\">".$parola."</p>";
if(!empty($parola)){
if($mysql = mysql_connect('localhost', 'zappi', '')){
if(!mysql_select_db('my_zappi', $mysql)){
die('Errore: ' .mysql_error());
}}else{
die('Errore: ' .mysql_error());
}
$sql = "SELECT * FROM tabella WHERE testo LIKE '%$parola%'";
$q = mysql_query($sql) or die("errore nella query: ".mysql_error());
while($r = mysql_fetch_array($q))
echo str_replace($parola,$parola2,htmlentities($r['testo']))."<br>";
?>
@andrea
hai trovato la soluzione o no....
il problema secondo me e dove ti ho detto io...^^
Come ti ho detto prima è difficile trovare la soluzione.
Ma perchè non utilizzi jquery, li evidenzia tutti allo stesso colore però è più semplice.
per il fatto che è js...
e non tutti hanno i programmi per leggerli...
e poi in php era molto meglio credo...
Come ti ho scritto, str_replace() può usare gli array per cambiare tutto! Se tratti tutto come un array risolvi in poche righe di codice usando explode() ed implode().
poi fammi un esempio....
ma colorerà cogli parola di un colore diverso come dici tu...
L'ho postato prima!
Vi posto il codice...
vedete se ci riuscite voi....Codice PHP:
<?php
$parola = mysql_real_escape_string(trim($_GET['key']));
if(!empty($parola)){
if($mysql = mysql_connect('localhost', 'zappi', '')){
if(!mysql_select_db('my_zappi', $mysql)){
die('Errore: ' .mysql_error());
}}else{
die('Errore: ' .mysql_error());
}
$array = array();
$str = 'SELECT * FROM tabella WHERE ';
$tok = strtok($parola, ' ');
while($tok !== false){
array_push($array, $tok);
$str .= 'testo LIKE \'%' .$tok. '%\'';
$tok = strtok(' ');
if($tok !== false){
$str .= ' || ';
}}
if(!($query = mysql_query($str))){
die('Errore nella query: ' .mysql_error());
}
$numero_risultati = mysql_num_rows($query);
echo '<div class="titolo_cerca">Risultati ricerca: ' .htmlentities($parola, ENT_QUOTES). '</div><br>' ."\n";
echo '<div class="titolo_post">Tabella ' .$numero_risultati. '</div>' ."\n";
echo '<table width="600" border="0" align="center">' ."\n";
while($cerca = mysql_fetch_array($query)){
foreach($array as $word){
$find = array(
'/\[b\](.*)\[\/b\]/',
'/\[i\](.*)\[\/i\]/',
'/\[u\](.*)\[\/u\]/',
'/\[s\](.*)\[\/s\]/',
'/\[h1\](.*)\[\/h1\]/',
'/(\[url=)(.+)(\])(.+)(\[\/url\])/',
'/\[img\](.*?)\[\/img\]/',
'/(\[font=)(.+)(\])(.*?)(\[\/font\])/',
'/(\[color=)(.+)(\])(.*?)(\[\/color\])/',
'#\[code\](.*?)\[\/code\]#e',
'/\[youtube\](.*)\[\/youtube\]/'
);
$cerca["testo"] = preg_replace($find, '', $cerca['testo']);
$cerca["testo"] = str_replace($word, '<span style="background-color: #' .dechex(rand(0, 16777215)). ';">' .$word. '</span>', strip_tags($cerca['testo']));
}
echo '<tr>' ."\n". '<td class="titolo_post">' ."\n". $cerca['titolo'] ."\n". '</td>' ."\n". '</tr>';
echo '<tr>' ."\n". '<td>' ."\n". $cerca['data'] ."\n". '</td>' ."\n". '</tr>';
echo '<tr>' ."\n". '<td class="testo">' ."\n". $cerca['testo'] ."\n". '</td>' ."\n". '</tr>' ."\n";
}
echo '</table>';
}?>
vi prego datemi una mano...^^