Nieuw lid |
|
Beste Sitemasters leden,
Ik kom hier niet direct met de vraag een foutmelding op te lossen/mijn script aan te passen. Dat kan ik opzich zelf wel volledig enkel zit ik met een probleem met het denken achter het script waar ik even niet uitkom
Dit is mijn script: (sorry voor het onoverzichtelijke maar sommige = tekens en dergelijke staan door plaatscode niet netjes meer onder elkaar, in notepad++ staan ze hier wel netjes onder elkaar.)
Een demo is te vinden op www.e-xchange.be/merchandising (Even het bestelproces tot de winkelwagen volgen en dan zit je in het deel waar een klein denkprobleem is.)
Mijn sessies zien er als volgt uit: $_SESSION['wagen'][*maat*][*productid*]
Bij het bewerken moet je in de winkelwagen het getal aanpassen naar 0 en dan wordt hij eruit verwijdert. Dit doet hij goed tot er meerdere maten in staan. Dan krijg je namelijk het probleem dat hij in dit stukje code
elseif ($_POST['submit'] == "Bewerken") {
//Foreach lus voor elk element te bekijken
foreach($_POST['aantal'] as $sleutel => $waarde) {
$prid = $sleutel;
$aantal = $waarde;
$blabla2 = $_POST['blabla'];
//Als het aantal op 0 gezet is
if($aantal == 0) {
//De sessie verwijderen,
unset($_SESSION['wagen'][$blabla2][$prid]);
}
//Als het aantal groter dan 0 is
elseif($aantal > 0) {
//Aantal aanpassen aan opgegeven waarde
$_SESSION['wagen'][$blabla2][$prid] = $aantal;
}
}
}
elseif ($_POST['submit'] == "Bewerken") { //Foreach lus voor elk element te bekijken foreach($_POST['aantal'] as $sleutel => $waarde) { $prid = $sleutel; $aantal = $waarde; $blabla2 = $_POST['blabla']; //Als het aantal op 0 gezet is if($aantal == 0) { //De sessie verwijderen, unset($_SESSION['wagen'][$blabla2][$prid]); } //Als het aantal groter dan 0 is elseif($aantal > 0) { //Aantal aanpassen aan opgegeven waarde $_SESSION['wagen'][$blabla2][$prid] = $aantal; } } }
de '$_POST['blabla']' van het laatste item in de winkelwagen neemt. Het verwijderen en bewerken ervan gaat dus enkel altijd goed als er maar items van 1 maat in zitten.
Als er bijvoorbeeld een item a in de maat small in zit en een item b in de maat large.
Dan zal hij bij b alles goed doen. Maar bij a zal hij bij het bewerken een nieuw item toevoegen van item a in een large. (met dan het aantal bij bewerken gegegeven) Bij het verwijderen van item a zal hij niks doen. (logisch aangezien er niks te unsetten is kun je ook niks unsetten he )
Volgen jullie nog?
Nu is dus mijn vraag, weet iemand hoe dit het gemakkelijkst op te lossen is? Het moet zoals ik zei niet heel de php oplossing te zijn (mag wel natuurlijk) maar met al een goed idee hoe ik dit gemakkelijk kan oplossen (dus enkel het denken erachter) zou ik al goed geholpen zijn.
(regel 125 - 157 echo't de winkelwagen en het bestelformulier etc )
|