Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Lomake sähköpostiin

Sivun loppuun

paatzo [25.10.2007 11:16:25]

#

Olen nyt saanut melkein kokonaan hommaan toimimaan. Viesti tulee sähköpostiin, mutta siinä ei ole mitään tietoja lomakkeesta. Eli mitä tähän pitäisi vielä lisätä että se osaa ottaa tiedot myös?

<script language="php">
$email = $HTTP_POST_VARS[email];
$mailto = "sähköpostiosoite";
$mailsubj = "Ilmoittautuminen";
$mailhead = "From: $email\n";
reset ($HTTP_POST_VARS);
$mailbody = "Values submitted from web site form:\n";

while (list ($key, $val) = each ($HTTP_POST_VARS)) { $mailbody .= "$key : $val\n"; }
if (!eregi("\n",$HTTP_POST_VARS[email])) { mail($mailto, $mailsubj, $mailbody, $mailhead); }
</script>

(Mod. Edit. Kooditagit.)

pistemies [25.10.2007 11:56:51]

#

Viestin sisältö pitää lähettää html-muodossa. Täällä yksi esimerkki:

http://www.pm-netti.com/index.php?id=oppaat&sivu=PhpFunktiot­&funktiolista=mail&script=mail

paatzo [25.10.2007 12:10:49]

#

hmm.. en ainakaan omilla säädöilläni saanut tuolla toimimaan... ja ei se ole pakko olla html muodossa.. vai onko siihen joku "sääntö"? Olen todellinen aloittelija php:ssä... Tämä on ensimmäinen php hommani joka tuli yllättäen ja pitäisi saada valmiiksi tänään...

pistemies [25.10.2007 12:21:36]

#

paatzo kirjoitti:

Viesti tulee sähköpostiin, mutta siinä ei ole mitään tietoja lomakkeesta.

Jos sinun ei tarvitse lähettää varsinaista lomaketta viestiin, niin sitten html-muotoiluja ei tarvitse.
Sinulla on tuossa viestin sisältönä lause "Values submitted from web site form:\". Se ei tietenkään riitä, siihen pitää lisätä muutakin.

$mailbody = "Values submitted from web site form:".
$_POST['ilmoittaja'];

Lisäät viestiin tarvittavat post-kenttien vastaanotot.

paatzo [25.10.2007 12:39:16]

#

En saanut tuolla $_POST jutulla toimimaan. Ilmoittaa erroria nettisivulla:
Parse error: syntax error, unexpected T_VARIABLE in ja perässä sivun osoite ja virherivi joka on tuo $_POST-rivi.

Tässä tämänhetkinen muoto:

<?php
$email = $HTTP_POST_VARS[email];
$mailto = "sähköpostiosoite";
$mailsubj = "Ilmoittautuminen";
$mailhead = "From: $email\n";
reset ($HTTP_POST_VARS);
$mailbody = "Ilmoittautujan tiedot:";


while (list ($key, $val) = each ($HTTP_POST_VARS)) { $mailbody .= "$key : $val\n"; }
if (!eregi("\n",$HTTP_POST_VARS[email])) { mail($mailto, $mailsubj, $mailbody, $mailhead); }
?>

(Mod. Edit. Kooditagit.)

pistemies [25.10.2007 12:55:14]

#

Mitä tuo HTTP_POST_VARS tekee?

En ole itse tuota käyttänyt lomakkeiden lähetyksessä. Miten vaikuttaisi tämä muutos:

$mailbody = "Values submitted from web site form:". $_POST['jutut'];
reset ($HTTP_POST_VARS);

ps. Tuosta edellisestä vielä. Käyt tässä läpi HTTP_POST_VARS muuttujia while-silmukassa, eikö niin?
Olet kuitenkin tuolla reset-toiminnolla tyhjentänyt kaikki kyseiset muuttujat ylemmällä rivillä. Eli ilmeisesti reset kuuluisi olla vasta loppurivillä:

while (list ($key, $val) = each ($HTTP_POST_VARS)) { $mailbody .= "$key : $val\n"; }
if (!eregi("\n",$HTTP_POST_VARS[email])) { mail($mailto, $mailsubj, $mailbody, $mailhead); }
 reset ($HTTP_POST_VARS);

paatzo [25.10.2007 13:00:19]

#

Ei näyttänyt vaikuttavan muulla lailla, kuin että erroria ei enää tule. Ja näytti olevan täysin hyödytön tuo http_post_vars homma.
Sellainen juttu kanssa, että voisiko tuossa formissa itsessään olla jotain väärin. PHP koodit on erillisessä kiitos.php tiedostossa.
Tässä lomakkeen koodi:

