/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
foreach-statement og send mail
Fra : Dennis Munding


Dato : 15-06-06 16:40

Hej NG!

Jeg sidder og læser Julie C. Melonis bog "PHP, MySQL og Apache", og jeg er
rendt ind i et problem:

Jeg læser om foreach i forbindelse med formularer og om at sende mail -
begge dele kan jeg godt få til at lykkes hver for sig, men jeg vil gerne
kombinere dem - og det går ikke så godt...

Jeg har en side med en kontakt-formular, hvor der er nogle input-felter at
typen "checkbox".
Jeg har læst mig frem til (side 165 i bogen), at man kan samle alle
brugerens input i et array, hvis man i parameteren "name" skriver f.eks.:
name="feltnavn[]" ved alle input-felterne - altså den afsluttende klamme
skulle få PHP til at samle det sammen til ét array, hvis brugeren sætter
kryds i flere felter.

Ingen problem der - kan godt få det udskrevet korrekt hvis jeg ikke blander
det sammen med at skulle sende en mail - lidt kode:

if (!empty($_POST[omraade])) {
print "<ul>\n\n";
foreach ($_POST[omraade] as $value) {
print "<li>$value</li>\n";
}
print "</ul>";
} // Det her vil udskrive en liste med brugerens input

//Vi laver en variabel, som indeholder alt det, som skal stå i mailen
$msg = "Besked fra ".$navn."\n";
$msg .= "Afsenderens adresse: ".$adr. "\n";
$msg .= "Kontaktperson: ".$att. "\n";
$msg .= "Afsenderens e-mail: ".$email."\n";
$msg .= "Afsenderens IP-adresse: ".$ip."\n\n";
$msg .= "Ønsker info om flg. område(r):\n $value\n";
$msg .= $navn."'s besked er:\n\n".$tekst."\n";
// Jeg vil gerne have foreach-statementet implementeret i her, så der hvor
der står "$msg .= "Ønsker info om flg. område(r):\ $value\n";" (fjern første
og sidste "), så alle brugerens input bliver udskrevet.

Jeg har prøvet det på flg. måde:

if (!empty($_POST[omraade])) {
foreach ($_POST[omraade] as $value) {

//Vi laver en variabel, som indeholder alt det, som skal stå i mailen
$msg = "Besked fra ".$navn."\n";
$msg .= "Afsenderens adresse: ".$adr. "\n";
$msg .= "Kontaktperson: ".$att. "\n";
$msg .= "Afsenderens e-mail: ".$email."\n";
$msg .= "Afsenderens IP-adresse: ".$ip."\n\n";
$msg .= "Ønsker info om flg. område(r):\n $value\n";
$msg .= $navn."'s besked er:\n\n".$tekst."\n";

}
}

....men det udskriver kun den sidste markering, som brugeren har
foretaget...??

Hvad gør jeg galt??

På forhånd mange tak for hjælpen!


Med venlig hilsen
--
Dennis Munding
Web-master
http://www.skovaa-munding.dk/, http://www.mundings-memorial.dk/
http://www.cantica.dk/, http://www.pe-vagtservice.dk/,
http://www.eds-denmark.dk/



 
 
Dennis Munding (16-06-2006)
Kommentar
Fra : Dennis Munding


Dato : 16-06-06 04:42

Hej igen NG!
"Dennis Munding" <mail@invalid.dk> skrev i en meddelelse
news:Zafkg.249$Gy6.244@news.get2net.dk...

Jeg har fundet løsningen på problemet!

[SNIP]

> Ingen problem der - kan godt få det udskrevet korrekt hvis jeg ikke
> blander det sammen med at skulle sende en mail - lidt kode:
>
> if (!empty($_POST[omraade])) {
> print "<ul>\n\n";
> foreach ($_POST[omraade] as $value) {
> print "<li>$value</li>\n";
> }
> print "</ul>";
> } // Det her vil udskrive en liste med brugerens input
>
> //Vi laver en variabel, som indeholder alt det, som skal stå i mailen
> $msg = "Besked fra ".$navn."\n";
> $msg .= "Afsenderens adresse: ".$adr. "\n";
> $msg .= "Kontaktperson: ".$att. "\n";
> $msg .= "Afsenderens e-mail: ".$email."\n";
> $msg .= "Afsenderens IP-adresse: ".$ip."\n\n";
> $msg .= "Ønsker info om flg. område(r):\n $value\n";
> $msg .= $navn."'s besked er:\n\n".$tekst."\n";
> // Jeg vil gerne have foreach-statementet implementeret i her, så der hvor
> der står "$msg .= "Ønsker info om flg. område(r):\ $value\n";" (fjern
> første og sidste "), så alle brugerens input bliver udskrevet.

Det skulle bare stå sådan her:

//Vi laver en variabel, som indeholder alt det, som skal stå i mailen
$msg = "Besked fra ".$navn."\n";
$msg .= "Afsenderens adresse: ".$adr. "\n";
$msg .= "Kontaktperson: ".$att. "\n";
$msg .= "Afsenderens e-mail: ".$email."\n";
$msg .= "Afsenderens IP-adresse: ".$ip."\n\n";
if (!empty($_POST[omraade])) {
$msg .= "Ønsker info om flg. område(r):\n";
foreach ($_POST[omraade] as $value) {
$msg .= "$value\n";
}
}
$msg .= "\n".$navn."'s besked er:\n\n".$tekst."\n";

Så virker det!
(Rart selv at finde løsningen...)


Med venlig hilsen
--
Dennis Munding
Web-master
http://www.skovaa-munding.dk/, http://www.mundings-memorial.dk/
http://www.cantica.dk/, http://www.pe-vagtservice.dk/,
http://www.eds-denmark.dk/



Søg
Reklame
Statistik
Spørgsmål : 177516
Tips : 31968
Nyheder : 719565
Indlæg : 6408629
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste