Ciao a tutti...
sto cercando di alimentare tre select dinamiche per la classica selezione regione-provincia-citta
ho trovato uno script di esempio che però si limita a regione-provincie mentre io ho bisogno anche delle citta.
pensavo che fosse piu semplice ma forse ho problemi anche a causa della struttura del mio db.
Allora...
Per prima cosa il database:
TBL_REGIONI (id_regione, regione, stato_id)
TBL_PROVINCIE (sigla, provincia, regione_id)
TBL_CITTA ([U]id_citta[U]/, citta, sigla_prov)
dove i campi sottolineati sono le chiavi e "sigla" e "sigla_prov" sono dei char(2) contenenti appunto la sigla della provincia.
Il codice che ho usato è il seguente:
Come dicevo, la selezione regione-provincia funziona benissimo mentre invece quando vado a selezionare una provincia fra quelle disponibili mi viene sbagliato l'elenco delle città. La select delle città viene popolata però con delle città che non centrano niente con la provincia selezionata. Il db ovviamente è corretto. Sembra quasi che non prenda correttamente l'indice selezionato nella select delle provincie, però non so perchè.codice:<form name="ins"> <select name="id_regione" onChange="riempi_prov(this.options.selectedIndex)"> <?php $query = "SELECT * FROM tbl_regioni ORDER BY regione"; $result=mysql_query($query); echo "<option value=''> </option>"; while($row=mysql_fetch_array($result)){ echo "<option value='" . $row['id_regione'] . "'>" . $row['regione'] . "</option>"; } ?> </select> <select name="provincia" onChange="riempi_citta(this.options.selectedIndex)"> <option> </option> </select> <select name="citta"> <option> </option> </select> </form> <SCRIPT> var prov=new Array(); var sigle=new Array(); <? $query = "SELECT * FROM tbl_regioni ORDER BY regione"; $result=mysql_query($query); $counter=1; while($row = mysql_fetch_array($result)) { $query2 = "SELECT * FROM tbl_provincie WHERE regione_id=" . $row['id_regione'] . " ORDER BY provincia"; $result2=mysql_query($query2); $counter2=0; $str_prov=""; $str_sigla=""; while($row2=mysql_fetch_array($result2)){ if($counter2>0){ $str_prov.=","; $str_sigla.=","; } $str_prov.='"'.$row2['provincia'].'"'; $str_sigla.='"'.$row2['sigla'].'"'; $counter2++; } echo "prov[" . $counter . "]=new Array(" . $str_prov . ") \n"; echo "sigle[" . $counter. "]=new Array(" . $str_sigla . ") \n"; $counter++; } ?> function riempi_prov(source) { with (document.ins.provincia) { while (options.length > 0) options[0]=null; for (i=0;i<prov[source].length;i++) options[i]=new Option(prov[source][i],sigle[source][i]) options.selectedIndex=0; } } </SCRIPT> <script language="javascript"> var citta=new Array(); var idcitta=new Array(); <? $query = "SELECT * FROM tbl_provincie ORDER BY provincia"; $result=mysql_query($query); $counter=1; while($row = mysql_fetch_array($result)) { $query2 = "SELECT * FROM tbl_citta WHERE sigla_prov='" . $row['sigla'] . "' ORDER BY citta"; $result2=mysql_query($query2); $counter2=0; $str_citta=""; $str_idcitta=""; while($row2=mysql_fetch_array($result2)){ if($counter2>0){ $str_citta.=","; $str_idcitta.=","; } $str_citta.='"'.$row2['citta'].'"'; $str_idcitta.='"'.$row2['id_citta'].'"'; $counter2++; } echo "citta[" . $counter. "]=new Array(" . $str_citta . ") \n"; echo "idcitta[" . $counter. "]=new Array(" . $str_idcitta . ") \n"; $counter++; } ?> function riempi_citta(source) { with (document.ins.citta) { while (options.length > 0) options[0]=null; for (i=0;i<citta[source].length;i++) options[i]=new Option(citta[source][i],idcitta[source][i]) options.selectedIndex=0; } } </SCRIPT>
Qualcuno ha un'idea?