Hallo,
Ik heb een probleem met mijn shopping cart, 1 product toevoegen ging prima maar op het moment dat ik meerdere producten tegelijk wil invoeren doormiddel van een while loop krijg ik dubbele records(artikelen) in mijn sessie. Ook bij een for loop doet ie hetzelfde!
Dit is de uitkomst die ik krijg als ik 3 artikelen bestel tegelijk:
Artnr. -- aantalbestelt
100681--1
100681--1
199011--4
100681--1
100681--1
199011--4
199143--2
Ik weet dat het door de dubbele loop komt maar kan er maar niet achterkomen wat het probleem precies is, heb al van alles geprobeert maar wil me niet lukken.
<?php
// add.php
session_start();
echo $_POST['aantal_records'];
$aantal = $_POST['aantal_records'];
$v=1;
while($v <= $aantal)
{ $v++;
$product= 'p'.$v;
$hoeveel= 'h'.$v;
if (!empty($_POST['h'.$v]))
{
// Het product wat we toevoegen moeten we eerst controleren
if(is_numeric($_POST['p'.$v])) $productnummer = $_POST['p'.$v];
else exit("Verzin een mooie foutmelding als productnummer geen integer is.");
if(is_numeric($_POST['h'.$v])) $hoeveelheid = $_POST['h'.$v];
else exit( header("Location: /NL/error/&error=1") );
// Kijken of er wel iets besteld is?
if ($hoeveelheid == 0) {
echo header("Location: /NL/error/&error=2") ;
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
};
if (!empty($_SESSION['cart'])){
// Winkelwagen opsplitsen op de pipe
$wagen = explode("|",$_SESSION['cart']);
// Winkelwagen inhoud tellen
$count = count($wagen);
// En controleren of het product al in de winkelwagen zit
$add = 0; // var om later te kijken of we moeten toevoegen
foreach($wagen 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] = $hoeveelheid; // Nieuwe hoeveelheid is oude + nieuwe
$add = 1; // 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];
} ;
echo $product[0]."--".$product[1]."</br>";
} ;
if ($add == 0) { // Als we dus wel moeten toevoegen
$_SESSION['cart'] = $_SESSION['cart']."|".$productnummer.",".$hoeveelheid;
};
};
};
}
echo "De melding is succesvol opgenomen";
// forward to cart
echo"<a href=\"bestelling.php\" target=\"_self\">klik hier</a>";
?>
538 views