Visualizzazione dei risultati da 1 a 1 su 1
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    33

    [MySQL] Creare motore di ricerca su nomi in 4 campi di 2 tabelle

    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
    Ultima modifica di Oslino; 19-07-2014 a 00:26

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.