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
Punto 2:codice:$ricerca_array = explode(" ", $ricerca);
la query per vedere quanti record ci sono nella tabella sarebbe (senza EXPLODE e funzionante):
Con EXPLODE io ho scritto così: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];
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.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 ");
E' possibile ovviare a questo in qualche modo?
Grazie, Ale.

Rispondi quotando

