Kirjoittaja: Antti Laaksonen
Kirjoitettu: 12.01.2008 – 12.01.2008
Tagit: ohjelmointitavat, koodi näytille, vinkki, web
Tässä on esimerkkejä HTML-sivulla olevan lomakkeen kautta lähetettyjen tietojen käsittelystä PHP-skriptissä.
Näissä lomakkeissa lomakkeen näyttävä HTML-koodi ja tiedot käsittelevä PHP-koodi ovat samassa tiedostossa. Tämän vuoksi aluksi tutkitaan, onko tiedot jo lähetetty. Tämä selviää katsomalla, onko lomakkeen lähetysnappiin liittyvä muuttuja asetettu. Jos tiedot on lähetetty, muodostetaan uusi sivu niiden perusteella. Muussa tapauksessa näytetään valmiina oleva lomake.
Valintanapeissa (radio.php) jokaiselle samaan ryhmään kuuluvalle napille annetaan sama nimi. Seurauksena on, että vain yksi ryhmän napeista voi olla valittuna.
Kahdessa lomakkeessa (checkbox.php ja select2.php) käyttäjä voi valita monta valintaruutua ja listan kohtaa. Tällöin valinnat näkyvät PHP:ssä taulukkona ja niitä voi käsitellä esim. foreach-silmukalla.
Skriptien toimintaa voi katsella näissä osoitteissa:
http://koti.mbnet.fi/pllk/muut/radio.php
http://koti.mbnet.fi/pllk/muut/checkbox.php
http://koti.mbnet.fi/pllk/muut/select.php
http://koti.mbnet.fi/pllk/muut/select2.php
radio.php
<?php if (isset($_POST['nappi'])) { if (empty($_POST['spuoli'])) { echo "Et ilmoittanut sukupuolta!<br>"; } else { echo "Sukupuoli: " . $_POST['spuoli'] . "<br>"; } if (empty($_POST['akieli'])) { echo "Et ilmoittanut äidinkieltä!<br>"; } else { echo "Äidinkieli: " . $_POST['akieli'] . "<br>"; } die(); } ?> <form action="radio.php" method="post"> <p>Sukupuoli:<br> <input type="radio" name="spuoli" value="mies"> mies <input type="radio" name="spuoli" value="nainen"> nainen </p> <p>Äidinkieli:<br> <input type="radio" name="akieli" value="suomi"> suomi <input type="radio" name="akieli" value="ruotsi"> ruotsi <input type="radio" name="akieli" value="saame"> saame </p> <input type="submit" name="nappi" value="Lähetä"> </form>
checkbox.php
<?php if (isset($_POST['nappi'])) { if (empty($_POST['luvut'])) { echo "Et valinnut mitään lukua!"; } else { echo "Valitsit nämä luvut:<br>"; foreach ($_POST['luvut'] as $luku) { echo $luku . "<br>"; } echo "Yhteismäärä: " . count($_POST['luvut']); } die(); } ?> <form action="checkbox.php" method="post"> <input type="checkbox" name="luvut[]" value="1"> yksi <br> <input type="checkbox" name="luvut[]" value="2"> kaksi <br> <input type="checkbox" name="luvut[]" value="3"> kolme <br> <input type="checkbox" name="luvut[]" value="4"> neljä <br> <input type="checkbox" name="luvut[]" value="5"> viisi <br> <input type="submit" name="nappi" value="Lähetä"> </form>
select.php
<?php $nimet = array("tammi", "helmi", "maalis", "huhti", "touko", "kesä", "heinä", "elo", "syys", "loka", "marras", "joulu"); if (isset($_POST['nappi'])) { echo "Valittu kuukausi: " . $nimet[$_POST['kuukausi']] . "kuu"; die(); } ?> <form action="select.php" method="post"> <p>Valitse kuukausi:<br> <select name="kuukausi"> <?php for ($i = 0; $i < 12; $i++) { echo "<option value=\"$i\">" . $nimet[$i] . "kuu"; } ?> </select> </p> <input type="submit" name="nappi" value="Lähetä"> </form>
select2.php
<?php $nimet = array("tammi", "helmi", "maalis", "huhti", "touko", "kesä", "heinä", "elo", "syys", "loka", "marras", "joulu"); if (isset($_POST['nappi'])) { if (empty($_POST['kuukaudet'])) { echo "Et valinnut mitään kuukautta!"; } else { echo "Valitsit nämä kuukaudet:<br>"; foreach ($_POST['kuukaudet'] as $kuukausi) { echo $nimet[$kuukausi] . "kuu<br>"; } echo "Yhteismäärä: " . count($_POST['kuukaudet']); } die(); } ?> <form action="select2.php" method="post"> <p>Valitse kuukaudet:<br> <select name="kuukaudet[]" size="6" multiple> <?php for ($i = 0; $i < 12; $i++) { echo "<option value=\"$i\">" . $nimet[$i] . "kuu"; } ?> </select> </p> <input type="submit" name="nappi" value="Lähetä"> </form>
Hmm.. Mielenkiintoinen "opas" aloittelijoille (kuten minulle :P)
Käyttäjältä tulevan datan filteröintiin vaikkapa PHP:n oma Filter-palikka.
Sää et kertonu mitään GET:istä. :/