Originariamente inviato da Gina
salve, ho adattato un pò di codice che ricerca gli utenti registrati al sito,
però c'è un piccolo problema: lo script funziona benissimo, ma se come chiave
di ricerca uso per esempio Verdi Giuseppe, come risultato mi da tutti i Verdi, tutti i giuseppe
come volevo, ma io vorrei che i primi risultati fossere UGUALI alla chiave di ricerca,
poi dopo tutti gli altri. E' possibile o devo rifare tt da capo?
ecco il codice che esegue la ricerca:
Codice PHP:
$praticante=$_POST['praticante'];
$sql = "SELECT nome, cognome, username, email, data_reg FROM login WHERE MATCH
(nome, cognome, username) AGAINST ('*$praticante*' IN BOOLEAN MODE) ORDER BY
cognome DESC";
$risultato = mysql_query($sql);
if (!$risultato) {
echo "Fallimento nell'esecuzione della query ($sql) dal DB: " . mysql_error();
exit;
}
if (mysql_num_rows($risultato) == 0) {
echo "nessun praticante";
exit;
}
while ($riga = mysql_fetch_array($risultato))
{
$username=$riga["username"];
$nome=$riga["nome"];
$cognome=$riga["cognome"];
$email=$riga["email"];
$data_reg=$riga["data_reg"];
echo "nome: $nome
";
echo "cognome: $cognome
";
echo "username: $username
";
echo "e--mail: $email
";
echo "registrato il: $data_reg
";
echo "**********************
";
}
E' ovvio, guarda bene la tua query: tu ordini i risultati in base al cognome.
Devi aggiungere il campo 'pertinenza' nel select, e ordinare i risultati in base a quello.
una roba del tipo:
Codice PHP:
$sql = "SELECT nome, cognome, username, email, data_reg, MATCH(nome, cognome, username) AGAINST ('*$praticante*' IN BOOLEAN MODE) AS pertinenza FROM login WHERE MATCH
(nome, cognome, username) AGAINST ('*$praticante*' IN BOOLEAN MODE) ORDER BY
pertinenza DESC, cognome DESC";
dovrebbe darti i risultati ordinati prima in base alla pertinenza, e poi in base al cognome (per i risultati con pertinenza uguale)