Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    245

    Ricerca con più parametri

    Ciao a tutti,
    ho un db di utenti iscritti ad un sito, e sto progettando un sistema che permetta al mio cliente di visualizzare questi utenti,cancellarli e fare altre operazioni. Nel form di ricerca di un utente eseguo una query al db (posto il codice):

    SELECT * FROM utenti
    WHERE cognome LIKE '%" . $Parolachiave . "%'
    OR nome LIKE '%" . $Parolachiave . "%'"

    In questo caso la keyword può essere solo il nome o il cognome dell'utente; vorrei però fare in modo che funzioni anche quando si inserisce come chiave di ricerca "nome cognome". E' la prima volta che lo faccio e non riesco a trovare la soluzione.

    Grazie in anticipo
    Laura

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    1,141
    prova così:
    codice:
    SELECT * FROM utenti
    WHERE cognome LIKE '%" . $Parolachiave . "%'
    OR nome LIKE '%" . $Parolachiave . "%' 
    OR concat(nome,' ',cognome) LIKE '%$Parolachiave%'";
    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    245
    Purtroppo mi da sempre un errore di sintassi: ho provato anche a scriverlo così

    OR concat(nome,' ',cognome) LIKE '% ."$Parolachiave ."%'

    ma niente. C'e' un altro modo in cui posso farlo?

    Grazie
    Laura

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    1,141
    scusa, ma che errore ti da?
    hai provato ad eseguirla direttamente?

    ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    245
    Ok, ho messo a posto il codice e l'errore di sintassi non c'e' più (scusami, ho sbagliato io). Ora è corretto e non mi da più errori, però cercando per nome e cognome un utente nn mi da nessun risultato...eppure l'utente è inserito nel db.

    Qualche idea?

    Ciao
    laura

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    1,141
    sinc non ho nessun'altra idea,l'unica cosa che ti consiglio è di provare direttamente la query da phpmyadmin( o qualsiasi altro tool che utilizzi), dando un valore di un record esistente nel DB alla tua variabile $Parolachiave...

    Se anche quello non funziona, vuol dire che non era la strda corretta probabilmente

    ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    245
    Ok, grazie. Ho provato in PHPMyAdmin: la query viene eseguita ma non mi restituisce nessun record (ho bevuto a Capodanno ma giuro che il record esiste!!).

    Proverò in qualche altro modo.

    Grazie 1000 comunque.

    Ciao
    Laura

  8. #8
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    potresti provare a far questo prima della query

    list($dato_1, $dato_2) = explode(" ",$parolachiave);
    $dato_1= trim($dato_1);
    $dato_2= trim($dato_2);

    SELECT * FROM utenti WHERE nome LIKE '%" .$dato_1."%' AND cognome LIKE '%" .$dato_2."%' OR cognome LIKE '%" .$dato_1."%' AND nome LIKE '%" .$dato_2."%'

    se non ci sono risultati:


    SELECT * FROM utenti WHERE nome LIKE '%" .$dato_1."%' OR nome LIKE '%" .$dato_2."%' OR cognome LIKE '%" .$dato_1."%' OR cognome LIKE '%" .$dato_2."%'

    e vedi se ci sono risultati.

    Un'po' lungo ma potrebbe andare.

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    245
    Ok, risolto il mistero...
    Grazie 1000 ad entrambe e BUON ANNO!

    Ciao
    Laura

  10. #10
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Originariamente inviato da Imnotdead
    Grazie 1000 ad entrambe
    :maLOL:

    [.:: JaguarXF ::.]
    __________________

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.