login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Toevoegen aan cart

Offline TriX - 28/05/2007 21:21
Avatar van TriXHTML interesse Hallo...

Ik heb een pagina met daarop een knop dat men een product kan toevoegen aan de winkelwagen. Dan komen er 2 variabelen binnen: productnummer en de hoeveelheid. Deze wil ik in een sessie zetten wanneer dit product er nog niet instaat. Als het product er al wel instaat moet er niks gebeuren.

Ik krijg de error:

Notice: Array to string conversion...

Bij: $cart = explode("|",$_SESSION['cart']);

en de producten worden niet goed toegevoegd...

  1. <?
  2.  
  3.  
  4. $productnummer = $_GET['prod'];
  5. $hoeveelheid = $_GET['aantal'];
  6.  
  7. // Controleren of er al inhoud is op de winkelwagen
  8. if (empty($_SESSION['cart']))
  9. {
  10. // Nee dus, een nieuwe maken
  11. $_SESSION['cart'] = $productnummer.",".$hoeveelheid;
  12. }
  13. else
  14. {
  15. // Winkelwagen opsplitsen op de pipe
  16. $cart = explode("|",$_SESSION['cart']);
  17.  
  18. // Winkelwagen inhoud tellen
  19. $count = count($cart);
  20.  
  21. // En controleren of het product al in de winkelwagen zit
  22. $add = TRUE;
  23. foreach($cart as $products)
  24. {
  25. $product = explode(",",$products);
  26. if ($product[0] == $productnummer)
  27. {
  28. // Product al in de winkelwagen, Dus niet toevoegen
  29. $add = FALSE;
  30. }
  31.  
  32. }
  33.  
  34. if ($add)
  35. {
  36. // Als we dus wel moeten toevoegen
  37. $_SESSION['cart'] = $_SESSION['cart']."|".$productnummer.",".$hoeveelheid;
  38. }
  39. }
  40.  
  41. ?>

9 antwoorden

Gesponsorde links
Offline JBke - 28/05/2007 23:28 (laatste wijziging 29/05/2007 08:41)
Avatar van JBke PHP gevorderde verander dit, eerst gebruik je als seperator een , en daarna |

  1. <?php
  2. // Nee dus, een nieuwe maken
  3. $_SESSION['cart'] = $productnummer."|".$hoeveelheid;
  4. }
  5. else
  6. {
  7. // Winkelwagen opsplitsen op de pipe
  8. $cart = explode("|",$_SESSION['cart']);
  9. ?>


en verder kloppen je toevoegingen niet en je controles en explodes ookniet, te veel om nu te weizigen. kijk eens goed na zou ik zeggen. gebruik
  1. <?php echo "<pre>" , var_dump($_SESSION) , "</pre>"; ?>
ergens bovenaan in je code om te zien wat er in je sessies staat.
Offline Gerard - 29/05/2007 01:27 (laatste wijziging 29/05/2007 01:27)
Avatar van Gerard Ouwe rakker Ooit wel eens aan gedacht om een array in je sessie te schoppen? Dan heb je ook dat gejank niet met exploden enzo:
  1. <?php
  2. $_SESSION['cart'] = array(
  3. productId => quantity
  4. );

Dus als voorbeeld kan je array er dus zo uitzien:
  1. <?php
  2. $_SESSION['cart'] = array(
  3. 1 => 3,
  4. 4 => 2,
  5. 8 => 4
  6. );


Werkt iets handiger.
Offline TriX - 29/05/2007 08:46
Avatar van TriX HTML interesse okey...

Hij zet nu wel iets in het array met de volgende code... Mag ik hierin de twee variabele op deze manier gebruiken??

  1. $_SESSION['cart'] = array($product_id => $product_aantal);


Wat er uitkomt met var_dump($_SESSION['cart']) is dit:

array(1) {
[2]=>
string(1) "2"
}

Kopt dit??

Maar als ik nu iets wil toevoegen aan de array in de sessie, dan moet ik array_push gebruiken... Maar ik kan niet vinden hoe dat werkt met: $product_id => $product_aantal

  1. $_SESSION['cart'] = array_push(........);
Offline Ibrahim - 29/05/2007 17:40
Avatar van Ibrahim PHP expert
  1. $_SESSION['cart'][$productID] = $quantity;
Offline TriX - 29/05/2007 18:25 (laatste wijziging 29/05/2007 18:26)
Avatar van TriX HTML interesse Bedankt Siliecom...

Hij zet het er nu wel mooi in!

Maar hoe kan ik nu checken of het product_id al in de sessie staat??? of klopt het dat ie m er gewoon niet inzet als hij al bestaat? Er komt namelijk pas iets bij in het array als het pro_id veranderd!

  1. <?
  2.  
  3.  
  4. $product_id = 1;
  5. $product_aantal = 5;
  6.  
  7. $_SESSION['cart'][$product_id] = $product_aantal;
  8.  
  9.  
  10. echo "<pre>" , var_dump($_SESSION['cart']) , "</pre>";
  11.  
  12. ?>


Maar hoe zou ik nu iets uit deze sessie kunnen halen? Ik weet dat het met Session_unset kan maar hoe spreek ik dan de juiste product_id aan?
Offline Ibrahim - 29/05/2007 18:32 (laatste wijziging 29/05/2007 18:34)
Avatar van Ibrahim PHP expert PHP.net: in_array (checken van values) en PHP.net: array_key_exists (checken van keys)

geen session_unset:

Citaat:
PHP.net quote:
session_unset — Free all session variables


een simpele
  1. unset( $_SESSION['cart'][$productID] );
Offline TriX - 29/05/2007 19:27 (laatste wijziging 30/05/2007 07:45)
Avatar van TriX HTML interesse okey thanks...

Ik gebruikte zo te zien de verkeerde... ;)

Maar nu moet ik dus de winkelwagen uitlezen...

Alleen als ik het volgende gebruik geeft ie alleen het aantal producten en niet het ID! Ik heb het ID nodig en het aantal...

  1. <?php
  2.  
  3.  
  4. foreach($_SESSION['cart'] as $products)
  5. {
  6.  
  7. echo $products. "<br>";
  8. }
  9.  
  10. ?>


Zit ik hier wel op de goede weg te denken? Of moet ik gebruik maken van een ander soort functie?:s
Offline Dolfje - 30/05/2007 07:47
Avatar van Dolfje Gouden medailleGouden medailleGouden medaille

PHP ver gevorderde
Met de volgende code moet het gaan
  1. <?php
  2.  
  3.  
  4. foreach($_SESSION['cart'] as $id => $products)
  5. {
  6.  
  7. echo $id.": ".$products. "<br>";
  8. }
  9.  
  10. ?>
Offline TriX - 30/05/2007 08:03 (laatste wijziging 30/05/2007 08:14)
Avatar van TriX HTML interesse ja okey...

Het werkt denk ik al!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.288s