Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Palautelomakkeen valintalistan lähettäminen

Sivun loppuun

AkeMake [16.04.2009 20:14:22]

#

Minulla on sivuilla php:llä tehty palautelomake, jonka muokkasin tältä sivulta otetulta pohjalta: http://www.elkoo.net/html/php_lomake.php

Palautelomake toimii muuten normaalisti, mutta kun teen lomakkeeseen valintalistan, lomake ei lähdekään vaan ilmoittaa, että jotkin kentät on tyhjiä.
Huomasin, että tuo ei luekaan valintalistaan tehtyjä valintoja ja väittää valinnan olevan tyhjä niissä. Luulen, että ongelma on siinä kun valintalistassa ei määritellä pelkästään name:a vaan myös value. Varmaan jotain siinä menee minulla väärin. Miten tuota php-koodia pitäisi muuttaa, jotta palautelomake lähtisi oikein??

Minun php-lomakkeeni:

<?php
$posti = array
  (
  nimi=>$_POST['nimi'],
  ajankohta=>$_POST['aika']
  );

  foreach ($posti as $arvo)
{
  if (empty($arvo))
  {
  die("Ilmoittautumislomakkeessa on tyhji&auml; kentti&auml;. Ole hyv&auml; ja t&auml;yt&auml; kaikki kent&auml;t.<br />Palataan takaisin ilmoittautumislomakkeeseen 5 sekunnin kuluttua.<br />Jos sivu ei palaudu lomakkeeseen, klikkaa <a href='index.php?sivu=20'>t&auml;st&auml;</a>.");
  }
}

$osoite = "matti.meikalainen@gmail.com";
$otsikko = "Palautetta";
$viesti = Nimi: ".$_POST['nimi']."
Ajankohta: ".$_POST['aika'].";

mail ($osoite, $otsikko, $viesti, "From: matti.meikalainen@gmail.com");

echo "Ilmoittautumislomakkeesi tuli onnistuneesti perille.<br />Palataan takaisin sivuille 5 sekunnin kuluttua.<br />Jos sivu ei palaudu, klikkaa <a href='index.php'>t&auml;st&auml;</a>.";
?>

Ja lomakkeessa valintalista on tällainen:

<form action="phplomake.php" method="post">
<table border="0" align="left">
<tr>
  <td>Nimi: </td>
  <td><input type="text" name="nimi" size="30" /></td>
</tr>
<tr>
  <td>Minulle sopiva ajankohta: </td>
  <td><select name="ajankohta"><option value="ajankohta">9.-11.6.</option><option value="ajankohta">14.-16.6./option><option value="ajankohta">16.-18.6.</option></select></td>
</tr>
<tr>
  <td align="center" colspan="2"><input type="submit" value="L&auml;het&auml; posti">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="reset" value="Tyhjenn&auml; kent&auml;t"></td>
</tr>
</table>
</form>

Grez [16.04.2009 20:41:35]

#

AkeMake kirjoitti:

Ja lomakkeessa valintalista on tällainen:

<td><select name="ajankohta"><option value="ajankohta">9.-11.6.</option><option value="ajankohta">14.-16.6./option><option value="ajankohta">16.-18.6.</option></select></td>

Tässä on siis kenttä, jonka nimi on "ajankohta", ja se saa aina arvokseen "ajankohta", riippumatta siitä, minkä noista kolmesta vaihtoehdosta käyttäjä valitsee.

AkeMake kirjoitti:

Minun php-lomakkeeni:

<?php
//...
  ajankohta=>$_POST['aika']

Ja tässä yritetään lukea lomakkeelta kenttä, jonka nimi on "aika", jota lomakkeella ei ole.

AkeMake [16.04.2009 21:50:12]

#

No kuten jo huomasit niin en todellakaan tajua tästä lomakkeiden tekemisestä paljoakaan.

Olisiko tuo valintalista sitten tällainen??

<td><select name="ajankohta"><option value="eka">9.-11.6.</option><option value="toka">14.-16.6./option><option value="kolmas">16.-18.6.</option></select></td>

Ja pitäisikö se lukea sitten näin??

<?php
//...
  ajankohta=>$_POST['ajankohta']

Jos sitä saisi hiukan tarkempia neuvoja mitä pitää tehdä niin helpottaisi kummasti. Meniköhän se nyt oikein?

TeNDoLLA [16.04.2009 22:05:31]

#

Lukeminen tapahtuu noin. Ja jos teet tuohon tyyliin nuo valuet tuossa selectissä, niin sun pitää jostain sit tajuta liittää eka päiväykseen 9.-11.6 ja toka päiväykseen 14.-16.6 kun lähetät tiedot. Eli tuo value ois varmaan hyvä olla suoraan se päiväys. Tai jos päiväys arvot tulee kannasta, niin silloin esim. päiväyksen id.

Grez [16.04.2009 22:20:31]

#

AkeMake kirjoitti:

Meniköhän se nyt oikein?

Mielestäni meni ihan oikein, jos halusit noin. Eli nyt jos käyttäjä valitsee 9.-11.6., niin viestiin tulisi
Ajankohta: eka

AkeMake kirjoitti:

Jos sitä saisi hiukan tarkempia neuvoja mitä pitää tehdä niin helpottaisi kummasti.

No tuohan meni ihan hienosti. Pääsit vaivaamaan hieman aivonystyröitä ja päädyit toimivaan lopputulokseen. Seuraavalla kerralla saat vastaavan ongelman todennäköisesti selvitettyä itse - olet siis oppinut jotain.

Myös kokeilemalla oppii, eli jos teet nuo muutokset ja kokeilet, niin näet itsekin, että toimiiko se vai ei.

En ota kantaa onko siellä muita virheitä. Alkupostauksesta ymmärsin että se olisi toiminut OK mainittuja ongelmia lukuunottamatta, joten en tutkinut sitä tarkemmin.

Metabolix [16.04.2009 22:38:48]

#

<?php
$viesti = Nimi: ".$_POST['nimi']."
Ajankohta: ".$_POST['aika'].";
?>

Tämä ei kyllä ole tuntemani PHP-syntaksin mukaan oikein. Näkeehän sen jo värityksestäkin.

AkeMake [16.04.2009 22:51:41]

#

Metabolix, miten se sitten menisi oikein?

Grez [16.04.2009 22:57:35]

#

Olisko:

<?php
$viesti = "Nimi: ".$_POST['nimi']."
Ajankohta: ".$_POST['ajankohta'];
?>

tai

<?php
$viesti = "Nimi: {$_POST['nimi']}
Ajankohta: {$_POST['ajankohta']}";
?>

Kannattaa lukaista tuo PHP-opas läpi jos on tarkoitus PHP:n kanssa puuhastella. Siitä selviävät monet perusasiat.


Sivun alkuun

Vastaus

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

Tietoa sivustosta