Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Select-valintaruutuja 2kpl

MtJ [24.09.2005 21:49:09]

#

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>
<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...

Olga [24.09.2005 21:55:35]

#

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.

MtJ [24.09.2005 22:37:17]

#

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ä.

MtJ [26.09.2005 12:38:43]

#

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>

Debugger [26.09.2005 12:54:43]

#

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.

Olga [26.09.2005 13:05:50]

#

- 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... :)

MtJ [26.09.2005 13:19:07]

#

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!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta