Producten toevoegen
Bij het toevoegen van producten aan de winkelwagen kom je gelijk op één van de belangrijkste vragen in de ontwikkelfase van je webwinkel: hoe sla je het (tijdelijk) op? Je hebt de keuze uit enkele mogelijkheden:
- cookies, de bestelde producten worden in een cookie opgeslagen, dit kan door productnummer en aantal bij elkaar tussen een karakter te plaatsen. Op dat karakter kan je later weer alles uit elkaar halen. De cookies zijn natuurlijk client-side.
- sessies, zelfde als met de cookies, alleen server-side
- database, zet de productnummers en de aantallen samen met een sessiecode in een tijdelijke tabel
In het systeem wat ik pas geleden gemaakt heb, heb ik gekozen voor sessies. Daarom ook session_start() bovenaan het script.
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
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
<?php
// add.php
session_start();
// Het product wat we toevoegen moeten we eerst controleren
if(is_numeric($_POST['productnummer'])) $productnummer = $_POST['productnummer'];
else exit("Verzin een mooie foutmelding als productnummer geen integer is.");
if(is_numeric($_POST['hoeveelheid'])) $hoeveelheid = $_POST['hoeveelheid'];
else exit("Wederom een leuke foutmelding. Nu als het aantal geen getal is.");
// Kijken of er wel iets besteld is?
if ($hoeveelheid == 0) {
echo "<p>Ja dag Jan! 0 bestellen doen we niet aan!</p>\n";
echo "<p><a href=\"javascript:history.back()\">Hupsakee, een pagina in het verleden!</a></p>\n";
exit();
}
// Controleren of er al inhoud is op de winkelwagen
if (empty($_SESSION['cart'])){
// Nee dus, een nieuwe maken
$_SESSION['cart'] = $productnummer.",".$hoeveelheid; // Het productnummer,hoeveelheid staat dus in een sessie
} else {
// Winkelwagen opsplitsen op de pipe
$cart = explode("|",$_SESSION['cart']);
// Winkelwagen inhoud tellen
$count = count($cart);
// En controleren of het product al in de winkelwagen zit
$add = TRUE; // var om later te kijken of we moeten toevoegen
foreach($cart as $products)
{
// Exploden
/*
$product[x] -->
x == 0 -> productnummer
x == 1 -> hoeveelheid
*/
$product = explode(",",$products);
if ($product[0] == $productnummer) {
// Product al in de winkelwagen
$product[1] = $product[1] + $hoeveelheid; // Nieuwe hoeveelheid is oude + nieuwe
$add = FALSE; // Dus niet toevoegen
}
// En weer in de sessie zetten
$i++;
if ($i == 1) {
$_SESSION['cart'] = $product[0].",".$product[1];
} else {
$_SESSION['cart'] = $_SESSION['cart']."|".$product[0].",".$product[1];
}
}
if ($add) { // Als we dus wel moeten toevoegen
$_SESSION['cart'] = $_SESSION['cart']."|".$productnummer.",".$hoeveelheid;
}
}
// forward to cart
header("Location: cart.php");
?>
// add.php
session_start();
// Het product wat we toevoegen moeten we eerst controleren
if(is_numeric($_POST['productnummer'])) $productnummer = $_POST['productnummer'];
else exit("Verzin een mooie foutmelding als productnummer geen integer is.");
if(is_numeric($_POST['hoeveelheid'])) $hoeveelheid = $_POST['hoeveelheid'];
else exit("Wederom een leuke foutmelding. Nu als het aantal geen getal is.");
// Kijken of er wel iets besteld is?
if ($hoeveelheid == 0) {
echo "<p>Ja dag Jan! 0 bestellen doen we niet aan!</p>\n";
echo "<p><a href=\"javascript:history.back()\">Hupsakee, een pagina in het verleden!</a></p>\n";
exit();
}
// Controleren of er al inhoud is op de winkelwagen
if (empty($_SESSION['cart'])){
// Nee dus, een nieuwe maken
$_SESSION['cart'] = $productnummer.",".$hoeveelheid; // Het productnummer,hoeveelheid staat dus in een sessie
} else {
// Winkelwagen opsplitsen op de pipe
$cart = explode("|",$_SESSION['cart']);
// Winkelwagen inhoud tellen
$count = count($cart);
// En controleren of het product al in de winkelwagen zit
$add = TRUE; // var om later te kijken of we moeten toevoegen
foreach($cart as $products)
{
// Exploden
/*
$product[x] -->
x == 0 -> productnummer
x == 1 -> hoeveelheid
*/
$product = explode(",",$products);
if ($product[0] == $productnummer) {
// Product al in de winkelwagen
$product[1] = $product[1] + $hoeveelheid; // Nieuwe hoeveelheid is oude + nieuwe
$add = FALSE; // Dus niet toevoegen
}
// En weer in de sessie zetten
$i++;
if ($i == 1) {
$_SESSION['cart'] = $product[0].",".$product[1];
} else {
$_SESSION['cart'] = $_SESSION['cart']."|".$product[0].",".$product[1];
}
}
if ($add) { // Als we dus wel moeten toevoegen
$_SESSION['cart'] = $_SESSION['cart']."|".$productnummer.",".$hoeveelheid;
}
}
// forward to cart
header("Location: cart.php");
?>
Nu hebben we dus het een en ander in de sessie staan. Namelijk het productnummer en het bestelde aantal. We worden na het toevoegen/updaten doorgestuurd naar de winkelwagen
.
« 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

