Hallo Allemaal,

Ik ben bezig om een bestelling met bestelde artikelen in een mail te krijgen zodat deze als factuur kan dienen.

Het versturen wil mij wel lukken alleen ik weet niet hoe ik het overzicht in die mail kan krijgen.

<?php
function ShowOverzicht()
{
$klantlogin = $_SESSION["loginnaam"];
$sql_naamklant = ("SELECT * FROM klant WHERE (login = '$klantlogin')");
$naamklant = mysql_query($sql_naamklant);
while ($record = mysql_fetch_array($naamklant))
{
echo "<b>".$record['voornaam']." ".$record['achternaam']."</b> ";
}
echo "u wilt het volgende bestellen:<br><br>";

if (count($_SESSION['winkelwagen'])>0)
{
echo "<table width= '500'>";
echo "<tr><td>Aantal</td><td>Type</td><td>Artikelnr.</td><td>Prijs in €</td></tr>";
$totaal=0;
foreach ($_SESSION['winkelwagen'] as $key=>$val )
{
$sql="SELECT * FROM artikel WHERE artikelnummer = '$key'";
$resultaat = mysql_query($sql);
while($record = mysql_fetch_array($resultaat))
{
$prijs = $val * $record[7];
echo "<tr><td width='60'>$val</td><td width='200'>".$record[4]."</td><td width='200' >".$record[1]."</td><td width= '60' align='right'>".number_format($prijs, 2, ',', '. ')."</td></tr>";
$totaal = $totaal + ($record[7] * $val);
}
}
echo "<tr><td></td><td></td><td></td><td >__________</td></tr>";
echo "<tr><td></td><td></td><td>Totaal:</td><td>".number_format($totaal, 2, ',', '. ')."</td></tr>";
echo "<tr><td>";
echo '<form action ="'.$_SERVER["PHP_SELF"].'" method ="POST">';
echo "<input type='submit' value='Bestellen' name='bestellen' />";
echo "</form>";
echo "</td><td></td><td></td><td></td></tr>";
echo "</table>";
echo "<br>";
}

else
{
echo "Op dit moment heeft u nog niets besteld.<br>";
echo "Gaat u gerust verder met winkelen in onze webshop";
}

####################################
### Versturen bestelde artikelen ###
####################################
$date = date ("yz ");

if (isSet($_POST["bestellen"]))
{
///// Dit wordt berstuurd naar de klant /////
$klantlogin = $_SESSION["loginnaam"];
$sql_naamklant = ("SELECT * FROM klant WHERE (login = '$klantlogin')");
$naamklant = mysql_query($sql_naamklant);
while ($record = mysql_fetch_array($naamklant))
{
// Dit wordt naar de besteller gestuurd
$header = "From: [email protected]\n"
. "Reply-To: $email\n";
$subject = "Bestelling webshop!";
$email_to = "".$record['email']."";
$message = "".$record['geslacht']." ".$record['voornaam']." ".$record['achternaam'].", \n"
. "".$record['adres']."\n"
. "".$record['postcode']." ".$record['plaats']."\n"
. "\n"
. "\n"
. "Geachte ".$record['geslacht']." ".$record['voornaam']." ".$record['achternaam'].",\n\n"
. "U heeft het volgende bij ons besteld:\n\n"
. "================================================\n"
. "\n"
. "Hier moeten de gegevens van de bestelde artikelen komen te staan\n"
. "\n"
. "================================================\n\n"
. "U dient het totaal bedrag binnen 10 werkdagen overmaken op Rekeningnr: 123123123123\n"
. "Onder vermelding van IB$date".$record['achternaam']."\n\n"
. "Dank u voor uw bestelling,\n"
. "Martijn \n";
"\n";
@mail($email_to, $subject ,$message ,$header ) ;

///// Dit wordt verstuurd naar de afdeling verkoop
$header = "From: ".$record['email']."\n"
. "Reply-To:".$record['email']."\n";
$subject = "Internetbestelling - IB$date".$record['achternaam']."";
$email_to = "[email protected]";
$message = "Internetbestelling IB$date".$record['achternaam']." \n\n"
. "De volgende produkten zijn besteld:\n\n"
. "=============================================\n"
. "\n"
. "Hier moeten de bestelde produkten staan\n"
. "\n"
. "=============================================\n\n"
. "U kunt de bestelling sturen naar: \n\n"
. "".$record['geslacht']." ".$record['voornaam']." ".$record['achternaam'].", \n"
. "".$record['adres']."\n"
. "".$record['postcode']." ".$record['plaats']."\n"
. "Telefoon: ".$record['telefoon']."\n"
. "\n"
. "\n"
. "*****************************************************************************************************************************\n"
. "LET OP: Bij een bestelling moeten altijd eerst de adresgegevens gecontroleerd worden voordat de bestelling uitgevoerd wordt.\n"
. "*****************************************************************************************************************************";
"\n";
@mail($email_to, $subject ,$message ,$header ) ;

///// Afhandeling Bestelling - Bericht op website zelf
echo "Geachte ".$record['geslacht']." ".$record['voornaam']." ".$record['achternaam'].",<br><br>\n";
echo "U heeft een bestelling geplaatst op onze webshop.<br><br>\n";
echo "Een email met de bestelling is naar het volgende emailadres gestuurd: <b>".$record['email']."</b>";
echo "<br>\n";
echo "Deze email is tevens de factuur voor het bestelde<br>\n";
echo "U kunt het bedrag overmaken op rekeningnr: <b>123123123</b><br>\n";
echo "Onder vermelding van <b>IB $date".$record['achternaam']."</b><br><br>\n";
echo "Bedankt voor uw bestelling,<br>\n";
echo "Martijn<br><br>\n";
echo "<br>\n";
}
}
}
?>

