Foreach statement en mail
Hallo,
Ik kom steeds verder en verder met me script en met de sessies gaat me al steeds beter af.
Echter ik ben nu zover dat de mail opgemaakt kan worden, met de gegevens van de sessie erin.
Dit is hoe de code uitgelezen wordt:
echo $line maakt mooi de code op het scherm. Echter wil ik deze tekst in de mail krijgen.
Nu dacht ik, ik zet $line in de mail, maar die zend niks uit. Het if statement heb ik ook in de mail gezet, maar ook daar krijg ik geen output. Nu weet ik het ff niet meer.
Wat kan ik het beste doen?
Groet,
Roel
Ik kom steeds verder en verder met me script en met de sessies gaat me al steeds beter af.
Echter ik ben nu zover dat de mail opgemaakt kan worden, met de gegevens van de sessie erin.
Dit is hoe de code uitgelezen wordt:
Code (php)
echo $line maakt mooi de code op het scherm. Echter wil ik deze tekst in de mail krijgen.
Nu dacht ik, ik zet $line in de mail, maar die zend niks uit. Het if statement heb ik ook in de mail gezet, maar ook daar krijg ik geen output. Nu weet ik het ff niet meer.
Wat kan ik het beste doen?
Groet,
Roel
Als ik het goed begrijp werkt het mailen niet (goed).
Waarom plaats je daar dan niet de code van? ;-)
Waarom plaats je daar dan niet de code van? ;-)
Nou de mail werkt wel goed, iig, als ik gewoon $_SESSION er in zet, dan stuurt die alles wel netjes door.
Maar ik zal de mail erin zetten :)
Maar ik zal de mail erin zetten :)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
$content[] = '<p><b>Het resultaat, de input:</b></p>';
$content[] = '<ul>';
foreach($_SESSION['kvth'] as $key => $value)
{
if(!empty($value)){
$content[] = '<li>'.$key.': '.$value.'</li>';
}
}
$content[] = '</ul>';
if(isset($content))
{
foreach($content as $line)
{
$mail = $line;
}
}
$headers = "From: \"DAH Regio Oost\" <".$cfg['email'].">\r\n";
$headers .= "Reply-To: \"".$_SESSION['kvth']['naam']."\" <".$_SESSION['kvth']['email'].">\n";
$headers .= "Return-Path: Mail-Error <".$_SESSION['kvth']['email'].">\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Transfer-Encoding: 8bit\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
$bericht = '
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
</head>
<body>
'. $mail.'
<br />
<br />
--------------------------------------------------------------------------<br />
<b>Datum:</b> '.date("d-m-Y @ H:i:s").'<br />
<b>IP:</b> <a href=\"http://sunny.nic.com/cgi-bin/whois?domain='.$_SERVER['REMOTE_ADDR'].'\">'.$_SERVER['REMOTE_ADDR'].'</a><br />
<b>Host:</b> '.gethostbyaddr($_SERVER['REMOTE_ADDR']).'<br />
</body>
</html>';
[/code]
$content[] = '<p><b>Het resultaat, de input:</b></p>';
$content[] = '<ul>';
foreach($_SESSION['kvth'] as $key => $value)
{
if(!empty($value)){
$content[] = '<li>'.$key.': '.$value.'</li>';
}
}
$content[] = '</ul>';
if(isset($content))
{
foreach($content as $line)
{
$mail = $line;
}
}
$headers = "From: \"DAH Regio Oost\" <".$cfg['email'].">\r\n";
$headers .= "Reply-To: \"".$_SESSION['kvth']['naam']."\" <".$_SESSION['kvth']['email'].">\n";
$headers .= "Return-Path: Mail-Error <".$_SESSION['kvth']['email'].">\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Transfer-Encoding: 8bit\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
$bericht = '
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
</head>
<body>
'. $mail.'
<br />
<br />
--------------------------------------------------------------------------<br />
<b>Datum:</b> '.date("d-m-Y @ H:i:s").'<br />
<b>IP:</b> <a href=\"http://sunny.nic.com/cgi-bin/whois?domain='.$_SERVER['REMOTE_ADDR'].'\">'.$_SERVER['REMOTE_ADDR'].'</a><br />
<b>Host:</b> '.gethostbyaddr($_SERVER['REMOTE_ADDR']).'<br />
</body>
</html>';
[/code]
$mail zal alleen de laatste $line bevatten omdat je $mail steeds overschrijft.
Ik zou het zo doen:
Ik zou het zo doen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$bericht = '
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
</head>
<body>
<ul>';
foreach($_SESSION['kvth'] as $key => $value)
{
if(!empty($value)){
$bericht .= '<li>'.$key.': '.$value.'</li>';
}
}
$bericht .= ' </ul>
<br />
<br />
'. $mail.'
<br />
<br />';
// enzovoort
?>
$bericht = '
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
</head>
<body>
<ul>';
foreach($_SESSION['kvth'] as $key => $value)
{
if(!empty($value)){
$bericht .= '<li>'.$key.': '.$value.'</li>';
}
}
$bericht .= ' </ul>
<br />
<br />
'. $mail.'
<br />
<br />';
// enzovoort
?>
Gewijzigd op 28/12/2013 14:24:38 door - SanThe -
Thanks, super, dit moet hem zijn! :) Eindelijk werkt het, geweldig fijn! :)
Dan heb ik nog 1 vraagje, daar ga ik maar geen nieuwe topic voor aanmaken indien het hier opgelost kan worden.
deelname_zadeltijdsrit Dit is een veldnaam. Echter door het script, zal het veldnaam er ook zo uitrollen. Voor in de mail is dit dan weer erg lelijk.
Is er een mogelijk om met spaties in formuliervelden te werken, of dit op een andere manier op te lossen?
Of moet dit zo kunnen:
$formuliervelden = array(
'naam' => 'text',
'geboortedatum' => 'text',
'adres' => 'text',
'postcode' => 'text',
'woonplaats' => 'Woonplaats',
'deelname_zadeltijdsrit' => Deelname aan zadeltijdsrit',
Echter, dit geeft dubbele weergaven. Iemand een idee?
Dan heb ik nog 1 vraagje, daar ga ik maar geen nieuwe topic voor aanmaken indien het hier opgelost kan worden.
deelname_zadeltijdsrit Dit is een veldnaam. Echter door het script, zal het veldnaam er ook zo uitrollen. Voor in de mail is dit dan weer erg lelijk.
Is er een mogelijk om met spaties in formuliervelden te werken, of dit op een andere manier op te lossen?
Of moet dit zo kunnen:
$formuliervelden = array(
'naam' => 'text',
'geboortedatum' => 'text',
'adres' => 'text',
'postcode' => 'text',
'woonplaats' => 'Woonplaats',
'deelname_zadeltijdsrit' => Deelname aan zadeltijdsrit',
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
foreach($nettevelden as $key1)
{
foreach($_SESSION['kvth'] as $key => $value)
{
if(!empty($value)){
$content[] = '<li><b>'.$key1.'</b>: '.$value.'</li>';
}
}
}
{
foreach($_SESSION['kvth'] as $key => $value)
{
if(!empty($value)){
$content[] = '<li><b>'.$key1.'</b>: '.$value.'</li>';
}
}
}
Echter, dit geeft dubbele weergaven. Iemand een idee?
Gewijzigd op 28/12/2013 14:56:36 door Roel H
$content[] = '<li><b>'.str_replace('_',' ',$key1).'</b>: '.$value.'</li>';
Toevoeging op 28/12/2013 15:22:48:
In mijn code:
$bericht .= '<li>'.$key.': '.$value.'</li>';
wordt:
$bericht .= '<li>'.str_replace('_',' ',$key).': '.$value.'</li>';
Toevoeging op 28/12/2013 15:22:48:
In mijn code:
$bericht .= '<li>'.$key.': '.$value.'</li>';
wordt:
$bericht .= '<li>'.str_replace('_',' ',$key).': '.$value.'</li>';
Code (php)
1
2
3
4
2
3
4
<?php
$veldnaam = 'deelname_aan_zadeltijdsrit';
echo ucfirst(str_replace('_', ' ', $veldnaam)); //Deelname aan zadelstijdrit
?>
$veldnaam = 'deelname_aan_zadeltijdsrit';
echo ucfirst(str_replace('_', ' ', $veldnaam)); //Deelname aan zadelstijdrit
?>
Overigens, waarom gebruik je de manier van SanThe niet om het bericht samen te stellen?
Nu maak je alleen maar een omweg voor het zelfde resultaat
Bedankt voor het meedenken, maar ik heb een nog, voor mij, makkelijkere manier gevonden.
$nettevelden is een array, waarbij $key eruit wordt gehaald
$nettevelden is een array, waarbij $key eruit wordt gehaald
Dat kan ook goed, maar dan nog: waarom in de foreach een array samnestellen, en dan daarna die array nog eens met een foreach uitlezen?
Wat jij doet is:
Ik heb een doos A met dingen en die moeten in doos C, ik doe ze eerst allemaal in en doos B en vandaar uit weer in doos C.
Wat jij doet is:
Ik heb een doos A met dingen en die moeten in doos C, ik doe ze eerst allemaal in en doos B en vandaar uit weer in doos C.
Gewijzigd op 28/12/2013 15:53:33 door Ger van Steenderen
Nou ik ben dan benieuwd hoe jij het zou doen. De manier zoals jij het hebt, maakt het voor mij niet makkelijker namelijk. Dan moet ik de 'name' namen bij de velden te lang en ingewikkeld maken.
Ik ben erg benieuwd, wil altijd bij leren!
Ik ben erg benieuwd, wil altijd bij leren!
Het gaat niet om hoe je met die veldnamen omgaat(dat is prima) maar hoe dat je het bericht samen stelt:
Je gebruikt 2 foreach loops terwijl het 'net zo makkelijk met 1 kan.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$content[] = '<p><b>Het resultaat, de input:</b></p>';
$content[] = '<ul>';
foreach($_SESSION['kvth'] as $key => $value)
{
if(!empty($value)){
$content[] = '<li>'.$key.': '.$value.'</li>';
}
}
$content[] = '</ul>';
if(isset($content)) //overbodig bestaat al
{
foreach($content as $line) {
//......
}
?>
$content[] = '<p><b>Het resultaat, de input:</b></p>';
$content[] = '<ul>';
foreach($_SESSION['kvth'] as $key => $value)
{
if(!empty($value)){
$content[] = '<li>'.$key.': '.$value.'</li>';
}
}
$content[] = '</ul>';
if(isset($content)) //overbodig bestaat al
{
foreach($content as $line) {
//......
}
?>
Je gebruikt 2 foreach loops terwijl het 'net zo makkelijk met 1 kan.
Klopt daar heb je gelijk in, daarin kan ik nog verbeteren, helemaal waar!
Ben al blij dat ik zover ben gekomen als nu, verbeter mezelf steeds meer en leer bij.
Ik zit nu nog met het tellen, zoals je misschien in m'n andere topic ziet en dan ben ik zo goed als klaar.
Daarna mag ik proberen nummer 2 te maken, waarbij ik nu al een heleboel geleerd heb en daarmee kan werken.
Ben al blij dat ik zover ben gekomen als nu, verbeter mezelf steeds meer en leer bij.
Ik zit nu nog met het tellen, zoals je misschien in m'n andere topic ziet en dan ben ik zo goed als klaar.
Daarna mag ik proberen nummer 2 te maken, waarbij ik nu al een heleboel geleerd heb en daarmee kan werken.




