Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [MYSQL] Utilizzo Like

  1. #1
    Utente di HTML.it L'avatar di damar3
    Registrato dal
    Feb 2002
    Messaggi
    216

    [MYSQL] Utilizzo Like

    Salve a tutti,

    ho una pagina PHP che crea una query in base a delle scelte dall'utente e pone fuori una query del tipo :

    select * from miaTabella where NomeFile='AAVVRREE.ITA'

    dove "AA", "VV", "RR", "EE" (sempre di 2 caratteri) e ".ITA" sono dei valori impostati dall'utente mediante delle combobox

    A questo punto viene visualizzato il risultato della query all'utente.

    Mi è stato chiesto di modificare tale sistema in modo tale da visualizzare all'utente non solo il file

    AAVVRREE.ITA ma anche i file

    VVRREEAA.ITA
    RREEAAVV.ITA
    ...
    praticamente tutti i file che contengono le stringhe scelte dall'utente.

    Io avevo pensato ad una cosa del tipo

    select * from miaTabella where NomeFile like '%AA%' and NomeFile like '%VV%' NomeFile like '%RR%' NomeFile like '%EE%' NomeFile like '%.ITA'

    Questo sistema purtroppo mi tira fuori dei file in + quando può ci sono dei valori intermedi che coincidano con una delle stringhe messe nel like.

    Spero di essere stato chiaro nella spiegazione, qualcuno mi può dare una mano ?

  2. #2
    Quantomeno curiosa la richiesta.

    Poiche' le parole sono formate a scelta dello scrivente tra le lettere dell'alfabeto, basta mettere l'ultima della tua serie....
    codice:
    .... NomeFile like '%.ITA'
    questa da sola vanifica tutte le altre condizioni precedenti... senza considerare l'errore di sintassi che hai nel where.



    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it L'avatar di damar3
    Registrato dal
    Feb 2002
    Messaggi
    216
    L'errore di sintassi forse è dovuto nel ricopiare la query che di per se come sintassi funziona. Il problema non è tanto nella sintassi ma quanto nella logica.

    L'ultima parte non esclude le altre perchè l'utente sceglie l'estensione del file.

    Un esempio reale che mi è captiato è questo (cerco di ricordarmelo perchè non ho al momento il codice davanti).

    select * from downz
    where

    NomeFile like '%us%'
    and NomeFile like '%eu%'
    and NomeFile like '%.ITA'

    Io vorrei che mi trovasse i file

    euus.ita
    useu.ita

    Invece mi trova anche il file

    eusi.ita (perchè contiene la stringa us a cavallo fra le due stringhe da cercare).

    Ogni nome è composto da 2 lettere - 2 lettere - 2 lettere -2 lettere . estensione.

    Si va da un minimo di un estensione di 8 caratteri (euus.ita) al massimo di 12 caratteri per file del tipo (euuscaba.ita).

    Spero di essere stato un pò + chiaro nello spiegarmi!

  4. #4
    Eri chiaro anche prima. Non puoi passare tutte quelle opzioni nella query in AND perche' se non son tutte vere non torna manco una riga.

    E manco in OR altrimenti potrebbero tornartene troppe.

    Siccome sicuramente passerai una $variabile alla query mettere un where campo like '%$var%.ita' dovrebbe bastare. Sicuramente ti torneranno tutte le stringhe dove e' presente il contenuto digitato da utente.

    Anche l'utente deve seguire una regola benche' minima per una ricerca.... cio' le parole possono essere l'inizio di una stringa, essere contenute in una stringa, terminare una stringa, non essere in una stringa. Gli fai un SELECT con le opzioni che credi opportune in modo che poi tu sai come applicare la condizione in where.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it L'avatar di damar3
    Registrato dal
    Feb 2002
    Messaggi
    216
    Quindi mi sa che una soluzione veramente non esiste (forse) ...

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.