Tervehdys taasen,
olen ollut täältä pitkään pois, mutta päätin palata koska en löytänyt minkäänlaista viisasta ratkaisua omaan ongelmaani, joka lienee verraten yksinkertainen, mutta itse en vaan näe ratkaisua ongelmaan...
Eli pitäisi tehdä kaksi <select> -alasvetovalikkoa, joista ensimmäisestä valitaan ylintä kategoriaa edustava tieto. Toinen sitten valikoituu automaattisesti tämän ensimmäisen valinnan mukaan kyseistä kategoriaa vastaavaksi.
Eli hiukan selventääkseni tässä html:ää, silvuplee:
<select name="ruuat">
<option value="pitsa">pitsa</option>
<option value="hampurilainen">hampurilainen</option>
<option value="kebab">kebab</option>
</select>
Sitten toiseen pitäisi valikoitua ruokalajit äsken valitun kategorian mukaan, ilman mitään napin painalluksia:
Valittiin edellisestä pitsa, silloin valitaan siis uusi alasvetovalikko:
<select name="ruokalajit"
<option value="jauhelihapitsa">jauhelihapitsa</option>
<option value="kinkkupitsa">kinkkupitsa</option>
<option value="oksetuspitsa">oksetuspitsa</option>
</select>
Toisaalta jos valitaan hampurilaiset, pitäisi "ruokalajit" vaihtuakin edustamaan suoraan hampurilaisia tähän tapaan;
<select name="ruokalajit">
<option value="juustohampurilainen">Juustohamppari</
<option value="McFeast">Mäkkäri</option>
</select>
Eli miten tälläinen tehdään php:llä? En kaikesta pohtimisesta ja etsimisestä huolimatta ole ratkaissut ongelmaa... P.S. Oikeasti käyttö ei ole ruokalistana, mutta kun oli nälkä tätä pohtiessa...
Ei onnistu PHP:lla jos sitä nappia ei saa välillä painaa. Katso JavaScript-ratkaisu ketjusta https://www.ohjelmointiputka.net/keskustelu/7948-javascript-valikko-ongelma. Esitetty koodinpätkä on lennosta heitetty, mutta soveltamalla siitä saa käyttökelpoisen.
Kiitokset vastauksesta... Hmmm nyt on vielä kamala ongelma, miten saan homman pelaamaan.. Eli php:llä tuodun kannan tiedot pyörimään tuon funktion kautta.
Mutta kyllä tämä tästä, ehkäpä.
Puuh, olen kokeillut kys. koodia nyt aamupäivän ja boss jo hengittää kuvaannollisesti niskaan ja ehkä välillä kirjaimellisestikin...
Eli vielä kysymys tähän liittyen, joka on yksinkertaisuudessaan se, että "mitä teen väärin?". Kaikki muu on jo kunnossa, mutta meikäläisen javascriptin ollessa näköjään jo todella ruosteista, en vaan keksi sitä virhettä jonka koodissa olen tehnyt.
Tässä koodi:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link href="tunti.css" rel="stylesheet" type="text/css"> <title>XXX Oy - suoritteen muokkaaminen -</title> <script language="JavaScript"> function populate() { var box = document.getElementById('tienro'); // ensimmäinen pudotusvalikko var number = box.options[box.selectedIndex].value; // haetaan pudotusvalikon nykyinen arvo if(!number) return; // jos ei onnistunut var list = listaTaulu[number]; // haetaan listan arvon perusteella listaTaulu-arraysta kyseisen valinnan 'mukainen' array var box2 = document.getElementById('tieosa'); // toinen pudotusvalikko box2.options.length = 0; // tyhjennetään toinen pudotusvalikko // täytetään toinen pudotusvalikko nimi-arvo - pareilla for(i=0;i<list.length;i+=2) { box2.options[i/2] = new Option(list[i],list[i+1]); } } </script> </head> <body bgcolor="white"><center> <p class="txt"><font size="4">XXX Oy</font> <br>- suoritteen muokkaus</p> <script language="JavaScript"> listaTaulu[140]=("1", 1, "2", 2, "3", 3); listaTaulu[15013]=("1", 1, "2", 2); listaTaulu[15019]=("1", 1, "2", 2, "3", 3); </script> <table class="txt"><tr><td> <form method=POST action="file.php?action=tamafunktio"> <table class="txt" width="70%"> <tr> <td bgcolor="#F5F5F5"><b>Selite</b></td> <td bgcolor="#F5F5F5"><b>Muokattava tieto</b></td> </tr><tr> <td bgcolor="#F5F5F5"> <select name="tienro" id="tienro" OnChange="populate();"> <option value="15019">15019</option> <option value="15013">15013</option> <option value="140">140</option> </select> </td></tr><tr> <td bgcolor="#F5F5F5"><b>tien osa</b></td> <td> <select name="tieosa" id="tieosa"> <option>Valitse ensin uusi tienumero</option> </select> </td> </tr></table></form></td></tr></table>
En ole hirveemmin JavaScriptiin tutustunu, mutta tota funktioo vois muuttaa sillei, että ku valitsee 15019 nii sillon ID=1, ja 15013 nii ID=2, sitte tulostaa siihen toiseen pudotusvalikkoon vaan ne, joissa ID=1 tai ID=2 jne. PHP:llä voisi onnistua ainakin, siis se tulostuksen muutos sen mukaan, jos sitä sotkee sinne JavaScriptiin tai toiste päin.
- populate-funktioon for-silmukkaan i-muuttujan alustus (eli for(i=0...) -> for(var i=0...)
<script language="JavaScript"> listaTaulu[140]=("1", 1, "2", 2, "3", 3); listaTaulu[15013]=("1", 1, "2", 2); listaTaulu[15019]=("1", 1, "2", 2, "3", 3); </script>
muotoon
<script language="JavaScript"> var listaTaulu = new Array(); listaTaulu[140] = new Array("1", 1, "2", 2, "3", 3); listaTaulu[15013] = new Array("1", 1, "2", 2); listaTaulu[15019] = new Array("1", 1, "2", 2, "3", 3); </script>
Eli noiden taulukoiden luonnin syntaksi oli vähän päässyt unohtumaan tuota esimerkkiä rustatessa... :)
Ai luoja... Olgalle erityiskiitokset, voi perr sain sen toimimaan. Kuuma hengitys niskassani muuttui tuulen henkäyksiksi ikkunasta ja kirkkaaksi taivaan sineksi...
Saakeli että olet kyllä hyvä jätkä, ei voi muuta sanoa! Eli vielä kerran isolla: KIITOS TÄYDELLISESTÄ AVUSTASI!
Aihe on jo aika vanha, joten et voi enää vastata siihen.