Optellen
Ik heb van alles geprobeerd maar het lukt me maar niet, en ben nu ook best gefrustreerd daardoor door het vele proberen, maar ik wil graag de totaalprijs van Winkelwagen.php uit http://www.phphulp.nl/php/script/overig/winkelwagen-update-van-de-tutorial/1750/ berekenen. Hieronder de kopie:
Ik zoek naar een oplossing, geen commentaar over fouten in de tutorial, heb de code al gedeeltelijk herschreven op mijn pc, maar ik wil optellen..
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<?php
// Sessie starten
session_start();
// Database connectie maken
include('Config.php');
// Style pagina invoegen
echo '<link rel="stylesheet" type="text/css" href="CSS/Winkelwagen.css" />';
// Javascript voor updaten en deleten winkelwagen invoegen
echo '<script type="text/javascript" src="Winkelwagen.js"></script>';
// Kijk of er iets in de winkelwagen zit
if(empty($_SESSION['winkelwagen']))
{
echo '<p class="error">Uw winkelwagen is momenteel leeg.</p>';
}
// Anders
else
{
echo '<div class="wrapper">';
echo '<div class="row">';
echo '<p class="small"><b>Aantal:</b></p>';
echo '<p class="small"><b>Art. nr.:</b></p>';
echo '<p class="big"><b>Product:</b></p>';
echo '<p class="small"><b>Actie:</b></p>';
echo '<p class="small"><b>Prijs:</b></p>';
echo '</div>';
// Exploden
$cart = explode('|', $_SESSION['winkelwagen']);
// Begin formulier
echo '<form action="Upd_winkelwagen.php" method="post">';
// Show winkelwagen
$i = 0;
foreach($cart as $products)
{
// Split
/*
$product[x] -->
x == 0 -> product id
x == 1 -> hoeveelheid
*/
$product = explode(',', $products);
// Get product info
$sql = mysql_query("SELECT * FROM producten WHERE id = '".intval($product[0])."'");
// Als query gelukt is
if($sql)
{
// Als er items zijn
if(mysql_num_rows($sql) > 0)
{
// Alle items echoën
$rec = mysql_fetch_assoc($sql);
$i++;
// Verborgen vars
echo '<input type="hidden" name="productnummer_'.$i.'" value="'.$product[0].'" />';
echo '<div class="row">';
// Aantal
echo '<p class="small">';
echo '<input type="text" class="aantal_w" name="hoeveelheid_'.$i.'" value="'.$product[1].'" size="2" maxlength="2" onKeyPress="return submitenter(this,event)" />';
echo '</p>';
// Artikel nummer
echo '<p class="small">';
if($rec['voorraad'] < $product[1])
{
echo '<font style="color: #FF0000;">'.$product[0].'</font>';
$error = TRUE;
}
else
{
echo $product[0];
}
echo '</p>';
// titel
echo '<p class="big">';
echo $rec['titel'];
echo '</p>';
// Acties
echo '<p class="small">';
echo '<a href="javascript:removeItem('.$i.')">Del</a>';
echo '</p>';
// Prijs
echo '<p class="small">';
echo '€ '.($rec['prijs'] * $product[1]);
echo '</p>';
echo '</div>';
}
// Anders
else
{
// Fout weergeven
echo '<p class="error">Dit product is er niet meer.</p>';
}
}
// Anders
else
{
// Mysql error opvangen
echo 'Er is een fout opgetreden in de query. <br />';
echo mysql_error();
}
}
echo '</form>';
if($error == TRUE)
{
echo '<p class="error">';
echo 'Van artikelen waarvan het artikelnummer rood is gekleurd hebben we niet voldoende op voorraad om je bestelling direct uit te kunnen leveren.';
echo '</p>';
}
echo '</div>';
// Winkelwagen leeghalen & Afrekenen
echo '<a href="javascript:removeCart()">Winkelwagen leeghalen</a><br />';
echo '<a href="Afrekenen.php">Afrekenen</a></p>';
}
?>
// Sessie starten
session_start();
// Database connectie maken
include('Config.php');
// Style pagina invoegen
echo '<link rel="stylesheet" type="text/css" href="CSS/Winkelwagen.css" />';
// Javascript voor updaten en deleten winkelwagen invoegen
echo '<script type="text/javascript" src="Winkelwagen.js"></script>';
// Kijk of er iets in de winkelwagen zit
if(empty($_SESSION['winkelwagen']))
{
echo '<p class="error">Uw winkelwagen is momenteel leeg.</p>';
}
// Anders
else
{
echo '<div class="wrapper">';
echo '<div class="row">';
echo '<p class="small"><b>Aantal:</b></p>';
echo '<p class="small"><b>Art. nr.:</b></p>';
echo '<p class="big"><b>Product:</b></p>';
echo '<p class="small"><b>Actie:</b></p>';
echo '<p class="small"><b>Prijs:</b></p>';
echo '</div>';
// Exploden
$cart = explode('|', $_SESSION['winkelwagen']);
// Begin formulier
echo '<form action="Upd_winkelwagen.php" method="post">';
// Show winkelwagen
$i = 0;
foreach($cart as $products)
{
// Split
/*
$product[x] -->
x == 0 -> product id
x == 1 -> hoeveelheid
*/
$product = explode(',', $products);
// Get product info
$sql = mysql_query("SELECT * FROM producten WHERE id = '".intval($product[0])."'");
// Als query gelukt is
if($sql)
{
// Als er items zijn
if(mysql_num_rows($sql) > 0)
{
// Alle items echoën
$rec = mysql_fetch_assoc($sql);
$i++;
// Verborgen vars
echo '<input type="hidden" name="productnummer_'.$i.'" value="'.$product[0].'" />';
echo '<div class="row">';
// Aantal
echo '<p class="small">';
echo '<input type="text" class="aantal_w" name="hoeveelheid_'.$i.'" value="'.$product[1].'" size="2" maxlength="2" onKeyPress="return submitenter(this,event)" />';
echo '</p>';
// Artikel nummer
echo '<p class="small">';
if($rec['voorraad'] < $product[1])
{
echo '<font style="color: #FF0000;">'.$product[0].'</font>';
$error = TRUE;
}
else
{
echo $product[0];
}
echo '</p>';
// titel
echo '<p class="big">';
echo $rec['titel'];
echo '</p>';
// Acties
echo '<p class="small">';
echo '<a href="javascript:removeItem('.$i.')">Del</a>';
echo '</p>';
// Prijs
echo '<p class="small">';
echo '€ '.($rec['prijs'] * $product[1]);
echo '</p>';
echo '</div>';
}
// Anders
else
{
// Fout weergeven
echo '<p class="error">Dit product is er niet meer.</p>';
}
}
// Anders
else
{
// Mysql error opvangen
echo 'Er is een fout opgetreden in de query. <br />';
echo mysql_error();
}
}
echo '</form>';
if($error == TRUE)
{
echo '<p class="error">';
echo 'Van artikelen waarvan het artikelnummer rood is gekleurd hebben we niet voldoende op voorraad om je bestelling direct uit te kunnen leveren.';
echo '</p>';
}
echo '</div>';
// Winkelwagen leeghalen & Afrekenen
echo '<a href="javascript:removeCart()">Winkelwagen leeghalen</a><br />';
echo '<a href="Afrekenen.php">Afrekenen</a></p>';
}
?>
Hoor het graag!
Verder raad ik het niet aan om in een sessie alle producten te scheiden met een |, je kan ze prima in een array opslaan in je sessie. Veel efficiënter.
Verder zijn de standaard PHP-functies voor MySQL over enkele jaren echt verleden tijd, dus ik raad je aan om je vast te houden aan de functies van MySQLi of PDO.
Gewijzigd op 27/08/2015 23:08:25 door - Ariën -
Ik weet het niet meer, frustreert heel erg na alle mallen proberen, array_sum als geprobeerd.
Een mooi voorbeeld vind ik die van SanThe:
http://www.phphulp.nl/php/forum/topic/winkelwagen-script/66824/#469939
De prijzen moet je niet in de sessies opslaan, en aan de hand van de productID's die je je in je sessie hebt, uit je database ophalen.
Gewijzigd op 27/08/2015 23:13:47 door - Ariën -
Toevoeging op 27/08/2015 23:16:57:
HOef ik als ik het ombouw de sessies neit te veranderen? Evenals het javascript
Kijk eens naar de link die ik gaf, en vergeet de manier van opslaan uit de tutorial.
het winkelwagenscript veranderen en de rest van de tutorial laten staan, (bedoel ik add.php, winkelwagen.js) want het etalage script heb ik helemaal zelf gemaakt.
Hoe sla je de prijs op? Dit zijn hopelijk wel getallen met een . (punt) als decimaal scheidingskarakter?
Het wordt dan gewoon zoiets?
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$totaal = 0;
foreach ($cart as $products) {
// data van producten ophalen enzo
$totaal = $totaal + $product[1] * $res['prijs']; // product aantal * prijs
}
// $totaal bevat nu de totaalsom
?>
$totaal = 0;
foreach ($cart as $products) {
// data van producten ophalen enzo
$totaal = $totaal + $product[1] * $res['prijs']; // product aantal * prijs
}
// $totaal bevat nu de totaalsom
?>
Optimalisatie #1
Waar Aar zegt: organiseer je cart in een (of meer) array(s), bijvoorbeeld met een product(sub)array, met als key een product id, en als waarde het aantal. ($_SESSION['cart']['products'][2] = 12; 12 x product id 2).
Optimalisatie #2
Haal alle product informatie in 1x op, in plaats van meerdere queries in een loop. Als je je sessie een beetje structureert kun je hier ook heel snel je product ids uitvissen (vervolg op vorige voorbeeld: $productIds = array_keys($_SESSION['cart']['products']);).
Gewijzigd op 27/08/2015 23:25:05 door Thomas van den Heuvel
$totaal = 0;
foreach ($cart as $products) {
// data van producten ophalen enzo
$som = $som + $product[1] * $res['prijs']; // product aantal * prijs
}
echo ''.$som.'';
Toevoeging op 27/08/2015 23:29:41:
EDIT: Ook na je edit blijft het 0.
Toevoeging op 27/08/2015 23:29:57:
EDIT: Ook na je edit blijft het 0.
En zorg er voor dat je negatieve aantallen direct blokkeert in zowel JavaScript als PHP. Dikwijls zie ik bij custom geschreven webshops (bestaan die nog??) nog fouten waarbij je de kosten van manipuleren.
Maar dat van Thomas werkt niet?
We weten niet wat je nou exact geprobeerd hebt, en wat je op je scherm ziet. Glazen bollen bestaan helaas 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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
<?php
include 'tpl/header.php';
// Sessie starten
session_start();
// Database connectie maken
include('Config.php');
// Style pagina invoegen
echo '<link rel="stylesheet" type="text/css" href="CSS/Winkelwagen.css" />';
// Javascript voor updaten en deleten winkelwagen invoegen
echo '<script type="text/javascript" src="Winkelwagen.js"></script>';
// Kijk of er iets in de winkelwagen zit
if(empty($_SESSION['winkelwagen']))
{
echo '<p class="error">Nog niets om te eten...</p>';
}
// Anders
else
{
echo '<table><tr><td>Aantal</td><td>Product</td><td>Prijs</td><td>Totaal</td></tr>';
// Exploden
$cart = explode('|', $_SESSION['winkelwagen']);
// Begin formulier
echo '<form action="Upd_winkelwagen.php" method="post">';
// Show winkelwagen
$i = 0;
foreach($cart as $products)
{
// Split
/*
$product[x] -->
x == 0 -> product id
x == 1 -> hoeveelheid
*/
$product = explode(',', $products);
// Get product info
$sql = mysql_query("SELECT * FROM products WHERE id = '".intval($product[0])."'");
// Als query gelukt is
if($sql)
{
// Als er items zijn
if(mysql_num_rows($sql) > 0)
{
// Alle items echoën
$rec = mysql_fetch_assoc($sql);
$i++;
// Verborgen vars
echo '<input type="hidden" name="productnummer_'.$i.'" value="'.$product[0].'" />';
// Aantal
echo '<tr><td>';
echo '<input type="text" class="aantal_w" name="hoeveelheid_'.$i.'" value="'.$product[1].'" size="2" maxlength="2" onKeyPress="return submitenter(this,event)" />';
echo '</td>';
// Artikel nummer
echo '<td>(';
if($rec['voorraad'] < $product[1])
{
echo '<font>'.$product[0].'</font>';
$error = TRUE;
}
else
{
echo $product[0];
}
echo ') ';
// titel
echo '';
echo $rec['name'];
echo '</td>';
// Acties
echo '<td>';
echo '€ '.($rec['price']);
echo '</td>';
// Prijs
echo '<td>';
echo '€ '.($rec['price'] * $product[1]);
echo '</td>';
echo '<td><a href="javascript:removeItem('.$i.')">-</a></td>';
echo '</tr>';
}
// Anders
else
{
// Fout weergeven
echo '<tr><td>0</td><td>Dit product is niet meer leverbaar.</td></tr></table>';
}
}
// Anders
else
{
// Mysql error opvangen
echo 'Er is een fout opgetreden in de query. <br />';
echo mysql_error();
}
}
// TEST
echo 'TOTAAL:';
{
// Split
/*
$product[x] -->
x == 0 -> product id
x == 1 -> hoeveelheid
*/
$product = explode(',', $products);
// Get product info
$sql = mysql_query("SELECT * FROM products WHERE id = '".intval($product[0])."'");
// Als query gelukt is
if($sql)
{
// Als er items zijn
if(mysql_num_rows($sql) > 0)
{
// Alle items echoën
$rec = mysql_fetch_assoc($sql);
$i++;
$totaal = 0;
foreach ($cart as $products) {
// data van producten ophalen enzo
$totaal = $totaal + $product[1] * $res['price']; // product aantal * prijs
}
echo ''.$totaal.'';
}
// Anders
else
{
// Fout weergeven
echo '<tr><td>0</td><td>Dit product is niet meer leverbaar.</td></tr></table>';
}
}
// Anders
else
{
// Mysql error opvangen
echo 'Er is een fout opgetreden in de query. <br />';
echo mysql_error();
}
}
echo '</form> ';
if($error == TRUE)
{
echo '<p class="error">';
echo 'Er is een fout opgetreden, neem a.u.b. contact op met de systeembeheerder.';
echo '</p>';
}
echo '</div>';
// Winkelwagen leeghalen & Afrekenen
echo '<a href="javascript:removeCart()">Winkelwagen leeghalen</a><br />';
echo '<a href="Afrekenen.php">Afrekenen</a></p>';
}
?>
include 'tpl/header.php';
// Sessie starten
session_start();
// Database connectie maken
include('Config.php');
// Style pagina invoegen
echo '<link rel="stylesheet" type="text/css" href="CSS/Winkelwagen.css" />';
// Javascript voor updaten en deleten winkelwagen invoegen
echo '<script type="text/javascript" src="Winkelwagen.js"></script>';
// Kijk of er iets in de winkelwagen zit
if(empty($_SESSION['winkelwagen']))
{
echo '<p class="error">Nog niets om te eten...</p>';
}
// Anders
else
{
echo '<table><tr><td>Aantal</td><td>Product</td><td>Prijs</td><td>Totaal</td></tr>';
// Exploden
$cart = explode('|', $_SESSION['winkelwagen']);
// Begin formulier
echo '<form action="Upd_winkelwagen.php" method="post">';
// Show winkelwagen
$i = 0;
foreach($cart as $products)
{
// Split
/*
$product[x] -->
x == 0 -> product id
x == 1 -> hoeveelheid
*/
$product = explode(',', $products);
// Get product info
$sql = mysql_query("SELECT * FROM products WHERE id = '".intval($product[0])."'");
// Als query gelukt is
if($sql)
{
// Als er items zijn
if(mysql_num_rows($sql) > 0)
{
// Alle items echoën
$rec = mysql_fetch_assoc($sql);
$i++;
// Verborgen vars
echo '<input type="hidden" name="productnummer_'.$i.'" value="'.$product[0].'" />';
// Aantal
echo '<tr><td>';
echo '<input type="text" class="aantal_w" name="hoeveelheid_'.$i.'" value="'.$product[1].'" size="2" maxlength="2" onKeyPress="return submitenter(this,event)" />';
echo '</td>';
// Artikel nummer
echo '<td>(';
if($rec['voorraad'] < $product[1])
{
echo '<font>'.$product[0].'</font>';
$error = TRUE;
}
else
{
echo $product[0];
}
echo ') ';
// titel
echo '';
echo $rec['name'];
echo '</td>';
// Acties
echo '<td>';
echo '€ '.($rec['price']);
echo '</td>';
// Prijs
echo '<td>';
echo '€ '.($rec['price'] * $product[1]);
echo '</td>';
echo '<td><a href="javascript:removeItem('.$i.')">-</a></td>';
echo '</tr>';
}
// Anders
else
{
// Fout weergeven
echo '<tr><td>0</td><td>Dit product is niet meer leverbaar.</td></tr></table>';
}
}
// Anders
else
{
// Mysql error opvangen
echo 'Er is een fout opgetreden in de query. <br />';
echo mysql_error();
}
}
// TEST
echo 'TOTAAL:';
{
// Split
/*
$product[x] -->
x == 0 -> product id
x == 1 -> hoeveelheid
*/
$product = explode(',', $products);
// Get product info
$sql = mysql_query("SELECT * FROM products WHERE id = '".intval($product[0])."'");
// Als query gelukt is
if($sql)
{
// Als er items zijn
if(mysql_num_rows($sql) > 0)
{
// Alle items echoën
$rec = mysql_fetch_assoc($sql);
$i++;
$totaal = 0;
foreach ($cart as $products) {
// data van producten ophalen enzo
$totaal = $totaal + $product[1] * $res['price']; // product aantal * prijs
}
echo ''.$totaal.'';
}
// Anders
else
{
// Fout weergeven
echo '<tr><td>0</td><td>Dit product is niet meer leverbaar.</td></tr></table>';
}
}
// Anders
else
{
// Mysql error opvangen
echo 'Er is een fout opgetreden in de query. <br />';
echo mysql_error();
}
}
echo '</form> ';
if($error == TRUE)
{
echo '<p class="error">';
echo 'Er is een fout opgetreden, neem a.u.b. contact op met de systeembeheerder.';
echo '</p>';
}
echo '</div>';
// Winkelwagen leeghalen & Afrekenen
echo '<a href="javascript:removeCart()">Winkelwagen leeghalen</a><br />';
echo '<a href="Afrekenen.php">Afrekenen</a></p>';
}
?>
De "formule" hierboven klopt volgens mij wel, het zit dan toch echt ergens in je data scheef.
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
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
<?php
$products = array(
1 => array(
'price' => 0.99,
),
2 => array(
'price' => 2.50,
),
3 => array(
'price' => 1.25,
),
4 => array(
'price' => 0.45,
),
);
$cart = array(
2 => 5, // 5 x product 2 = 5 x 2.50 = 12.50
3 => 2, // 2 x product 3 = 2 x 1.25 = 2.50
1 => 4, // 4 x product 1 = 4 x 0.99 = 3.96
4 => 10, // 10 x product 4 = 10 x 0.45 = 4.50
// -------------------------------------------
// verwachte som 23.46
);
$totaal = 0;
foreach ($cart as $productId => $quantity) {
$totaal = $totaal + $products[$productId]['price'] * $quantity;
}
echo $totaal; // levert 23.46
?>
$products = array(
1 => array(
'price' => 0.99,
),
2 => array(
'price' => 2.50,
),
3 => array(
'price' => 1.25,
),
4 => array(
'price' => 0.45,
),
);
$cart = array(
2 => 5, // 5 x product 2 = 5 x 2.50 = 12.50
3 => 2, // 2 x product 3 = 2 x 1.25 = 2.50
1 => 4, // 4 x product 1 = 4 x 0.99 = 3.96
4 => 10, // 10 x product 4 = 10 x 0.45 = 4.50
// -------------------------------------------
// verwachte som 23.46
);
$totaal = 0;
foreach ($cart as $productId => $quantity) {
$totaal = $totaal + $products[$productId]['price'] * $quantity;
}
echo $totaal; // levert 23.46
?>
Succes met debuggen :)
EDIT: dude... je moet natuurlijk mijn code wel in je eigen code verwerken he... ik stippel alleen uit wat er globaal moet gebeuren. Je moet in jouw geval $product nog exploden en data uit je database vissen... je moet mijn code inpassen in je eigen code, niet letterlijk knippen en plakken.
Gewijzigd op 27/08/2015 23:44:34 door Thomas van den Heuvel
Ik geef het wel op, en het is overigens van een tutoriul.
- Bestaat $cart wel, wat staat er in?
- Bestaat $product wel, en wat is de inhoud.
- Bestaat $res['price'] wel?
Ik denk dat het zinvoller is om de prijzen in een array op te slaan. Dan heb je meer grip erop, zat je eventueel kortingen kan toevoegen.
Toevoeging op 27/08/2015 23:46:03:
Overigens heb ik nog geen antwoord van je aar op deze reactie:
Sorry, ik denk dat ik iets te lang bezig ben geweest maar moet ik nu alleen
het winkelwagenscript veranderen en de rest van de tutorial laten staan, (bedoel ik add.php, winkelwagen.js) want het etalage script heb ik helemaal zelf gemaakt.
Ook kan het handig zijn eerst eens op papier uit te tekenen wat er zou moeten gebeuren, wat ik min of meer hier deed:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$cart = array(
2 => 5, // 5 x product 2 = 5 x 2.50 = 12.50
3 => 2, // 2 x product 3 = 2 x 1.25 = 2.50
1 => 4, // 4 x product 1 = 4 x 0.99 = 3.96
4 => 10, // 10 x product 4 = 10 x 0.45 = 4.50
// -------------------------------------------
// verwachte som 23.46
);
?>
$cart = array(
2 => 5, // 5 x product 2 = 5 x 2.50 = 12.50
3 => 2, // 2 x product 3 = 2 x 1.25 = 2.50
1 => 4, // 4 x product 1 = 4 x 0.99 = 3.96
4 => 10, // 10 x product 4 = 10 x 0.45 = 4.50
// -------------------------------------------
// verwachte som 23.46
);
?>
Dat is al een concrete rekensom, en meteen een testcase.
Gewijzigd op 27/08/2015 23:49:42 door Thomas van den Heuvel
Niels Rietveld op 27/08/2015 23:45:32:
Ik zie door de bomen het bos niet meer
Totdat je gaat debuggen. Zorg ook voor duidelijke commentaarblokken bij moeilijke stukken code.
Maar ik geeft het wel op, zijn er geen kant en klare beschikbaar die wel werken
Er zijn kant en klare webshops zoals OpenCart, Magento, Zen Cart, osCommerce, Virtuemart en nog een hoop.