login  Naam:   Wachtwoord: 
Registreer je!
 Forum

$_SESSION probleem (Opgelost)

Offline qubus - 10/09/2010 16:50 (laatste wijziging 11/09/2010 06:58)
Avatar van qubusLid Hallo,

Met de volgende functie voeg ik een artikel toe aan een 'winkelwagentje'. Ik krijg echter de volgende error:

Warning: Invalid argument supplied for foreach() in /var/www/vhosts/....../...../httpdocs/functies.php on line 11

Fatal error: [] operator not supported for strings in /var/www/vhosts/...../...../httpdocs/functies.php on line 18

De code is:
  1. function addCart($aantal, $artikel) {
  2.  
  3. if (!isset($aantal) || !is_numeric($aantal) || !isset($artikel) || !is_numeric($artikel)) { exit(); }
  4.  
  5. // Controleren of er al inhoud is op de winkelwagen
  6. if (empty($_SESSION['cart'])){
  7. $_SESSION['cart'][] = array("aantal" => $aantal, "artikel" => $artikel);
  8.  
  9. } else {
  10. $add = TRUE;
  11. foreach($_SESSION['cart'] as $index=>$inhoud){
  12. if ($inhoud['artikel'] == $artikel) { // Product al in de winkelwagen, dus aantal ophogen
  13. $_SESSION['cart'][$index]['aantal'] = $_SESSION['cart'][$index]['aantal'] + $aantal;
  14. $add = FALSE;
  15. }
  16. }
  17. if ($add) { // Niet aanwezig, dus toevoegen
  18. $_SESSION['cart'][] = array("aantal" => $aantal, "artikel" => $artikel);
  19. }
  20. }
  21. //return (print_r($_SESSION['cart']));
  22. }


De waarden $aantal en $artikel worden beide meegegeven, en zijn een nummer, daar kan het niet aan liggen.

Iemand een idee???

Alvast bedankt

5 antwoorden

Gesponsorde links
Offline Koen - 10/09/2010 16:58
Avatar van Koen PHP expert $_SESSION['cart'] is een string en geen array. Doe eens var_dump($_SESSION['cart']); ?
Offline Giant - 10/09/2010 17:29
Avatar van Giant PHP beginner Het probleem zit hem in zoals koen ook al zegt, dat $_SESSION['cart'] geen array is.

Dit is op te lossen door het volgende te gebruiken als die leeg is:
  1. // Controleren of er al inhoud is op de winkelwagen
  2. if (!is_array($_SESSION['cart'])){
  3. $_SESSION['cart'] = array();
  4. $_SESSION['cart'][] = array("aantal" => $aantal, "artikel" => $artikel);
  5.  
  6. }
Offline qubus - 10/09/2010 19:13 (laatste wijziging 10/09/2010 19:30)
Avatar van qubus Lid Ik heb nu dit, en de error is weg. Er komen echter geen artikelen in het wagentje.

Als ik var_dump($_SESSION['cart']) doe, krijg ik --> array(1) { [0]=> array(2) { ["aantal"]=> string(1) "1" ["artikel"]=> string(1) "3" } }

Als ik later in een ander script var_dump($_SESSION['cart']) doe, krijg ik --> string(5) "Array"



  1. function addCart($aantal, $artikel) {
  2.  
  3. if (!isset($aantal) || !is_numeric($aantal) || !isset($artikel) || !is_numeric($artikel)) { exit(); }
  4.  
  5. // Controleren of er al inhoud is op de winkelwagen
  6. if (!is_array($_SESSION['cart']) || empty($_SESSION['cart'])){
  7. $_SESSION['cart'] = array();
  8. $_SESSION['cart'][] = array("aantal" => $aantal, "artikel" => $artikel);
  9.  
  10. } else {
  11. $add = TRUE;
  12. foreach($_SESSION['cart'] as $index=>$inhoud){
  13. if ($inhoud['artikel'] == $artikel) { // Product al in de winkelwagen, dus aantal ophogen
  14. $_SESSION['cart'][$index]['aantal'] = $_SESSION['cart'][$index]['aantal'] + $aantal;
  15. $add = FALSE;
  16. }
  17. }
  18. if ($add) { // Niet aanwezig, dus toevoegen
  19. $_SESSION['cart'][] = array("aantal" => $aantal, "artikel" => $artikel);
  20. }
  21. }
  22. //return (var_dump($_SESSION['cart']));
  23. }


Wat doe ik nog fout?
Offline Stijn - 10/09/2010 23:22
Avatar van Stijn PHP expert
Citaat:
Als ik later in een ander script var_dump($_SESSION['cart']) doe, krijg ik --> string(5) "Array"
Geef dan eens dat script waarin die var_dump staat. Regel 14 in je code kan opmerkelijk korter geschreven worden (bevordert imo de leesbaarheid):

  1. $_SESSION['cart'][$index]['aantal'] += $aantal;


Je if statement op lijn 13 kan ook beter:

  1. if($add && $inhoud['artikel'] == $artikel) {
.
Offline qubus - 11/09/2010 06:57 (laatste wijziging 11/09/2010 06:59)
Avatar van qubus Lid
Stijn schreef:
[..quote..]Geef dan eens dat script waarin die var_dump staat.


  1. //echo var_dump($_SESSION['cart']);
  2. foreach($_SESSION['cart'] as $product) {
  3. $query = mysql_query("SELECT naam, prijs, actieprijs, btw FROM artikelen WHERE id = '".$product['artikel']."'");
  4. $result = mysql_fetch_array($query);
  5. $query2 = mysql_query("SELECT percentage FROM btw WHERE id = '".$result['btw']."'");
  6. $result2 = mysql_fetch_array($query2);
  7. if ($result['actieprijs'] > 0) { $prijs = ($result['actieprijs'] / 100) * (100 + $result2['percentage']); }
  8. else { $prijs = ($result['prijs'] / 100) * (100 + $result2['percentage']); }
  9. ?>


Hij blijft vanuit de functie ook steeds een artikel toevoegen in $_SESSION['cart'][0].
Het lijkt me dat dit zou moeten optellen.

En bedankt voor de tips m.b.t. de code. Zo leer ik nog eens wat.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.256s