Ciao, faccio riferimento a QUESTO thread di 2 giorni fa.
Sono riuscito a creare una ricerca funzionale su un database riuscendo a paginare i risultati.
Ora mi trovo ad affrontare 2 problemi.
1 - Vorrei che la ricerca fosse effettuata nel caso di più parole, per singola parola sui campi e non per forza segunedo l'ordine di inserimento.
2 - Essendoci una paginazione ho la necessità di fare un conteggio dei record dove ogni singola parola è presente nei campi ma questo conteggio non deve essere fatto per record uguali (altrimenti sarebbe sfalsato)
per il punto 1 ho risolto così:
data la stringa $ricerca la esplodo inserendola in un array
codice:
$ricerca_array = explode(" ", $ricerca);
Punto 2:
la query per vedere quanti record ci sono nella tabella sarebbe (senza EXPLODE e funzionante):
codice:
// esecuzione prima query
$count = mysql_query("SELECT COUNT(id) FROM news WHERE (titolo_news LIKE '%$ricerca%') or (descrizione_news LIKE '%$ricerca%')");
$res_count = mysql_fetch_row($count);
// numero totale di records
$tot_records = $res_count[0];
Con EXPLODE io ho scritto così:
codice:
// esecuzione prima query
for ($x = 0; $x < count($keys); $x++) {
$count = mysql_query("SELECT COUNT(id) FROM news WHERE (titolo_news LIKE '%$ricerca_array[X]%') or (descrizione_news LIKE '%$ricerca_array[X]%')");
$res_count = mysql_fetch_row($count);
$tot_records = $tot_records + $res_count[0];
}
echo (" $tot_records ");
Ovviamente il $tot_records è sballato in quanto se ad esempio un solo record ha il campo titolo news contenente 'IL CAVALLO ROSA' e la ricerca viene fatta sulla stringa $ricerca 'IL CAVALLO ROSA' il totale dei record $tot_records avrà valore 3 invece che 1.
E' possibile ovviare a questo in qualche modo?
Grazie, Ale.