Winkelwagen updaten
Juist.. in de winkelwagen hadden we een formulier gemaakt met een hoop vars (ligt natuurlijk ook aan de inhoud). Daarmee kunnen we de hoeveelheden gemakkelijk aanpassen. Dat doen we dus op deze pagina!
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
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
<?php
// update_cart.php
session_start();
// Eenzijdig, maar kijken of die bestaat
if (empty($_SESSION['cart'])) {
// Nee dus, terugsturen!
header("Location: index.php");
} else {
// Exploden
$cart = explode("|",$_SESSION['cart']);
// Tellen
$count = count($cart);
// Alle producten langslopen
foreach($cart as $products) {
// Split
/*
$product[x] -->
x == 0 -> product id
x == 1 -> hoeveelheid
*/
$product = explode(",",$products);
$i++;
$postedProduct = "productnummer_".$i; // Deze twee om later de geposte waarde te 'spoofen'
$postedQuantity = "hoeveelheid_".$i;
if ($product[0] == $_POST[$postedProduct] && $_POST[$postedQuantity] > 0) // hier dus
{
// Update pro
$inNewCart = $product[0].",".$_POST[$postedQuantity];
$newCart = $newCart."|".$inNewCart;
}
}
// En weer die luiheid, dus die eerste | eraf...
$newCart = substr($newCart,1);
// Oude winkelwagen weg, nieuwe terug
session_unset($_SESSION['cart']);
$_SESSION['cart'] = $newCart;
// En weer terugsturen
header("Location: cart.php");
}
?>
// update_cart.php
session_start();
// Eenzijdig, maar kijken of die bestaat
if (empty($_SESSION['cart'])) {
// Nee dus, terugsturen!
header("Location: index.php");
} else {
// Exploden
$cart = explode("|",$_SESSION['cart']);
// Tellen
$count = count($cart);
// Alle producten langslopen
foreach($cart as $products) {
// Split
/*
$product[x] -->
x == 0 -> product id
x == 1 -> hoeveelheid
*/
$product = explode(",",$products);
$i++;
$postedProduct = "productnummer_".$i; // Deze twee om later de geposte waarde te 'spoofen'
$postedQuantity = "hoeveelheid_".$i;
if ($product[0] == $_POST[$postedProduct] && $_POST[$postedQuantity] > 0) // hier dus
{
// Update pro
$inNewCart = $product[0].",".$_POST[$postedQuantity];
$newCart = $newCart."|".$inNewCart;
}
}
// En weer die luiheid, dus die eerste | eraf...
$newCart = substr($newCart,1);
// Oude winkelwagen weg, nieuwe terug
session_unset($_SESSION['cart']);
$_SESSION['cart'] = $newCart;
// En weer terugsturen
header("Location: cart.php");
}
?>
Oi.. dat was ook best simpel. Wat gebeurde hier?
Ik loop door de foreach de hele array af met daarin de blokken met de bestelde goederen. Daarin maak ik een variabele aan die de huidige winkelwagen-item met de geposte waarden bewaar. Als laatste zet ik die variabele als de nieuwe sessie-variabele die de winkelwagen heeft. Dan stuur ik ze terug.
Nu het beste van de webshop. Het afrekenen.
« vorige pagina | volgende pagina »
Inhoudsopgave
- Voorwoord
- Technisch ontwerp
- Etalage
- Producten toevoegen
- De winkelwagen
- Verwijderen items
- Winkelwagen updaten
- Afrekenen
- Nawoord
- PHP tutorials opties
- Nieuwste PHP tutorials
- PHP tutorial toevoegen
- Gesponsorde koppelingen

