Osaisko joku neuvoa kuinka javascriptillä saisi tehtyä sellaiset comboboxit jotka olisivat linkitettyjä toisiinsa, eli kun ensimmäisestä valitsee jonku otsikon, toinen päivittyy sen mukaan...ja jotta asiasta tulisi vielä komplikkaampi, näitä comboboksi pareja pitäisi olla usemapia....
Juu, eil jos jollaki on mielenkiintoa hjelpata...kirjoitin tuossa Javascriptillä toiminnot, jonka avulla Combo 2 päivittyy Combo 1 mukaan...Nyt vain on ongelmana se, kuinka tämä toiminnallisuus laittaa useampaan combo boxi pariin, ilman että kirjoittaa jokaiselle combolle tätä koodia....Onnistuiskohan se periyttämisen avulla?
Teet vaan hommalle oman funktion, joka saa parametreinaan tarvittavat tiedot (boksien nimet jne).
ok, toda toda...voiskohan tämän roskan hoitaa kokonaan PHP:llä?
Postitin tuonne php puolelle samaisen ykymyksen, ja neuvottiin scriptiä tehdä....mutta henk. koht. mielummin duunaisin koko homman vaikka PHP:llä... siksi että joillaki javascripti saattaa olla pois päästä ja silloin jää aika isokin osa toteutuksesta näkymättä...jopa kriittinen.
Tuota tässä olisi hieman koodia mitä käyttäny:
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> <!-- function Malli(id, malli) { this.id = id; this.malli = malli; } function Koko(id, id_malli, koko) { this.id = id; this.id_malli = id_malli; this.koko = koko; } MalliArray = new Array( <? $sql = "SELECT DISTINCT nimi FROM ovet"; $res = mysql_query($sql); $i = 1; while($row = mysql_fetch_array($res)) { if($i < mysql_num_rows($res)) {?> new Malli(<? echo $i; ?>, "<? echo $row["nimi"]; ?>"), <? $i++; } else { ?> new Malli(<? echo $i; ?>, "<? echo $row["nimi"]; ?>") <? }; } ?> ); KokoArray = new Array( <? $sql = "SELECT DISTINCT nimi FROM ovet"; $res = mysql_query($sql); $i = 1; $m = 1; while($row = mysql_fetch_array($res)) { $temp = $row["nimi"]; $sql2 = "SELECT id, leveys, korkeus FROM ovet WHERE nimi = '$temp'"; $ret = mysql_query($sql2); while($rowo = mysql_fetch_array($ret)) { if($i < mysql_num_rows($res)) { ?> new Koko(<? echo $rowo["id"]; ?>, <? echo $i; ?>, "<? echo $rowo["leveys"]; echo("x"); echo $rowo["korkeus"]; ?>"), <? } else { if($m < mysql_num_rows($ret)) { ?> new Koko(<? echo $rowo["id"]; ?>, <? echo $i; ?>, "<? echo $rowo["leveys"]; echo("x"); echo $rowo["korkeus"]; ?>"), <? $m++; } else { ?> new Koko(<? echo $rowo["id"]; ?>, <? echo $i; ?>, "<? echo $rowo["leveys"]; echo("x"); echo $rowo["korkeus"]; ?>") <? }; }; } $i++; }?> ); <? $i = 1; while($i < 10) {?> function init(sel_type, sel_style) { document.product.id_malli<? echo $i; ?>.options[0] = new Option("<? echo $TEXT['valitse']; ?>"); document.product.id_koko<? echo $i; ?>.options[0] = new Option("<? echo $TEXT['valitse']; ?>"); for(i = 1; i <= MalliArray.length; i++) { document.product.id_malli<? echo $i; ?>.options[i] = new Option(MalliArray[i-1].malli, MalliArray[i-1].id); if(MalliArray[i-1].id == sel_type) document.product.id_malli<? echo $i; ?>.options[i].selected = true; } OnChange(sel_style); } function OnChange(sel_style) { sel_type_index = document.product.id_malli<? echo $i; ?>.selectedIndex; sel_type_value = parseInt(document.product.id_malli<? echo $i; ?>[sel_type_index].value); for(i = document.product.id_koko<? echo $i; ?>.length - 1; i > 0; i--) document.product.id_koko<? echo $i; ?>.options[i] = null; j=1; for(i = 1; i <= KokoArray.length; i++) { if(KokoArray[i-1].id_malli<? echo $i; ?> == sel_type_value) { document.product.id_koko<? echo $i; ?>.options[j] = new Option(KokoArray[i-1].koko, KokoArray[i-1].id); if(KokoArray[i-1].id == sel_style) document.product.id_koko<? echo $i; ?>.options[j].selected = true; j++; } } } <? $i++; } ?> //--> </SCRIPT> Eli tuossa on scripti ja sitten index.php tiedostoon laitan seuraavan: <td colspan="1" class="teksti" align="center"> <select name="id_malli" size="1" style="width: 100px;" onChange="OnChange()"></select></td> <td colspan="1" class="teksti" align="center"> <select name="id_koko" size="1" style="width: 100px;"></select></td> <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> <!-- alusta(); //--> </SCRIPT>
Miten tuon voisi monista useampaan comboboxiin?
Aihe on jo aika vanha, joten et voi enää vastata siihen.