Hallo,
Ik ben een webshop aan het maken en de winkelwagen werkt met een session met het ID van het product en het aantal van dat product.
Maar als ik de klanten nou een orderbevestiging wil sturen en ik laat hem de gegevens uit de database halen dan gaat dat goed als de klant 1 product heeft besteld (of een aantal van hetzelfde product) maar bij verschillende producten stuurt hij per product een nieuwe mail weet iemand hier een oplossing voor?
Groet
het werkt met zo'n soort script:
<?php
$cart = explode("|",$_SESSION['cart']);
foreach($cart as $products) {
// Split
/*
$product[x] -->
x == 0 -> product id
x == 1 -> hoeveelheid
*/
$product = explode(",",$products);
// Get product info
$sql = "SELECT *
FROM products
WHERE ID = ".$product[0]; // Weet je nog, uit die sessie
$query = mysql_query($sql) or die (mysql_error()."<br>in file ".__FILE__." on line ".__LINE__);
$pro_cart = mysql_fetch_object($query);
$i++;
Je zou eerst alle gegevens moeten verzamelen alvorens een mail te versturen. Een directe oplossing heb ik zo niet, ik weet niet hoe je script er uit ziet. Maar wat je zou kunnen doen is:
<?php
$mail_content = ''; //inhoud mailtje definieren
//gegevens uit database ophalen
$mail_content .= $row['aantaal'].' -> '.$row['product'];
Daarna mail versturen met als body $mail_content
?>
Het is wat in de lucht gepraat maar ik denk dat je er wel wat verder mee kan zo.
Verder is je manier van oplsaan in de sessievariabele ook niet echt heel handig gekozen. Je kunt veel beter gewoon een multidimensionale array in de sessievariabele zetten, dat vergemakkelijkt het uitlezen enorm.
Dus je zou de array er bijvoorbeeld zou uit kunnen laten zien:
<?php
$aBestelling = array (
array (
'product_id' => 1,
'aantal' => 19
),
array (
'product_id' => 24,
'aantal' => 1
)
);
?>
Deze klant heeft dus 19 producten met het id 1 besteld en eentje met het id 24. Uitlezen doe je vervolgens met een foreach loop.
Deze methode heeft bovendien als voordeel dat je ook nog relatief eenvoudig producten uit het winkelmandje kunt verwijderen...
Offtopic en een vraagje:
$bestelling = "".$pro_cart->name." aantal: ".$product[1]."";
Wie heeft jou deze brakke syntax geleerd? Hier staan nogal wat overbodige quotes, dat kan dus alleen maar fout gaat.
Dit is exact hetzelfde, maar dan eenvoudiger:
$bestelling = $pro_cart->name." aantal: ".$product[1];
Verder is $query geen query maar een resultset, $result is dus 100x duidelijker, en mysql_fetch_object() de meest beroerde fetch-functie die PHP in huis heeft: langzaam en heeft niks met objecten te maken.
Jullie kritiek is terecht alleen ik heb nou geen zin meer om alles te veranderen de rest werkt allemaal al dus het zou mooi zijn als dit ook nog lukt. Ik heb het op de manier van Crispijn geprobeerd maar ik hou hetzelfde probleem:
<?
// Stap 2, winkelwagen splitten en in de database zetten
$cart = explode("|",$_SESSION['cart']);
foreach($cart as $products) {
// Split
/*
$product[x] -->
x == 0 -> product id
x == 1 -> hoeveelheid
*/
$product = explode(",",$products);
// Get product info
$sql = "SELECT name, cat, price,foto
FROM products
WHERE ID = ".$product[0]; // Weet je nog, uit die sessie
$query = mysql_query($sql) or die (mysql_error()."<br>in file ".__FILE__." on line ".__LINE__);
$pro_cart = mysql_fetch_object($query);