Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    11

    Doppia SELECT riempita dinamicamente in JS/PHP

    Salve a tutti,
    ho necessità di creare una doppia SELECT in maniera tale che la prima vada a determinare come riempire la seconda.

    Esempio: la prima SELECT è composta da X opzioni. A seconda dell'opzione che si sceglie nella prima SELECT nella seconda SELECT vengono mostrate Y opzioni.

    La base è una cosa del genere:
    codice:
    <h2>Test</h2>
    <form name="test">
    <select name="scelta1" onChange="aggiornascelte(this.selectedIndex)">
    <option selected>Scegli</option>
    <option value="prima">Prima</option>
    <option value="seconda">Seconda</option>
    <option value="terza">Terza</option>
    </select>
    
    <select name="scelta2">
    </select>
    </form>
    E questa è la funzione aggiornascelte() :
    codice:
     
    <script language="javascript" type="text/javascript">
    
    var elencoscelte1=document.classic.scelta1
    var elencoscelte2=document.classic.scelta2
     
    var scelta2=new Array()
    scelta2[0]=""
    scelta2[1]=["Uno|uno", "Due|due", "Tre|tre"]
    scelta2[2]=["Bianco|bianco", "Giallo|giallo", "Rosso|rosso"]
    scelta2[3]=["Alto|alto", "Basso|basso", "Grasso|grasso"]
     
    function aggiornascelte(lamiascelta){
    elencoscelte2.options.length=0
    if (lamiascelta>0){
    for (i=0; i<scelta2[lamiascelta].length; i++)
    elencoscelte2.options[elencoscelte2.options.length]=new Option(scelta2[lamiascelta][i].split("|")[0], scelta2[lamiascelta][i].split("|")[1])
    }
    }
     
    </script>
    Il mio problema è il seguente: tanto i dati della prima select, quanto quelli della seconda, dovrebbero essere caricati da una tabella MySQL. Quindi i casi sono due: o ho perso tempo con il mio JS e potevo fare tutto in PHP, oppure (suppongo) devo precaricare tutti i dati entro variabili per poi girare i dati nello script JS...

    A caricare i dati nella prima SELECT ci arrivo... faccio una query nel DB di quello che mi serve e dentro i tag <SELECT></SELECT> faccio un while dei risultati (<option value=$row[0]>$row[0]</option>).

    Il problema è aggiornare i dati nella seconda select. La scelta della prima select deve agire sulla query come fosse un WHERE (SELECT * FROM table WHERE item=scelta1). Quindi suppongo che sia necessario fare preventivamente una query per ognuna delle opzioni della prima SELECT e tener conto del mysql_num_rows per sapere quante opzioni devo prevedere nella seconda SELECT...

    Help?

  2. #2
    Ciao Rashef, un aiutino posso dartelo io, in php naturalmente, altrimenti non avresti postato la tua discussione qui su php.

    Crei le due query che ti servono

    Riempi la prima select con dei campi prelevati attraverso una query dal tuo db mysql e aggiungi la voce onclick="form.submit();"

    Una volta che fai form.submit, il tuo form viene "rispedito" alla stessa pagina.

    Se hai il form in post, basta che prelevi la variabile della prima select con $_POST['prima_select']
    e prima della seconda query (quella che dipende dalla prima), metti questo codice

    if(isset($_POST['prima_select']) && $_POST['prima_select']!=0){

    SECONDA QUERY

    }

    e coi risultati di questa seconda query riempi il secondo campo select.

    Fammi sapere come è andata.

    Cristian
    Believe in GOD, you could only have Benefits from him!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    11
    Originariamente inviato da taurus82
    Ciao Rashef, un aiutino posso dartelo io, in php naturalmente, altrimenti non avresti postato la tua discussione qui su php.
    Grassie... infatti ho postato qui perché con il PHP me la cavo meno... :P

    Una volta che fai form.submit, il tuo form viene "rispedito" alla stessa pagina.
    Ah, ok... semplicemente volevo evitare di ricaricare la pagina... :P

  4. #4

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.