Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    909

    [php mysql] query da più select

    Buongiorno a tutti sono alle prese con una query abbastanza complessa:

    ho 4 select da cui filtrare i dati per poi interrogare il db,
    rispettivamente:

    codice:
    Da Valore a
     <select name="1select_da">
                                <option value="ALL" selected>ALL</option>
                                <option value="A">A</option>
                                <option value="B">B</option>
                                <option value="C">C</option>
                                <option value="D">D</option>
    </select>                         
    A Valore a
     <select name="2select_a">
                                <option value="ALL" selected>ALL</option>
                                <option value="A">A</option>
                                <option value="B">B</option>
                                <option value="C">C</option>
                                <option value="D">D</option>
    </select>
    
    Da Valore b
     <select name="3select_b">
                                <option value="ALL" selected>ALL</option>
                                <option value="1">1</option>
                                <option value="2">2</option>
                                <option value="3">3</option>
                                <option value="4">3</option>
    </select>
    A Valore b
     <select name="4select_b">
                                <option value="ALL" selected>ALL</option>
                                <option value="1">1</option>
                                <option value="2">2</option>
                                <option value="3">3</option>
                                <option value="4">4</option>
    </select>
    diciamo per semplicità che la tabella è strutturata così:
    codice:
    Campo_a >>A,B,C,D
    Campo_b >>1,2,3,4
    Dovrei fare una query così:
    codice:
    SELECT * FROM tabella WHERE Campo_a (contiene tutti i valori che vanno da 1select_a a 2select_b) AND Campo_B (contiene tutti i valori che vanno da 3select_b a 4select_b)
    Per intenderci
    se
    1select_a ha come valore B
    e
    2select_a ha come valore D

    Dovrei estrarre per il Campo_a i valori B, C, D

    se
    3select_b ha come valore 2
    e
    4select_b ha come valore 4

    Dovrei estrarre per il Campo_B i valori 2, 3, 4

    ovviamente verificando entrambe le condizioni!!


    Grazie sin d'ora a chi ha troverà il coraggio di aiutarmi

  2. #2
    Puoi fare cosi':

    Codice PHP:
    $condizione_a implode("','"range($select1_da$select1_a));
    $condizione_b implode(",",   range($select2_da$select2_a));

    $sql "SELECT * 
            FROM tabella 
            WHERE Campo_a IN ('
    $condizione_a')
            AND   Campo_b IN (
    $condizione_b)"

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    909
    purtroppo non va mysql restituisce un errore

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    909
    ma poi scusa con implode tu lavori come se fosse un'array giusto?

    ma in realtà a me dal form arriva un solo dato per ogni select, quindi presumo dovrei prima crearmi un array contenente tutti gli elenchi e poi individuare la corrispondenza del'indice dell'array con il valore della select
    tipo:
    codice:
    $elenco1= array('A','B','C','D');
    $elenco2= array('1',2','3','4');
    per poi verificare:
    l'$_POST[1select_da] che valore ha rispetto all' $elenco1
    l'$_POST[1select_a] che valore ha rispetto all' $elenco1

    e idem per le altre 2 select

    e far scorrere l'elenco partendo e finendo al valore corrispondente

    mmm :master:

  5. #5
    Guarda cosa fa la funzione range(): http://it.php.net/range

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    909
    ...allora non fa per me,

    i valori che ho postato sono indicativi non sono nè un elenco numerico nè alfabetico


  7. #7
    Eh allora scrivi le domande piu' precise

    Se i valori non sono in un ordine "comune" e' impossibile scrivere un algoritmo magico universale.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    909
    up pls

  9. #9
    Ripeto, come si puo' indovinare come costruire una lista "da" "a" se non dici quali sono i valori?

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    909
    non credo sia importante il valore delle "liste" lasciando da parte la soluzione propostami che poteva andare benissimo se fossero stati o numeri o lettere.

    l'idea che ho in mente è questa, vediamo magari insieme se riusciamo:

    mi creo 2 arry contenenti le liste delle select:
    codice:
    $elenco1=array("AB","CD","NO","ZA");
    mi recupero il valore delle prime due select
    codice:
    $da1 = "$_POST[1select_da]";
    $a1 = "$_POST[1select_a]";
    a questo punto dovrei tramite un ciclo for scorrere l'elenco partendo da $da1 a $a1 e stamparmi i valori
    codice:
    for ($i =$da1, $n = count($elenco1) ; $i <= $a1  ; $i++)
    {
      
    $query="AND campo1=\"$elenco1[$i]\"";
    }
    Che ne pensi?

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.