PHP gevorderde |
|
Beste,
Ik heb het volgende script om een Product aan het winkelwagentje toe te voegen:
<?php
// add.php
session_start();
// Het product wat we toevoegen moeten we eerst controleren
if(is_numeric($_POST['productnummer'])) $productnummer = $_POST['productnummer'];
else exit("Verzin een mooie foutmelding als productnummer geen integer is.");
if(is_numeric($_POST['hoeveelheid'])) $hoeveelheid = $_POST['hoeveelheid'];
else exit("Wederom een leuke foutmelding. Nu als het aantal geen getal is.");
// Kijken of er wel iets besteld is?
if ($hoeveelheid == 0) {
echo "<p>Ja dag Jan! 0 bestellen doen we niet aan!</p>\n";
echo "<p><a href=\"javascript:history.back()\">Hupsakee, een pagina in het verleden!</a></p>\n";
exit();
}
// Controleren of er al inhoud is op de winkelwagen
if (empty($_SESSION['cart'])){
// Nee dus, een nieuwe maken
$_SESSION['cart'] = $productnummer.",".$hoeveelheid; // Het productnummer,hoeveelheid staat dus in een sessie
} else {
// Winkelwagen opsplitsen op de pipe
$cart = explode("|",$_SESSION['cart']);
// Winkelwagen inhoud tellen
$count = count($cart);
// En controleren of het product al in de winkelwagen zit
$add = TRUE; // var om later te kijken of we moeten toevoegen
foreach($cart as $products)
{
// Exploden
/*
$product[x] -->
x == 0 -> productnummer
x == 1 -> hoeveelheid
*/
$product = explode(",",$products);
if ($product[0] == $productnummer) {
// Product al in de winkelwagen
$product[1] = $product[1] + $hoeveelheid; // Nieuwe hoeveelheid is oude + nieuwe
$add = FALSE; // Dus niet toevoegen
}
// En weer in de sessie zetten
$i++;
if ($i == 1) {
$_SESSION['cart'] = $product[0].",".$product[1];
} else {
$_SESSION['cart'] = $_SESSION['cart']."|".$product[0].",".$product[1];
}
}
if ($add) { // Als we dus wel moeten toevoegen
$_SESSION['cart'] = $_SESSION['cart']."|".$productnummer.",".$hoeveelheid;
}
}
// forward to cart
header("Location: cart.php");
?>
<?php // add.php // Het product wat we toevoegen moeten we eerst controleren if(is_numeric($_POST['productnummer'])) $productnummer = $_POST['productnummer']; else exit("Verzin een mooie foutmelding als productnummer geen integer is."); if(is_numeric($_POST['hoeveelheid'])) $hoeveelheid = $_POST['hoeveelheid']; else exit("Wederom een leuke foutmelding. Nu als het aantal geen getal is."); // Kijken of er wel iets besteld is? if ($hoeveelheid == 0) { echo "<p>Ja dag Jan! 0 bestellen doen we niet aan!</p>\n"; echo "<p><a href=\"javascript:history.back()\">Hupsakee, een pagina in het verleden!</a></p>\n"; } // Controleren of er al inhoud is op de winkelwagen if (empty($_SESSION['cart'])){ // Nee dus, een nieuwe maken $_SESSION['cart'] = $productnummer.",".$hoeveelheid; // Het productnummer,hoeveelheid staat dus in een sessie } else { // Winkelwagen opsplitsen op de pipe $cart = explode("|",$_SESSION['cart']); // Winkelwagen inhoud tellen // En controleren of het product al in de winkelwagen zit $add = TRUE; // var om later te kijken of we moeten toevoegen foreach($cart as $products) { // Exploden /* $product[x] --> x == 0 -> productnummer x == 1 -> hoeveelheid */ if ($product[0] == $productnummer) { // Product al in de winkelwagen $product[1] = $product[1] + $hoeveelheid; // Nieuwe hoeveelheid is oude + nieuwe $add = FALSE; // Dus niet toevoegen } // En weer in de sessie zetten $i++; if ($i == 1) { $_SESSION['cart'] = $product[0].",".$product[1]; } else { $_SESSION['cart'] = $_SESSION['cart']."|".$product[0].",".$product[1]; } } if ($add) { // Als we dus wel moeten toevoegen $_SESSION['cart'] = $_SESSION['cart']."|".$productnummer.",".$hoeveelheid; } } // forward to cart ?>
Als je twee keer hetzelfde product toevoegd, dan ziet het winkelwagentje het als twee verschillende producten.
Hoe kan je kijken of het productnummer al bestaat en dan alleen de hoeveelheid verhoogd?
Hopende op een passende oplossen,
|