basket: verwijderen lukt niet
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
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
class basket{
function AddToBasket($productID, $name, $amount){
$found = -1;
if (! isset($_SESSION["basket_productID"])) {
$_SESSION["basket_productID"] = array();
$_SESSION["basket_name"] = array();
$_SESSION["basket_amount"] = array();
}
for ($i = 0; $i <= count($_SESSION["basket_productID"]) - 1; $i++) {
if ($_SESSION["basket_productID"][$i] == $productID) {
$found = $i;
}
}
if ($found != -1) {
$_SESSION["basket_amount"][$found] += $amount;
} else {
$_SESSION["basket_productID"][] = $productID;
$_SESSION["basket_name"][] = $name;
$_SESSION["basket_amount"][] = $amount;
}
}
function DeleteFromBasketByID($productID){
for ($i = 0; $i <= count($_SESSION["basket_productID"]) - 1; $i++) {
if ($_SESSION["basket_productID"][$i] == $productID) {
unset($_SESSION["basket_productID"][$i]);
unset($_SESSION["basket_name"][$i]);
unset($_SESSION["basket_amount"][$i]);
array_values($_SESSION["basket_productID"]);
array_values($_SESSION["basket_name"]);
array_values($_SESSION["basket_amount"]);
}
}
}
function DeleteAllFromBasket(){
unset($_SESSION["basket_productID"]);
unset($_SESSION["basket_name"]);
unset($_SESSION["basket_amount"]);
}
function GetBasket(){
$basket .= "<table>";
for ($i = 0; $i <= count($_SESSION["basket_productID"]) - 1; $i++) {
$basket .= "<tr>";
$basket .= "<td>".$_SESSION["basket_productID"][$i]."</td>";
$basket .= "<td>".$_SESSION["basket_name"][$i]."</td>";
$basket .= "<td>".$_SESSION["basket_amount"][$i]."</td>";
$basket .= "<td><input name='basket_productID".$_SESSION["basket_productID"][$i]."' type='text' value='".$_SESSION["basket_amount"][$i]."' /></td>";
$basket .= "</tr>";
}
$basket .= "</table>";
return $basket;
}
}
function AddToBasket($productID, $name, $amount){
$found = -1;
if (! isset($_SESSION["basket_productID"])) {
$_SESSION["basket_productID"] = array();
$_SESSION["basket_name"] = array();
$_SESSION["basket_amount"] = array();
}
for ($i = 0; $i <= count($_SESSION["basket_productID"]) - 1; $i++) {
if ($_SESSION["basket_productID"][$i] == $productID) {
$found = $i;
}
}
if ($found != -1) {
$_SESSION["basket_amount"][$found] += $amount;
} else {
$_SESSION["basket_productID"][] = $productID;
$_SESSION["basket_name"][] = $name;
$_SESSION["basket_amount"][] = $amount;
}
}
function DeleteFromBasketByID($productID){
for ($i = 0; $i <= count($_SESSION["basket_productID"]) - 1; $i++) {
if ($_SESSION["basket_productID"][$i] == $productID) {
unset($_SESSION["basket_productID"][$i]);
unset($_SESSION["basket_name"][$i]);
unset($_SESSION["basket_amount"][$i]);
array_values($_SESSION["basket_productID"]);
array_values($_SESSION["basket_name"]);
array_values($_SESSION["basket_amount"]);
}
}
}
function DeleteAllFromBasket(){
unset($_SESSION["basket_productID"]);
unset($_SESSION["basket_name"]);
unset($_SESSION["basket_amount"]);
}
function GetBasket(){
$basket .= "<table>";
for ($i = 0; $i <= count($_SESSION["basket_productID"]) - 1; $i++) {
$basket .= "<tr>";
$basket .= "<td>".$_SESSION["basket_productID"][$i]."</td>";
$basket .= "<td>".$_SESSION["basket_name"][$i]."</td>";
$basket .= "<td>".$_SESSION["basket_amount"][$i]."</td>";
$basket .= "<td><input name='basket_productID".$_SESSION["basket_productID"][$i]."' type='text' value='".$_SESSION["basket_amount"][$i]."' /></td>";
$basket .= "</tr>";
}
$basket .= "</table>";
return $basket;
}
}
en een pagina waar ik deze oproep
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
$basket->AddToBasket(1, "mes1", 2);
$basket->AddToBasket(2, "mes2", 1);
$basket->AddToBasket(1, "mes1", 3);
$basket->AddToBasket(3, "mes3", 5);
echo $basket->GetBasket();
$basket->DeleteFromBasketByID(2);
echo $basket->GetBasket();
$basket->DeleteAllFromBasket();
echo $basket->GetBasket();
$basket->AddToBasket(2, "mes2", 1);
$basket->AddToBasket(1, "mes1", 3);
$basket->AddToBasket(3, "mes3", 5);
echo $basket->GetBasket();
$basket->DeleteFromBasketByID(2);
echo $basket->GetBasket();
$basket->DeleteAllFromBasket();
echo $basket->GetBasket();
bij de eerste get basket wordt alles tegoei getoond, maar bij de tweede gaat eht fout. produt met id1 wordt getoond en daarna wordt eronder nog een lege rij getoond...
1 mes1 5 inputbox
2 mes2 1 inputbox
3 mes3 5 inputbox
1 mes1 5 inputbox
inputbox
iemand die me kan helpen?
alvast bedankt
Gewijzigd op 05/01/2011 15:06:34 door Sam peeters
Dat zijn variabelen die je binnen je class bijhoudt.
dingen zoals
$this->basket_productID = $productID;
Zie dan nog eens of het nodig is alles in sessies te zetten.
Het is de bedoeling om later van uit andere paginas producten toe te voegen en op de basket zelf alles op te roepen en dergelijke... Ik moet dus onthouden wat er in het winkelwagentje zit gedurende heel de tijd dat de gebruiker aangelogd is... hiervoor moet ik toch sessions gebruiken?
Kijk eens in de ruwe sessiedata of je basket vernield is door DeleteFromBasketByID, of dat je weergave in GetBasket wordt gefopt.
Misschien heb je meer aan een omgekeerde struktuur: een array basket_data[productID], met per element een associatieve array
'name' => string,
'amount' => int