<form action="kiitos.php" method="post" enctype="text/plain" name="form" id="form" onsubmit="return tarkistus();" >

Sain vielä tälläisen vaihtoehdon:

<?php

$email = $_POST['email'];
$mailto = "sähköposti";
$mailsubj = "Ilmoittautuminen";
$mailhead = "From: $email\n";
$mailbody = "Ilmoittautujan tiedot:\n";

while (list ($key, $val) = each ($_POST)) {
    $mailbody .= "$key : $val\n";
}

if (!eregi("\n",$_POST['email']))
    mail ($mailto, $mailsubj, $mailbody, $mailhead);

?>

Toimii vain samalla lailla kuin edellinenkin, eli ei tule muuta kuin tuo "Ilmoittautujan tiedot:" kohta.

(Mod. Edit. Kooditagit.)

pistemies [25.10.2007 13:25:18]

#

Ilmeisesti lomakkeella ei ole mitään vikaa. Tuossa while-silmukassa kaikki ei ole niin kuin pitäisi. Mutta homma hoituu ilman whileäkin. Näin:

<script language="php">
$email = $_POST['email'];
$mailto = "pekka@internetti.com";
$mailsubj = "Ilmoittautuminen";
$mailhead = "From: <$email>\n";

$mailbody = "Values submitted from web site form:\n".$_POST['viesti'];

 mail($mailto, $mailsubj, $mailbody, $mailhead);
</script>

paatzo [25.10.2007 13:32:15]

#

$_POST['viesti'];

Pitääkö tuolla 'viesti' tilalla olla joku kohta lomakkeesta esim.
<input type="text" name="etunimi"> tuosta tuo etunimi?
vai itse lomakkeen nimi?

(Mod. Edit. Kooditagit.)

pistemies [25.10.2007 13:39:34]

#

paatzo kirjoitti:

$_POST['viesti'];

Pitääkö tuolla 'viesti' tilalla olla joku kohta lomakkeesta esim.

<input type="text" name="etunimi">

tuosta tuo etunimi?
vai itse lomakkeen nimi?

Ei, vaan:

<textarea name="viesti" cols=40 rows=3>
</textarea>

ellet käytä viestin kirjoitukseen input-kenttää, jonka name=viesti.

Riippuu siitä, mikä on tarkoituksesi. Jos vain etu- ja sukunimi tiedot, niin käytät input-kenttää ja vastaanotossa muutat tuohon $_POST-juttuun oikean nimen.

paatzo [25.10.2007 13:44:00]

#

hmmm... Tuossa ei ole tuota <textarea> kohtaa ollenkaan vaan se on tehty tuolla <input> jutulla.. jos jotain apua on siitä että katsot itse lomakkeen koodia niin lomake on osoitteessa http://www.netikka.net/jarvio/ilmoittautumislomake/ilmoittautumislomake.htm

Blaze [25.10.2007 13:46:13]

#

Pekka Mansikka kirjoitti:

Mitä tuo HTTP_POST_VARS tekee?

Vanhempi versio $_POST-taulusta. Ei pitäis enää käyttää.

pistemies [25.10.2007 13:52:29]

#

Hoituu tähän tyyliin:

$email = $_POST['sposti'];
$mailto = "pekka@internetti.com";
$mailsubj = "Ilmoittautuminen";
$mailhead = "From: <$email>\n";

$mailbody = "Values submitted from web site form:\n".
$_POST['etunimi'].
$_POST['sukunimi'].
$_POST['lahiosoite'];

 mail($mailto, $mailsubj, $mailbody, $mailhead);

Voit lisätä tuohon viestiin[$mailbody] tarpeellisia lomakekenttien nimiä ja tarvittaessa muuta tekstiä.

Metabolix [25.10.2007 13:53:35]

#

Pekka Mansikka kirjoitti:

Olet kuitenkin tuolla reset-toiminnolla tyhjentänyt kaikki kyseiset muuttujat ylemmällä rivillä.

Eipäs. Tuolla palataan taulukon alkuun, jotta each toimii oikein.

PHP: reset - Manual kirjoitti:

reset -- Set the internal pointer of an array to its first element

Muutenkin taitaa Pekka Mansikka nyt vastata ihan eri kysymyksiin.

Tarkista vielä, tulevatko muuttujat perille ja käydäänkö silmukassa lainkaan. Lisäksi tuli mieleen, että mahtaako tuo each-homma toimia POST-taulukon kanssa, kun siihen ei saa kirjoittaa. Eli saako each muutettua sen tilaa? Kokeile varmuuden vuoksi foreachilla.

