Ik ben bezig met een allersimpelst webshop scriptje. Wanneer men op de bestelknop klikt dan wordt er 1 artikel in het mandje geplaatst. Wanneer ze nogmaals op bestel klikken, dan moet er 1 bij worden opgeteld. Echter, er gaat iets fout, want er worden elke keer 2 bij opgeteld.

Hier het script:

switch($action) {	//decide what to do

				case "add":
					$_SESSION['cart'][$product_id]['quant']++;
					break;

				case "remove":
					$_SESSION['cart'][$product_id]['quant']--;
					if ($_SESSION['cart'][$product_id]['quant'] == 0) 			unset($_SESSION['cart'][$product_id]); //if the quantity is zero, remove it completely (using the 'unset' function) - otherwise is will show zero, then -1, -2 etc when the user keeps removing items.
					break;

				case "empty":
					unset($_SESSION['cart']); //unset the whole cart, i.e. empty the cart.
					break;		}


De link waar men op klikt:
[code]
<a class="button" href="webshop.php?action=add&product_id=<? echo $row->id; ?>">Bestel</a>
[code]

En om 1 van het artikel te verwijderen:
[code]
<a class="button" href="webshop.php?action=remove&product_id=<? echo $row->id; ?>">Bestel</a>
[code]

En dan nog een linkje voor het leeggooien van de winkelwagen, de empty, maar dat spreekt voor zich.

Kunnen jullie mij vertellen wat er mis gaat?
ik wed dat de switch twee keer wordt aangeroepen. Waarom kan ik uit dit gegeven stukje code niet opmaken.

In algemene zin adviseer ik om na webshop.php?action=add te directen naar webshop.php zodat de '?action=add' weer uit de URL balk verdwijnt. Je doet dat zo:

<?php
header('Location: webshop.php');
?>

Doe dit voordat je aan je output begint.
Ik heb dit direct na de increment functie ingevoegd, maar het lijkt helemaal niets te doen. Na het toevoegen (van uiteraard 2x het artikel), blijf ik in de url de action en product_id zien. Ik heb ook al dubbelquotes gebruikt en een : na Location, ook dat werkt niet.

Ik heb ook al geprobeerd om via if statement te werken, dus geen switch functie.
if ($action == "add") { inrementfunctie... header enz. }

Ook dat verandert niets.
Ik heb uiteindelijk het script omgebouwd en stuur de info via form post door. Nu doet hij het wel :S

Reageren