Visualizzazione risultati 1 fino 7 di 7

Discussione: [Sql/Query] Motore di ricerca

  1. #1
    Guest

    Predefinito [Sql/Query] Motore di ricerca

    Ciao a tutti sto sistemando il mio motore di ricerca che interroga il db, ma sto avendo alcune difficoltà...
    Sql:
    Codice PHP:
    SELECT * FROM utente WHERE nome REGEXP '^$cerca' OR cognome REGEXP '^$cerca'
    Nome|Cognome
    Paolo|Pelè
    Pietro|Audi
    Andre|Partman

    Vi faccio un esempio se metto nel campo input:
    "p" mi dovrebbe stampare tutti e 3 i risultati
    "pa" mi dovrebbe stampare il primo e ultimo
    "pa p" mi dovrebbe stampare solo il primo
    "p a" mi dovrebbe stampare il secondo e l'ultimo
    "p an" solo ultimo

    Sapete darmi qualche consiglio...

  2. #2
    tiberistefano non è connesso Utente
    Data registrazione
    28-01-2011
    Messaggi
    125

    Predefinito

    prova cosi':

    Codice:
    SELECT * FROM utente WHERE nome like '%$cerca%' OR cognome like '%$cerca%'

  3. #3
    Guest

    Predefinito

    non funziona, come voglio io...

  4. #4
    tiberistefano non è connesso Utente
    Data registrazione
    28-01-2011
    Messaggi
    125

    Predefinito

    scusa, prova cosi':

    Codice:
    SELECT * FROM utente WHERE lower(nome) like '%$cerca%' OR lower(cognome) like '%$cerca%'
    ricordati di trasformare in minuscolo anche i dati di $cerca

    Codice PHP:
    $cerca = strtolower($cerca);
    probabilmente l'istruzione sql piu' giusta era la tua, ma penso che ci sono alcune maiuscole che non fanno effettuare la ricerca correttamente
    Ultima modifica di tiberistefano : 26-07-2011 alle ore 21.07.11

  5. #5
    Guest

    Predefinito

    Nemmeno...

  6. #6
    tiberistefano non è connesso Utente
    Data registrazione
    28-01-2011
    Messaggi
    125

    Predefinito

    Hmmm, probabilmente, la ricerca che fai viene fatta su 2 campi ma la variabile contiene molti piu' dati (ad esempio uno spazio per separare il nome dal cognome).
    Scusami ma sto andando un po' a caso anche io: prova in questo modo:
    Codice:
    SELECT * FROM utente WHERE CONCAT(lower(nome), ' ', lower(cognome)) REGEXP '^$cerca'
    (prova anche con la like, non si sa mai....)

  7. #7
    Guest

    Predefinito

    Neanche...
    Pensavo di fare una cosa del genere ma qualcosa non funziona...
    Codice PHP:
    $suddivisa = explode(" ",$cerca);
    $cout = count($suddivisa);
    $campo = "";

    for(
    $i=0;$i<$cout;$i++){
    for(
    $j=0;$j<$cout;$j++){
    $campo .= "(nome REGEXP '^$suddivisa[$i]' OR cognome REGEXP '^$suddivisa[$j]') OR (nome REGEXP '^$suddivisa[$j]' OR cognome REGEXP '^$suddivisa[$i]')";
    if(
    $i < ($cout-1)){
    $campo .= "OR ";
    }}}
    echo
    $campo;

    $query = mysql_query("SELECT * FROM utente WHERE $campo");

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •