Ne sto uscento pazzo! Sto cercando di fare una query con concat() ... LIKE per estrarre i nomi/cognomi su 2 tabelle. La struttura è più o meno questa:
Tabella UTENTI
id_utenteU (AI) |
nomeU |
cognomeU |
1 |
Mario |
Di Francesco |
2 |
Franco |
Verdi |
3 |
Roberto |
De Rossi |
Tabella PERSONE
id_persona (AI) |
nomeP |
cognomeP |
id_utenteP (relazione) |
1 |
Andrea |
Verdi |
1 |
2 |
Francesco |
Bianchi |
2 |
3 |
Giorgio |
Brambilla |
3 |
Ora, ho un campo input di testo libero dove poter inserire il dato ricercato "Rossi" o eventualmente un nome e cognome "Roberto De Rossi". Quindi se metto "francesco" mi deve restituire il valore 2 e successivamente in dati associati all'array associativo.
Da questo input dovrei recuperare due valori in sequenza:
1) il numero totale delle righe contententi il valore inserito (mi serve per la numerazione delle pagine);
2) estrarre i dati veri e propri dalle righe trovate
Le ho provate tutte ma non ne vengo a capo.
Questo l'ultimo codice che ho provato, ovviamente non funzionante:
Codice PHP:
$ricerca ="verdi";
// estrarre il numeri di righe totali
$conta_righe = "SELECT id_utenteU, id_personaP FROM utenti, persone WHERE CONCAT(nomeU, ' ', cognomeU) LIKE '%$ricerca%' OR CONCAT(nomeP, ' ', cognomeP) LIKE '%$ricerca%' " ; // prepara il recupero del numero di testi scritti dal nome cercato negli utenti e nelle persone
$query_conta = mysqli_query($conn, $conta_righe); // restituisce FALSE!
$totale_righe = mysqli_num_rows($query_conta); // ovviamente con FALSE non produce nulla
//estrarre i valori dei vari campi
$query_select = "SELECT nomeU, cognomeU, nomeP, cognomeP FROM utenti, persone WHERE (CONCAT(nomeU, ' ', cognomeU) LIKE '%$ricerca%' OR CONCAT(nomeP, ' ', cognomeP) LIKE '%$ricerca%') AND id_utenteP = id_utenteU ORDER BY id_utenteU";
$query = mysqli_query($conn, $query_select);
while( $estrai = mysqli_fetch_array($query)){
extract($estrai);
echo $nomeU . ' ' . $cognomeU . '<br />';
echo $nomeP . ' ' . $cognomeP . '<br />';
}
In uno dei tanti passaggi che ho provato mi restituiva qualcosa, ma la query ci metteva un'infinità di tempo per essere eseguita (anche se le tabelle avevano solo 8 righe ciascuna) e alla fine mi restituiva il PRODOTTO delle righe e non le righe singole.
Abbiate pietà e datemi una dritta.
Grazie