In una buona applicazione per la gestione di un blog non può mancare un motore di ricerca interno per trovare velocemente i post sulla base di parole chiavi da confrontare con il contenuto della tabella dedicata ai post; il meccanismo che permetterà il funzionamento del semplicissimo motore di ricerca proposto in questa trattazione si basa su un una query SELECT che presenta qualche differenza rispetto a quelle analizzate in precedenza.
Si immagini per esempio di voler ricercare il termine "data" all'interno del contenuto dei post:
- la chiave verrà passata all'applicazione per la ricerca sotto forma di parametro di input inviato tramite form;
- l'applicazione effettuerà un controllo sulla validità del parametro di input e lo utilizzerà come valore da associare ad una variabile ($key
- a questo punto verrà effettuata una query
SELECT
SELECT * FROM post
- la query verrà effettuata confrontando la parola ricercata con il contenuto dei record relativi ai titoli e al testo dei post (
WHERE (titolo_post LIKE '%" . $key . "%') OR (testo_post LIKE '%" . $key . "%'
- sarà possibile ottenere un risultato valido non soltanto se la chiave sarà rilevata all'interno dei titoli e dei testi ma anche se verrà trovata in uno solo di questi termini di confronto, ciò è possibile grazie all'utilizzo dell'operatore OR al posto di AND, il primo infatti, a differenza del secondo, restituisce TRUE anche se soltanto uno degli argomenti di un confronto risulta vero;
- i risultati della query verranno ordinati in senso decrescente sulla base dei valori contenuti nel campo data_post
ORDER BY data_post
Di seguito viene proposto il codice necessario per il motore di ricerca:
LIKE è un operatore di confronto che permette di effettuare una comparazione tra campi simili anche se non uguali;
I due simboli percentuali (%
WHERE "titolo_post =' . $key . ' OR testo_post =' . $key . '
Si noti come la chiave di ricerca, prima di partecipare alla query, sia stata validata tramite un'espressione regolare (preg_match("/^[a-z0-9]+$/i", $_POST['key']")