Foreach statement en mail
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
Waarom plaats je daar dan niet de code van? ;-)
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]
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 -
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
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
$nettevelden is een array, waarbij $key eruit wordt gehaald
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
Ik ben erg benieuwd, wil altijd bij leren!
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.
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.