<?php
// Printataan varmuuden vuoksi koko POST-taulu kerralla tässä
print_r($_POST);

// Käydään läpi, lisäillään ja printtaillaan taas.
foreach ($_POST as $key => $val) {
    $mailbody .= "$key => $val\n";
    echo "$key => $val\n";
}
?>

paatzo [25.10.2007 13:58:02]

#

Se on tälläisessa muodossa:

<?php
print_r($_POST);
$email = $_POST['email'];
$mailto = "pasi.jarvio@netikka.fi";
$mailsubj = "Ilmoittautuminen";
$mailhead = "From: <$email>\n";

$mailbody = "Ilmoittautujan tiedot:\n". $_POST['etunimi']
  .$_POST['sukunimi']
   .$_POST['osoite']
    .$_POST['postinumero']
	.$_POST['postitoimipaikka']
	 .$_POST['oppilaitos']
	  .$_POST['sposti']
	   .$_POST['puhnum']
	    .$_POST['vahalaktoosinen']
		 .$_POST['laktoositon']
		  .$_POST['gluteeniton']
		   .$_POST['muuallergia']
		    .$_POST['opintokaynti']
			 .$_POST['varavalinta']
			  .$_POST['toimikunta']
			   .$_POST['tyopaja']
			    .$_POST['tyopaja2']
				 .$_POST['avajaiset ja kaupungin vastaanotto']
				  .$_POST['lounas']
				   .$_POST['iltajuhla'];

				   foreach ($_POST as $key => $val) {
    $mailbody .= "$key => $val\n";
    echo "$key => $val\n";
}


 mail($mailto, $mailsubj, $mailbody, $mailhead);

?>

Eikä toimi vieläkään...
Ja vika on siis, että se lähettää sähköpostiin vain "Ilmoittautujan tiedot:" kohdan.

pistemies [25.10.2007 14:14:01]

#

Testasin tuota. Minulla ainakin koko tuo $_POST-array on tyhjä.

Mutta tuossa sinun ei tarvitse käyttää molempia juttuja, riittää kun lisäät tuolla forechilla nuo $_POST jutut.
Mutta ensin ne täytyisi löytää jostakin....

paatzo [25.10.2007 14:16:48]

#

Itseltä alkaa lähteä järki tämän homman kanssa, kun koulusta painostetaan koko ajan sen lisäksi, että on muutenki väsynyt yms. Jos joku huomaa tuossa jonku virheen niin olisi kiva jos suoraan korjaisi ja kopioisi sen korjattuna tähän, koska tämä on tosiaan ensimmäinen kerta kun säädän php:n kanssa.

pistemies [25.10.2007 14:25:20]

#

Vika löytyi.
Poista lomakkeesta tämä kohta: enctype="text/plain" ja muuta tämä rivi näin:

$mailbody = "Values submitted from web site form:\n";

paatzo [25.10.2007 14:30:06]

#

Noniin... pieni juttu vielä... muuten toimii loistavasti, mutta kun ilmoittaudu nappia painaa, niin se näyttää tiedot myös siinä kiitos.php sivun yläkulmassa.

pistemies [25.10.2007 14:34:13]

#

poista rivi print_r($_POST);

paatzo [25.10.2007 14:36:30]

#

Ei ole tuollaista kohtaa.
Tämä on tilanne nyt:

<?php

$email = $_POST['email'];
$mailto = "pasi.jarvio@netikka.fi";
$mailsubj = "Ilmoittautuminen";
$mailhead = "From: <$email>\n";

$mailbody = "Ilmoittautujan tiedot:\n";

				   foreach ($_POST as $key => $val) {
    $mailbody .= "$key => $val\n";
    echo "$key => $val\n";
}


 mail($mailto, $mailsubj, $mailbody, $mailhead);

?>

pistemies [25.10.2007 14:42:10]

#

No sitten poista tämä:

echo "$key => $val\n";

paatzo [25.10.2007 14:44:16]

#

Noniin. Kiitoksia suuresti sulle avusta!!! Olisin varmaan kuollu mies ilman sua. :D

pistemies [25.10.2007 14:47:51]

#

paatzo kirjoitti:

Noniin. Kiitoksia suuresti sulle avusta!!! Olisin varmaan kuollu mies ilman sua. :D

Ei kestä. Metabolix ansaitsee myös kiitokset tuosta foreach-jutusta.

paatzo [25.10.2007 14:49:40]

#

Niin ja kiitokset Metabolix:lle myös tuosta osasta.


Sivun alkuun

Vastaus

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

Tietoa sivustosta