-
Query ricerca
Ciao a tutti, ho un database che contiene i seguenti campi: nome e cognome
Devo fare una query di ricerca per trovare gli utenti iscritti, ma sorge un problema molti cognomi specialmente nella tradizione italiana hanno "de o di" esempio.
Mario de luca
Francesco di giovanni
Il codice che ho scritto per ora è questo, sapete dirmi come potrei migliorarlo.
Codice PHP:
$suddivisa = explode(" ",strtolower($search));
$cout = count($suddivisa);
$campo = "";
for($i=0;$i<$cout;$i++){
$campo .= "(first_name LIKE '$suddivisa[$i]%' OR last_name LIKE '$suddivisa[$i]%')";
if($i<($cout-1)) $campo .= " AND ";
}
$query = "SELECT * FROM user WHERE $campo";
Ringrazio anticipatamente ;)
-
Ma la query funziona? immagino di si.
Io personalmente sostituirei
LIKE '$suddivisa[$i]%' (che trova i records che INIZIANO con un certo valore)
con
LIKE '%$suddivisa[$i]%' (che trova i records che CONTENGONO un certo valore)
Sempre personalmente eviterei di splittare il valore di ricerca $search, secondo me ti fa restituire troppi records, specie se il database ne contiene molti... e farei un semplice
$query = "SELECT * FROM user WHERE first_name LIKE '%".$search."%' OR last_name LIKE '%".$search."%'"
Ma questo dipende da come vuoi gestire la logica della ricerca, la mia è solo una preferenza personale :-)
Ciao!
-
In realta mi servirebbe sviluppare una query più complessa.
Se qualcuno sa darmi una mano o qualche consiglio.