Winkelscript
Ik heb op deze site de output staan.: klikkie
Nu heb ik een probleem waar ik niet uitkom. Wanneer het product al in het mandje ligt, is het de bedoeling dat als men het product nog een keer toevoegt, het aantal 2 wordt.
Het eerste product gaat goed, kan je blijven toevoegen. Wanneer je het tweede product toevoegt gaat het goed als je eentje toevoegt, en daarna gaan de andere producten weg. (ik weet dat dit komt door regel 33). Nu is mijn vraag hoe ik het moet oplossen dat het beide kanten opwerkt. Kan ik een rij uit een sessie verwijderen oid? Of hoe zou ik dit moeten aanpakken?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
session_start();
if(isset($_POST['ipod'])){
$prijs = $_POST['prijs']; //de waardes die men ingeeft
$product = $_POST['product'];
$aantal = $_POST['aantal'];
$cart = explode("|" , $_SESSION['cart']); //product voor product variabel maken.
$inhoud_mand = count($cart); //hoeveel producten zijn er
for($i = 0; $i < $inhoud_mand; $i++){ //checken of deze producten ook eerder al voorkomen
$product_mand = explode("," , $cart[$i]);
echo $product . $product_mand[0];
echo "<br/>";
if($product == $product_mand[0]){ // ja dat doen ze, dus dan moet het erbij opworden geteleld.
$ready = 1;
$id = $i;
}
}
if($ready == 1){ //oke het is dubbel
echo "zit er al in";
$product_mand = explode("," , $cart[$id]);
$product_mand[1] = $product_mand[1] + $aantal;
echo $aantal;
echo "<br/>";
echo $_SESSION['cart'];
$_SESSION['cart'] = $product . "," . $product_mand[1] . ", " . $prijs;
}
else{
if(empty($_SESSION['cart'])){
$_SESSION['cart'] = $product . "," . $aantal . ", " . $prijs;
}
else{
$_SESSION['cart'] =$_SESSION['cart'] ." |" . $product . "," . $aantal . ", " . $prijs;
}
}
}
else{
echo $_SESSION['cart'];
?>
<html>
<head>
</head>
<body>
<form action="index.php" method="post">
tv van 800 euro:
<input type="text" name="aantal" value="1" />
<input type="hidden" name="prijs" value="800" />
<input type="hidden" name="product" value="tv" />
<input type="submit" name="ipod" value="voeg toe"/>
</form>
<form action="index.php" method="post">
<br />
ipod van 600 euro:
<input type="text" name="aantal" value="1"/>
<input type="hidden" name="prijs" value="600" />
<input type="hidden" name="product" value="ipod" />
<input type="submit" name="ipod" value="voeg toe"/>
</form>
</form>
</body>
</html>
<?php
}
?>
session_start();
if(isset($_POST['ipod'])){
$prijs = $_POST['prijs']; //de waardes die men ingeeft
$product = $_POST['product'];
$aantal = $_POST['aantal'];
$cart = explode("|" , $_SESSION['cart']); //product voor product variabel maken.
$inhoud_mand = count($cart); //hoeveel producten zijn er
for($i = 0; $i < $inhoud_mand; $i++){ //checken of deze producten ook eerder al voorkomen
$product_mand = explode("," , $cart[$i]);
echo $product . $product_mand[0];
echo "<br/>";
if($product == $product_mand[0]){ // ja dat doen ze, dus dan moet het erbij opworden geteleld.
$ready = 1;
$id = $i;
}
}
if($ready == 1){ //oke het is dubbel
echo "zit er al in";
$product_mand = explode("," , $cart[$id]);
$product_mand[1] = $product_mand[1] + $aantal;
echo $aantal;
echo "<br/>";
echo $_SESSION['cart'];
$_SESSION['cart'] = $product . "," . $product_mand[1] . ", " . $prijs;
}
else{
if(empty($_SESSION['cart'])){
$_SESSION['cart'] = $product . "," . $aantal . ", " . $prijs;
}
else{
$_SESSION['cart'] =$_SESSION['cart'] ." |" . $product . "," . $aantal . ", " . $prijs;
}
}
}
else{
echo $_SESSION['cart'];
?>
<html>
<head>
</head>
<body>
<form action="index.php" method="post">
tv van 800 euro:
<input type="text" name="aantal" value="1" />
<input type="hidden" name="prijs" value="800" />
<input type="hidden" name="product" value="tv" />
<input type="submit" name="ipod" value="voeg toe"/>
</form>
<form action="index.php" method="post">
<br />
ipod van 600 euro:
<input type="text" name="aantal" value="1"/>
<input type="hidden" name="prijs" value="600" />
<input type="hidden" name="product" value="ipod" />
<input type="submit" name="ipod" value="voeg toe"/>
</form>
</form>
</body>
</html>
<?php
}
?>
Gewijzigd op 09/05/2011 14:34:22 door Bas Pin
Maak een multidimensionaal array in de session en werk niet met explode en dergelijk. Dat geeft, zoals je merkt, alleen maar problemen.
Heeft u misschien een suggestie hoe ik het dan aan zou moeten pakken?
http://www.phphulp.nl/php/script/overig/winkelwagen-update-van-de-tutorial/1750/winkelwagenupdatevandetutorial/1263/
Kijk hier eens naar om te beginnen, dit werkt weliswaar ook met explode maar is makkelijk aan de praat te krijgen als starter en verander dan alle plekken waar explode gebruikt wordt in een multi-dimensionale array. Gewijzigd op 09/05/2011 15:19:37 door John D
Kan ik de producten ook gewoon met $_POST erin krijgen, of moet ik daarvoor een andere functie gebruiken?