login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Bewerken in winkelwagen probleem. (Opgelost)

Offline GijsB - 11/11/2008 11:32 (laatste wijziging 11/11/2008 18:10)
Avatar van GijsBNieuw 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

  1. elseif ($_POST['submit'] == "Bewerken") {
  2.  
  3. //Foreach lus voor elk element te bekijken
  4. foreach($_POST['aantal'] as $sleutel => $waarde) {
  5.  
  6.  
  7. $prid = $sleutel;
  8. $aantal = $waarde;
  9. $blabla2 = $_POST['blabla'];
  10.  
  11.  
  12. //Als het aantal op 0 gezet is
  13. if($aantal == 0) {
  14.  
  15. //De sessie verwijderen,
  16. unset($_SESSION['wagen'][$blabla2][$prid]);
  17.  
  18. }
  19.  
  20. //Als het aantal groter dan 0 is
  21. elseif($aantal > 0) {
  22.  
  23. //Aantal aanpassen aan opgegeven waarde
  24. $_SESSION['wagen'][$blabla2][$prid] = $aantal;
  25.  
  26. }
  27. }
  28.  
  29. }


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 )

2 antwoorden

Gesponsorde links
Offline Ultimatum - 11/11/2008 11:43
Avatar van Ultimatum PHP expert Draai je sessie eens om dan. $_SESSION['wagen'][*productid*][*maat*]: Op deze manier kan je door slechts 2 keys in de sessie te gebruiken alle maten weer ophalen.
  1. <?php
  2. echo '<pre>', print_r($_SESSION['wagen']['0123']) '</pre>';
  3. ?>

Geeft alle maten van product 0123 terug. Bedoel je dit of snap ik je niet?
Offline GijsB - 11/11/2008 11:59 (laatste wijziging 11/11/2008 18:10)
Avatar van GijsB Nieuw lid Ik denk niet echt dat je begrijpt wat ik bedoel.
Wat begrijp je niet volledig van mijn uitleg dan leg ik dat ff anders uit... 

EDIT: Goede manier gevonden en dus ook opgelost 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.204s