|
Impostare eregi_replace() per ogni parola cercata in una pagina di ricerca
|
|
04-05-2008, 21:33
Messaggio: #1
|
|||
|
|||
|
Impostare eregi_replace() per ogni parola cercata in una pagina di ricerca
Ciao a tutti,
dunque ho "creato" un motore di ricerca con i dati memorizzati nel database. Questo è il codice della pagina dei risultati di ricerca: Codice PHP: <?php E vorrei che le parole cercate appaiono in grassetto nei risultati con la funzione eregi_replace(), come faccio? Grazie, Ciao... |
|||
|
05-05-2008, 09:18
Messaggio: #2
|
|||
|
|||
|
RE: Impostare eregi_replace() per ogni parola cercata in una pagina di ricerca
In questo caso non è necessario utilizzare la funzione eregi_replace, ma puoi utilizzare la più veloce str_replace.
Puoi modificare questo pezzo di codice: Codice PHP: while($ris = mysql_fetch_assoc($seque)) {In questo modo: Codice PHP: while($ris = mysql_fetch_assoc($seque)){Mattia! |
|||
|
05-05-2008, 19:23
(Questo messaggio è stato modificato l'ultima volta il: 05-05-2008 22:43 da Damiano.)
Messaggio: #3
|
|||
|
|||
|
RE: Impostare eregi_replace() per ogni parola cercata in una pagina di ricerca
Questo che mi hai dato tu funziona solo sull'ultima parola cercata, ma io voglio su tutte, come faccio?
Grazie EDIT: Ho risolto chiedendo su altervista, ho assemblato il codice così: Codice PHP: <?php E funziona come previsto. Solo che ora non mi soddisfa una cosa: se cerco "XXXX Forum" e c'è un campo diretto nel database con "XXXX Forum" non me lo visualizza per primo, ma invece io voglio che visualizzi i risultati in ordine di parole scritte. Come faccio? Grazie, Ciao... |
|||
|
09-05-2008, 09:25
Messaggio: #4
|
|||
|
|||
|
RE: Impostare eregi_replace() per ogni parola cercata in una pagina di ricerca
Ti conviene utilizzare il mio metodo che è più veloce (sia per quanto riguarda il ciclo che la sostituzione del testo) aggiungendo:
Codice PHP: reset($search); Prima di: Codice PHP: foreach($search as $parole){ E utilizzando str_ireplace al posto di str_replace. Per la seconda domanda si fa tutto più complicato perché dovresti modificare il modo in cui generi la query. Adesso devo lavorare, ti scrivo la soluzione più tardi. Mattia! |
|||
|
12-05-2008, 22:25
Messaggio: #5
|
|||
|
|||
|
RE: Impostare eregi_replace() per ogni parola cercata in una pagina di ricerca
Niente, non funziona come mi hai detto tu, come se non faccio niente, i risultati vengono sempre visualizzati a caso.
Comunque per la funzione uso eregi_replace(). Come risolvo? Grazie, Ciao... |
|||
|
13-05-2008, 10:37
Messaggio: #6
|
|||
|
|||
|
RE: Impostare eregi_replace() per ogni parola cercata in una pagina di ricerca
Quella che ti ho scritto io era solo un'ottimizzazione del mio codice per farlo funzionare. Ti ricordo che la funzione che utilizzo io è molto più veloce di quella che vuoi utilizzare tu.
L'ordinamento non te lo avevo ancora suggerito perché non ho avuto tempo. Mattia! |
|||
|
13-05-2008, 18:53
Messaggio: #7
|
|||
|
|||
|
RE: Impostare eregi_replace() per ogni parola cercata in una pagina di ricerca
Ma se devo usare str_ireplace() al posto di eregi_replace() a me mi va anche bene. ;)
Comunque io voglio risolvere il fatto dell'ordinamento, come faccio? :) Grazie, Ciao... |
|||
|
16-05-2008, 11:48
Messaggio: #8
|
|||
|
|||
|
RE: Impostare eregi_replace() per ogni parola cercata in una pagina di ricerca
Potresti utilizzare l'IF nella query SQL e ordinare il tutto per il valore che trovi.
Ti scrivo l'esempio della query che potrai applicare al tuo script: Codice: SELECT url, titolo, descrizione, (IF(titolo='parola',1,2)) AS ordineMattia! |
|||
|
16-05-2008, 19:17
Messaggio: #9
|
|||
|
|||
|
RE: Impostare eregi_replace() per ogni parola cercata in una pagina di ricerca
Ehm... aspetta... quel "ordine" a che campo ti riferisci?
|
|||
|
17-05-2008, 10:37
Messaggio: #10
|
|||
|
|||
|
RE: Impostare eregi_replace() per ogni parola cercata in una pagina di ricerca
E' il nuovo campo che creo grazie all'IF. Se il campo 'titolo' è uguale alla parola cercata, il nuovo campo creato avrà come valore 1, altrimenti avrà valore 2. In questo modo chi ha il titolo uguale alla parola cercata apparirà per primo perché ordinato tramite ORDER BY.
Mattia! |
|||
|
17-05-2008, 17:16
Messaggio: #11
|
|||
|
|||
|
RE: Impostare eregi_replace() per ogni parola cercata in una pagina di ricerca
Ehm... non ho capito bene... cioè io devo creare un'altro campo nella tabella... e che ci devo mettere dentro?
Ciao |
|||
|
17-05-2008, 17:17
Messaggio: #12
|
|||
|
|||
|
RE: Impostare eregi_replace() per ogni parola cercata in una pagina di ricerca
Non devi creare un altro campo, l'IF crea un campo virtuale che non esiste.
Mattia! |
|||
|
17-05-2008, 17:40
Messaggio: #13
|
|||
|
|||
|
RE: Impostare eregi_replace() per ogni parola cercata in una pagina di ricerca
Ok ho capito, userò la query che mi hai dato, però oltre al campo titolo, come aggiungo gli altri due campi?
Grazie Ciao |
|||
|
17-05-2008, 17:43
Messaggio: #14
|
|||
|
|||
|
RE: Impostare eregi_replace() per ogni parola cercata in una pagina di ricerca
Puoi creare altri due IF però non credo che ti servano perché è molto difficile che uno ricerchi un indirizzo che conosce già (URL) o inserisci tutto quello che vuole leggere (descrizione).
Codice: SELECT url, titolo, descrizione, (IF(titolo='parola',1,2)) AS ordine1, (IF(url='parola',1,2)) AS ordine2, (IF(descrizione='parola',1,2)) AS ordine3Mattia! |
|||
|
« Precedente | Successivo »
|
Utente(i) che stanno guardando questa discussione: 1 Ospite(i)

Cerca
Lista utenti
Calendario
Aiuto



