Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Jostain syystä onchange ei toimi

Sivun loppuun

mmikko [21.07.2013 20:11:17]

#

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

peran [21.07.2013 20:31:32]

#

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>";

mmikko [21.07.2013 20:52:53]

#

Huolimattomuuttani...mutta 100xKiitos!

peran [21.07.2013 21:09:55]

#

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>";

mmikko [22.07.2013 06:22:02]

#

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:

while ($rivi = $kysely->fetch()) {

echo "<option value = '$rivi[2]' > $rivi[2]</option>";
}

t: mikko

The Alchemist [22.07.2013 09:22:20]

#

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

mmikko [23.07.2013 06:23:00]

#

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.

feenix [23.07.2013 18:31:54]

#

Ja lienikö alkuperäinen vika siinä, että selectin aloitustägistä puuttui lopusta >?


Sivun alkuun

Vastaus

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

Tietoa sivustosta