Dit is het gedeelte wat voor het "overzichtje" zorgt ik had graag gewilt dat dit tussen de de regels met ========= komt te staan.
<?php
if (count($_SESSION['winkelwagen'])>0)
{
echo "<table width= '500'>";
echo "<tr><td>Aantal</td><td>Type</td><td>Artikelnr.</td><td>Prijs in €</td></tr>";
$totaal=0;
foreach ($_SESSION['winkelwagen'] as $key=>$val )
{
$sql="SELECT * FROM artikel WHERE artikelnummer = '$key'";
$resultaat = mysql_query($sql);
while($record = mysql_fetch_array($resultaat))
{
$prijs = $val * $record[7];
echo "<tr><td width='60'>$val</td><td width='200'>".$record[4]."</td><td width='200' >".$record[1]."</td><td width= '60' align='right'>".number_format($prijs, 2, ',', '. ')."</td></tr>";
$totaal = $totaal + ($record[7] * $val);
}
}
echo "<tr><td></td><td></td><td></td><td >__________</td></tr>";
echo "<tr><td></td><td></td><td>Totaal:</td><td>".number_format($totaal, 2, ',', '. ')."</td></tr>";
?>

Concreet is dus mijn vraag : Hoe krijg ik die gegevens in dit mailtje?

Alvast bedankt,

Martijn
Niemand een idee?
Maak van je laatste stukje code, wat het overzicht laat zien, een functie (bijv. show_products()), en gooi die in de variabele die de email opstelt?

Je moet ook even de juiste headers meesturen, zodat je HTML kan gebruiken in de mail. Zie daarvoor ook deze tutorial. Let erop dat je een complete HTML-pagina (dus incl. <html><head></head><body></body></html> etc.) moet verzenden!

By the way...je code kan een stuk efficiënter ;)

Edit:
Dit topic vind je misschien ook wel interessant... :)
Kasper,

Bedankt voor je reaktie, ik zal de topics die je hebt aangedragen nog is goed doorlezen.

Ik weet dat mijn code een stuk efficienter kan maar ik weet nog niet hoe, ben nog steeds een beginneling in php. Alle tips over hoe het beter kan zijn natuurlijk van harte welkom ;-))

Maar ik heb het kunnen oplossen, heb gebruik gemaakt van de phpmailer class.

Er moet nog het eea aangepast worden maar ik krijg in ieder geval de gegevens uit het winkelwagentje via de mail verzonden.

Dit is hoe (inefficient) ik het gedaan heb:
<?php
if (isSet($_POST["bestellen"]))
{
### Klantgegevens ophalen voor het versturen ###
$klantlogin = $_SESSION["loginnaam"];
$sql_naamklant = ("SELECT * FROM klant WHERE (login = '$klantlogin')");
$naamklant = mysql_query($sql_naamklant);

{
require("phpmailer/class.phpmailer.php");
while ($record = mysql_fetch_array($naamklant))
{
$mail = new PHPMailer();

$mail->From = "[email protected]";
$mail->FromName = "Martijn";
$mail->Subject = "Internetbestelling - IB$date".$record['achternaam']."";

### Dit moet verstuurd worden ###
### Naar dit emailadres verturen
$email = $record['email'];

### HTML Weergave ###
$body = "Bestelling Webshop - IB$date".$record['achternaam']."<br>";
$body .= "".$record['voornaam']." ".$record['achternaam']."";
$body .= "<table border='1' width= '500'>";
$body .= "<tr><td>Aantal</td><td>Type</td><td>Artikelnr.</td><td>Prijs in €</td></tr>";
$totaal=0;
foreach ($_SESSION['winkelwagen'] as $key=>$val )
{
$sql="SELECT * FROM artikel WHERE artikelnummer = '$key'";
$resultaat = mysql_query($sql);
while($record = mysql_fetch_array($resultaat))
{
$prijs = $val * $record[7];
$body .= "<tr><td width='60'>$val</td><td width='200'>".$record[4]."</td><td width='200' >".$record[1]."</td><td width= '60' align='right'>".number_format($prijs, 2, ',', '. ')."</td></tr>";
$totaal = $totaal + ($record[7] * $val);
}
}
$body .= "<tr><td></td><td></td><td></td><td >__________</td></tr>";
$body .= "<tr><td></td><td></td><td>Totaal:</td><td>".number_format($totaal, 2, ',', '. ')."</td></tr>";
$body .= "<tr><td>";
$body .= "</td><td></td><td></td><td></td></tr>";
$body .= "</table>";

$body = nl2br($body); // vervang enters door <br>

### Plain tekst weergave (voor non-html gebruikers) ###
$tekst_body = "Dit moet de non-html tekst zijn";

$mail->Body = $body;
$mail->AltBody = $tekst_body;

$mail->AddAddress($email);

// versturen
if(!$mail->Send())
echo "De mail is niet goed verstuurd!<br>";

// Wis de mailadressen weer
$mail->ClearAddresses();

}

echo "Een factuur is naar ".$email." u vertuurd verstuurd.";
}
?>
Moet het nog wel aanpassen zodat het ook naar de winkeleingenaar kan.
Nogmaals bedankt,
Martijn

Reageren