io ti ho scritto lo script pronto per l'uso, aggiungi solo group by id in fondo alla query e vedrai che va ...Originariamente inviato da Manuelandro
purtroppo non sapevo farlo, e ho dovuto seguire la guida su freephp.html.it
io ti ho scritto lo script pronto per l'uso, aggiungi solo group by id in fondo alla query e vedrai che va ...Originariamente inviato da Manuelandro
purtroppo non sapevo farlo, e ho dovuto seguire la guida su freephp.html.it
mancavano le parentesi all'ifOriginariamente inviato da Manuelandro
:master:
Cmq la non restituirà alcun risultato semplicemente perchè setti la variabile che rappresenta la query senza eseguirla (almeno supponmgo dato che subito dopo chiudi la connessione al db)
Cmq segui il consiglio di andr3a![]()
questo?Originariamente inviato da andr3a
$cerca = explode( " ", trim( $_POST["chettecerco"] ) );
$sufQ = "";
for( $a = 0, $b = count( $cerca ); $a < $b; $a++ ) {
$sufQ .= " testo LIKE='%{$cerca[$a]}%' OR";
}
$query = "SELECT * FROM tabella WHERE".substr( $sufQ, 0, -3 );
poi non posto piu' in questo 3D ...
codice:// esempio // $_POST["chettecerco"] = "awdoija j oiaw ojdawij d, awdaw, aw ,d aw d owao ,,o aw, odwad"; $cerca = explode( ',', trim( $_POST["chettecerco"] ) ); $tableName = "Nick"; $sufQ = ""; for( $a = 0, $b = count( $cerca ); $a < $b; $a++ ) { $cerca[$a] = trim( $cerca[$a] ); if( $cerca[$a] != '' ) { $sufQ .= ' '.$tableName.' LIKE="%'.mysql_escape_string( $cerca[$a] ).'%" OR'; } } $sufQ = strlen($sufQ) > 3 ? substr( $sufQ, 0, -3 ) : ''; $query = "SELECT * FROM tabella WHERE".substr( $sufQ, 0, -3 )." GROUP BY ID"; // se ID e' il nome del campo auto_increment della tabella
![]()
![]()
![]()
![]()
perchè esce ancora parser error? e sulla stessa riga di chiusura della connessione?
![]()
![]()
![]()
![]()
![]()
probabilmente c'è ancora qualche parentesi non chiusa.
se il parser ti dà errore sul tag di chiusura di php, in genere nun ce stanno santi.. l'errore è quello.
Raga ma voi i risultati di una ricerca come li stampate?
Io uso mysql_fetch_row...voi?
Riuppo questo thread per porvi un altro problema.
Nel motore di ricerca ho messo una clausola..che la parola ricercata non sia minore di 3 caratteri.
Nel foreach mi vengono controllate tutte le parole...se la parola è una sola ed ha meno di 3 caratteri mi restituisce una stringa che dice "la parola ha meno di 3 caratteri..torna indietro".
Il problema si pone quando nel motore di ricerca vengono inserite più di una parola, tra le quali una con meno di 3 caratteri.
Quando nel ciclo passa dalle parole con più di 3 caratteri, la ricerca prosegue e mi restituisce i risultati, ma quando passa dalla parola con meno di 3 caratteri mi restituisce pure quella stringa!
Es. $paroledaricercare = news di domenica
Il risultato sarà per esempio:
1) News fresca - 14/06/2004
2) errore: la parola ha meno di 3 caratteri..torna indietro
3) Domenica si aprono le danze - 13/06/2004
Il codice che ho scritto è questo:
Codice PHP:$parole=$_POST[search];
$ricerca = explode(" ",$parole);
foreach($ricerca AS $parola) {
$query_search = mysql_query("SELECT * FROM News WHERE titolo LIKE '%$parola%' OR testo LIKE '%$parola%' GROUP BY ID", $connection);
$tot=mysql_num_rows($query_search);
if($tot==0) {
echo "<tr height=20><td align=middle valign=middle class=link_news>La ricerca non ha trovato nulla - torna indietro</td></tr>";
} else if(strlen($parola)<3) { echo "<tr height=20><td align=middle valign=middle class=link_news>Hai scelto una parola con meno di 3 caratteri - torna indietro</td></tr>";
} else {
while(list($id, $weekday, $data, $ora, $titolo, $autore) = mysql_fetch_row($query_search)) {
$data2 = "$data";
$split_data = explode("-",$data2);
$ora2 = "$ora";
$split_ora = explode(":",$ora2);
echo "
<tr height=20>
<td align=left valign=middle class=link_news>
<table width=98% border=0 cellspacing=4 cellpadding=0>
<tr>
<td width=5 class=link_news align=left>»</td>
<td class=testo_news align=left>[url="news.php?id_search=$id><span"]$titolo</span>[/url] - by <span class=link_news>$autore</span> - $split_data[2]/$split_data[1]/$split_data[0], $split_ora[0]:$split_ora[1]</td>
</tr>
</table>
</td>
</tr>"; } // chiudo il while
} // chiudo else $tot
} // chiudo il foreach