terve,
tässä takunnut hetken aikaa seuraavanlaisen asian kimpussa:
valikosta valitaan niin onchange eventti hoitaa homman ilman painiketta ja allaoleva normi html kilke toimii.
<select name="valinta" id="valinta" onchange="this.form.submit()"> <option value="1">Valinta1</option> <option value="2">Valinta2</option> <option value="3">Valinta3</option> <option value="4">Valinta4</option> </select>
Tästä kuitenkin tein jatkojalostusta ja haen tietokannasta datat valikoon, joka sekin onnistuu, mutta kun valitsen valikosta joka echotettu niin onchange ei toimi. Vai onko mahdollista edes saada toimimaan noin? Vai miten kannattaisi tuo toteuttaa, jotta painiketta ei tartteis klikata valinnan jälkeen?
echo "<form method='POST' action=''>"; echo "Data<br>"; echo "<select name = 'valikko' id = 'valikko' onchange='this.form.submit() '"; echo "<option value = '' selected>"; echo "</form>"; while ($rivi = $kysely->fetch()) { echo "<option value = '$rivi[2]' > $rivi[2]"; } echo "</select>\n"; echo "<br><br>";
Kiitos,
Mikko
Kannattaa myös sulkea tagit.
echo "<form method='POST' action=''>"; echo "Data<br>"; echo "<select name = 'valikko' id = 'valikko' onchange='this.form.submit() '"; echo "<option value = '' selected></option>"; echo "</form>"; while ($rivi = $kysely->fetch()) { echo "<option value = '$rivi[2]' > $rivi[2]</option>"; } echo "</select>\n"; echo "<br><br>";
Huolimattomuuttani...mutta 100xKiitos!
En heti huomannut, mutta suljet myös formin liian aikaisin koodissasi.
Suurin piirtein oikein taitaa mennä seuravasti.
echo "<form method='POST' action=''>"; echo "Data<br>"; echo "<select name = 'valikko' id = 'valikko' onchange='this.form.submit() '"; echo "<option value = '' selected></option>"; while ($rivi = $kysely->fetch()) { echo "<option value = '$rivi[2]' > $rivi[2]</option>"; } echo "</select>\n"; echo "</form>"; echo "<br><br>";
jeps nyt huomaa ittekkin nuo virheet. kysympäs tässä vielä samalla, että voiko tuon datan hakemisen tuohon valikkoon totettaa fiksummin jotenkin kuin olen tehnyt:
t: mikko
Tuo on surkein tapa tehdä asia, joten totta kai voi. Data pitää hakea ensin ja tulostus suoritetaan aina viimeiseksi. Niitä ei saa sekoittaa. Lisäksi itse suosin lomakekirjaston käyttöä, koska lomakkeiden tulostelu käsin on todella tehotonta. Lisäksi tulostat viallista html:ää ja teet sen vielä aika rumasti.
// Haetaan data ja suoritetaan tarvittavat jälkikäsittelyt $data = $repo->fetchAll(); // Tulostus alkaa // Tulostetaan sivun yläosa ?> <select name="foobar"> <?php foreach ($data as $row): ?> <option value="<?= $row['value'] ?>"><?= htmlspecialchars($row['title']) ?></option> <?php endforeach ?> </select> <?php // Tulostetaan sivun alaosa ?>
The Alchemist kirjoitti:
Tuo on surkein tapa tehdä asia, joten totta kai voi. Data pitää hakea ensin ja tulostus suoritetaan aina viimeiseksi. Niitä ei saa sekoittaa. Lisäksi itse suosin lomakekirjaston käyttöä, koska lomakkeiden tulostelu käsin on todella tehotonta. Lisäksi tulostat viallista html:ää ja teet sen vielä aika rumasti.
Kiitos suorasanaisuudestasi sekä esimerkistäsi. Tästäkin opin jälleen paljon.
Ja lienikö alkuperäinen vika siinä, että selectin aloitustägistä puuttui lopusta >?
Aihe on jo aika vanha, joten et voi enää vastata siihen.