Gegevens uit de database mailen met PHP
Ik ben wat aan het spelen met het versturen van mails via een eigen website. Als content kan ik meegeven: gewoon tekst, html en variabelen. Maar is het ook mogelijk om gegevens uit een database het PHP-mail te versturen?
Bijvoorbeeld:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$query = mysql_query("SELECT * FROM user");
while($abc = mysql_fetch_assoc($query))
{
$user = $abc['user_naam'];
echo $user."<br />";
}
?>
$query = mysql_query("SELECT * FROM user");
while($abc = mysql_fetch_assoc($query))
{
$user = $abc['user_naam'];
echo $user."<br />";
}
?>
Dit geeft in de browser een mooi lijstje met namen (en ja, ik heb ook geconnect en een database geselecteerd enzo, maar dat staat niet in de code). Kan ik dat lijstje ook mailen?
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
// Mijn mailfunctie
$to = "[email protected];
$subject = "testmail";
$content = ?????????
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
?>
// Mijn mailfunctie
$to = "[email protected];
$subject = "testmail";
$content = ?????????
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
?>
Het mailen zelf werkt ook, want ik heb al verschillende testmails verstuurd met tekst, html-code en variabelen als $content.
Mijn vraag is dus of het ook met databasegegevens kan.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$content = ''; // even bekendmaken
$query = mysql_query("SELECT * FROM user");
while($abc = mysql_fetch_assoc($query))
{
$content .= $abc['user_naam'] . "<br />"; // data toevoegen
}
?>
$content = ''; // even bekendmaken
$query = mysql_query("SELECT * FROM user");
while($abc = mysql_fetch_assoc($query))
{
$content .= $abc['user_naam'] . "<br />"; // data toevoegen
}
?>
Zo zit het in $content.
Maar nu stap 2 :)
Ik wil een bestelling uit een winkelwagen mailen. Hieronder zie je het script (dat niet werkt).
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
// Hier staan $to, $subject en $content
for ($i=0; $i<count($winkelwagen); $i++)
{
$zoek = mysql_query("SELECT * FROM Product WHERE product_ID = '".$_SESSION['winkelwagen'][$i]."'");
while($abc = mysql_fetch_assoc($zoek))
{
$content .= $abc['prod_naam']." - ";
$content .= "€ ".number_format($abc['prod_prijs'],"2",",","")."<br />";
}
}
// hier staat mail($to, $subject, $content, $headers);
?>
// Hier staan $to, $subject en $content
for ($i=0; $i<count($winkelwagen); $i++)
{
$zoek = mysql_query("SELECT * FROM Product WHERE product_ID = '".$_SESSION['winkelwagen'][$i]."'");
while($abc = mysql_fetch_assoc($zoek))
{
$content .= $abc['prod_naam']." - ";
$content .= "€ ".number_format($abc['prod_prijs'],"2",",","")."<br />";
}
}
// hier staat mail($to, $subject, $content, $headers);
?>
Voorlopig wil ik alleen de productnaam en de prijs in de mail zetten. $_SESSION['winkelwagen'] is een array en hij is ook gevuld. Als ik de for-statement weghaal (en dus in plaats van $i 0 of 1 of 2 invul), werkt hij wel. Ik krijg de productnaam en de prijs uit de database netjes in mijn mail.
Maar met die for-loop erbij krijg ik een lege e-mail. Wat doe ik (nou weer) fout?
Gewijzigd op 14/12/2010 14:39:38 door Pim B
Zet dit bovenin.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
//rest
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
//rest
?>
Nu werkt het wel. Dankje!