foo.php
<form method="POST" action="kaffetti.php" target="iframe"> Otakko?<br /> <select name="kahvia"> <option></option> <option>Joo</option> </select> <br /><input type="submit" value="Harashoo"> </form> <iframe name....
kaffetti.php
$ekakahvi = $_POST['kahvia']; $tokakahvi = $_POST['kahvia2']; $kokakahvi = $_POST['... print "Taisit haluta kahavia? <b>$ekakahvi</b>!<br />"; if [$tokakahvi != ''] print "Ja halusit lissääki? <b>$tokakahvi</b>!"; if [$kokakahvi != ''] print "Ja mömmökahaviaki? <b>$kokakahvi</b>, oon keltainen kummitus!"; print "Kahvisi maksaa tommooset rapijat seittemänsa..ky..toista euroa, tack.";
Elikkä näin. Nyt onkin sitten vuorossa huippumielenkiintoinen ja jännitystä tihkuva kompleksi. Se on mahdollista, mutten tiedä miten ja tässä vaiheessa teikäläiset sitten astuvat mukaan kuvioihin. Nimittäin "ylimääräisten" rivien lisääminen tähän tyyliin:
foo.php
<form method="POST" action="kaffetti.php" target="iframe"> Otakko? <select name="kahvia"> <option></option> <option>Joo</option> </select> <?php if [kahvia != ''] { print "<br />Lisää?<br /><select name='kahvia2'> <option></option> <option>Lissää</option> </select> } if [kahvia2 != ''] { print "<br />Vieläkinkö?<br /><select... ?> <br /><input type="submit" value="Mää lähe! Kuitti tänne!"> </form> <iframe name....
Mutta eihän se noin toimi. Eihän tuota uutta "tarjousta" saa näkyviin, ennen kuin sivu on ladattu uudestaan ja sitähän ei tapahdu missään välissä. Jos formin sisään voisi tehdä toisen formin, niin silloin ongelmaa ei olisi. Tekisi kaksi iframea joista ylempään ladataan tuo varsinainen kysely ja alempaan sitten tulostetaan kuitti.. sitten kun sitä pyydetään. Mutta ongelmana on edelleen sen ylemmän iframen päivittyminen. Homma hoituisi, jos käyttäisi <a href="foo.php">Huuda tarjoilijaa</a> metodilla. Tosin olisi jokseenkin elitistisempää jos homma hoituisi ilman ylimääräisiä klikkauksia heti sen jälkeen, kun on valinnut "Joo". Mahtaneeko onnistua ilman JavaScriptiä, epäilen.
Parempana ratkaisumahdollisuutena tulee mieleen se, että tekisi kaiken yhdessä ja samassa foo.php:ssä jolloin iframe(t) jäisi näppärästi pois. Ajatukseni karkaavat pistorasioihin, kun ei pääse kokeilemaan käytännössä juuri nyt, mutta jos käyttäisi vain yhtä sivua, niin siihen tulisi aikalailla moninkertaisia if (if else?) vaatimuksia. Joten miten on - nöyrrynkö ja jätänkö piilotetut lisäkysymykset näkyviksi vai keksimmekö patenttiratkaisun?
Ensinnäkin, option-tageista puuttuu value-attribuutti. Toisekseen, hakasulut eivät taida toimia php:n iffien kanssa.
Ja sitten asiaan. Suosittelisin iframe-purkan välttämistä. Tulee käyttäjällekin selkeämmäksi, kun sivu on yhtenäinen sivu eikä kokoelma pikkuluukkuja.
Sitä se teettää, kun ulkomuistista näitä kirjoittelee. Virheiden korjaamisen aika on sitten, kun tuota rupeaa puhtaaksi kirjoittamaan [kas, kun työmaan koneilla ei jostain syystä ole php:tä].
Juu, parasta olisi jos saisi tyylikkään sulavan kokonaisuuden. Ongelma tässä onkin se, että kuinka tuon toteuttaisi ilman javascriptiä. Sillähän saisi vaikka mitä jännää aikaiseksi, mutta mahtaako tuota jokainen käyttääkään..
Aihe on jo aika vanha, joten et voi enää vastata siihen.