• User Attivo

    Query con like in php almeno credo

    Salve ragazzi devo creare una query di ricerca , cioè l'utente inserisce una parola, e io devo vedere se questa parola è presente in tre campi del mio db e far spuntare i risultati, ma non so come impostare la query, qualcuno mi puo' aiutare?

    Come faccio a fare un ricerca nel caso in cui si inserisca un parola, non facendo distinzione di maiuscole e minuscole e nel caso in cui si inseriscano piu parole?

    E nel caso in cui un utente inserisca un parte di parola presente per esempio nel db ho la parola cassaforte, ma se l'utente inseisce cassa, come faccio a far visualizzare cassaforte, se è sempre possibile.
    Il mio problema consiste nel fatto che non so di preciso come impostare questa ricerca...

    Grazie spero mi possiate aiutare.


  • User Attivo

    Ciao,
    ti scrivo alcuni esempi di query:

    Se i tre campi sono sulla stessa tabella:
    [php]$query="SELECT * FROM nome_tabella WHERE nome_campo1 LIKE '%".$testo_da_cercare."%' OR nome_campo2 LIKE '%".$testo_da_cercare."%' OR nome_campo3 LIKE '%".$testo_da_cercare."%' ";[/php]

    Se i tre campi sono tabelle differenti puoi ripetere la stessa query per ciascuna tabella
    [php]$query="SELECT * FROM nome_tabella WHERE nome_campo1 LIKE '%".$testo_da_cercare."%' "[/php]
    Soluzione pratica e forse poco raffinata, ma più semplice dell'utilizzo di una UNION 🙂

    Se devi cercare più parole senza preoccuparti dell'ordine in cui sono, sustituisci ogni singola condizione

    nome_campo1 LIKE '%".$testo_da_cercare."%' 
    

    con:

    (nome_campo1 LIKE '%".$parola_da_cercare1."%' AND nome_campo1 LIKE '%".$parola_da_cercare2."%' AND nome_campo1 LIKE '%".$parola_da_cercare3."%' )
    

    Per quanto riguarda la ricerca Case sensitive/insensitive, dipende dalla COLLATION usata. Puoi trovare maggiori informazioni qui:

    dev .mysql.com/doc/refman/5.0/en/string-comparison-functions.html

    Alessandro


  • User Attivo

    Ciao e grazie dell'aiuto.


  • User Attivo

    A proposito, volevo chiedere un'altra cosa ma esiste qualcosa che fa cercare la parola, ma non faccia caso se sia minuscola o maiuscola, per esempio se metto la parola palla, e ne db ho PALLA, me la trova lo stessoo no??


  • User Attivo

    Come ti ho scritto prima:
    @Magicale said:

    Per quanto riguarda la ricerca Case sensitive/insensitive, dipende dalla COLLATION usata. Puoi trovare maggiori informazioni qui:

    dev .mysql.com/doc/refman/5.0/en/string-comparison-functions.html

    Alessandro


  • User Attivo

    Ok, grazie non me ne ero accorto, una sola cosa, scusa la mia ignoranza, ma cosa intendi per COLLATION??


  • User Attivo

    Le COLLATION definiscono il modo in cui vengono confrontati i set di caratteri (CHARSET) a cui fanno riferimento.

    Qui è spiegato meglio:
    database . html.it/guide/lezione/2445/i-set-di-caratteri/

    Alessandro