login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Uitlezen (Opgelost)

Offline BigBug - 09/08/2007 14:26 (laatste wijziging 09/08/2007 14:47)
Avatar van BigBugPHP expert
  1. <?php
  2.  
  3. if(isset($_SESSION['cart']))
  4. {
  5. $cart = unserialize($_SESSION['cart']);
  6. $aantal = count($cart);
  7.  
  8. for($i = 0; $i <= $aantal; $i++)
  9. {
  10. foreach($cart[$i] as $key => $value)
  11. {
  12. echo $key . " bevat " . $value . "<br>";
  13. }
  14. }
  15. }
  16. ?>


Deze code heb ik, maar ik heb een probleem. Als $cart bijvoorbeeld 2 arrays bevat wordt er maar 1 uitgelezen.. Iemand enig idee hoe dat kan?

11 antwoorden

Gesponsorde links
Offline Nanon - 09/08/2007 14:29
Avatar van Nanon PHP interesse $aantal = count($cart)-1;

Je trekt er weer één vanaf?
Offline BigBug - 09/08/2007 14:46
Avatar van BigBug PHP expert Oepsie, foutje 

Maar dat is het probleem niet..
Offline Abbas - 09/08/2007 15:35
Avatar van Abbas Gouden medaille

Crew .NET
Je hebt er zoizo nog wel een foutje inzitten, je zegt dat $i kleiner of gelijk moet zijn aan $aantal maar dat mag niet...
Stel dat $aantal gelijk is aan 2 en je begint met $i bij 0, dan ga je drie keer de loop door.
  1. <?php
  2.  
  3. for($i = 0; $i < $aantal; $i++)
  4. {
  5. //...
Offline BigBug - 09/08/2007 15:54
Avatar van BigBug PHP expert
  1. <?php
  2.  
  3. if(isset($_SESSION['cart']))
  4. {
  5. $cart = unserialize($_SESSION['cart']);
  6. $aantal = count($cart);
  7. //print_r($cart);
  8.  
  9. for($i = 0; $i < $aantal; $i++)
  10. {
  11. foreach($cart[$i] as $key => $value)
  12. {
  13. echo $key . " bevat " . $value . "<br>";
  14. }
  15. }
  16. }
  17. ?>

Dit is dan wat ik nu heb.. Als ik die print_r(); aanzet die nu achter // staat zie je daadwerkelijk 2 arrays als er 2 dingen besteld zijn etc.

Alleen het uitlezen -> voor het winkelwagentje lukt me dus niet En hoop het toch wel morgenavond afgerond te hebben.
Offline Wim - 09/08/2007 17:44
Avatar van Wim Crew algemeen waarom niet gewoon met 2 foreaches?

  1. <?php
  2.  
  3. if(isset($_SESSION['cart']))
  4. {
  5. foreach (unserialize($_SESSION['cart']) as $cart)
  6. {
  7. foreach($cart as $key => $value)
  8. {
  9. echo $key . " bevat " . $value . "<br>";
  10. }
  11. }
  12. }
  13. ?>
Offline BigBug - 09/08/2007 18:57 (laatste wijziging 09/08/2007 18:59)
Avatar van BigBug PHP expert Dat doet hetzelfde inderdaad =)

Nu heb ik het idee dat er toch iets verkeerd zit bij het toevoegen gedeelte;

  1. <?php
  2. if(!isset($_SESSION['cart']))
  3. {
  4. $_SESSION['cart'] = serialize(array("id"=>$id, "aantal"=>$aantal, "opmerkingen"=>$opmerkingen));
  5. }
  6. else
  7. {
  8. $cart = unserialize($_SESSION['cart']);
  9. array_push($cart, array("id"=>$id, "aantal"=>$aantal, "opmerkingen"=>$opmerkingen));
  10.  
  11. $_SESSION['cart'] = serialize($cart);
  12. echo 'succes!';
  13. }
  14. ?>


Ik heb gehoord dat ik ook iets van array_merge zou kunnen gebruiken? Ik weet alleen niet precies hoe dat werkt. Zou dat ook kunnen en hoe moet ik het dan oplossen.

Even voor de duidelijkheid het gaat hier om een webshop en in de forumpost staat dus het 'uitlees' gedeelte (voor zover dat werkt -.-)

Alvast bedankt!


Offline Wim - 09/08/2007 19:27
Avatar van Wim Crew algemeen roep je de functie session_start ergens aan?
Offline BigBug - 10/08/2007 06:27
Avatar van BigBug PHP expert Jazeker, bovenaan de pagina.

Anders had ik ook geen enkel resultaat teruggekregen 
Offline ikki007 - 10/08/2007 10:02
Avatar van ikki007 Gouden medailleGouden medaille

PHP ver gevorderde
Is het niet zo ;)

  1. <?php
  2.  
  3. if(isset($_SESSION['cart']))
  4. {
  5. $cart = unserialize($_SESSION['cart']);
  6. $aantal = count($cart);
  7.  
  8. for($i = 0; $i <= $aantal; $i++)
  9. {
  10. foreach($cart as $key => $value)
  11. {
  12. echo $key . " bevat " . $value . "<br>";
  13. }
  14. }
  15. }
  16. ?>


En dan kan die for loop er ook wel weg dacht ik.
Teminste zo loopt die de hele $cart door.

Ik doe het altijd zo  
Offline Simon - 10/08/2007 10:34 (laatste wijziging 10/08/2007 10:36)
Avatar van Simon PHP expert Moet je het niet anders aanpakken?
  1. <?php
  2. if(isset($_SESSION['cart']))
  3. {
  4. $cart = unserialize($_SESSION['cart']);
  5. $aantal = count($cart);
  6. foreach($cart as $arraykey => $array)
  7. {
  8. foreach($cart[$arraykey] as $key => $value) {
  9. echo $key . " bevat " . $value . "<br>";
  10. }
  11. }
  12. }
  13. // indien dat niet werkt:
  14. if(isset($_SESSION['cart']))
  15. {
  16. $cart = unserialize($_SESSION['cart']);
  17. $aantal = count($cart);
  18. foreach($cart as $array)
  19. {
  20. foreach($array as $key => $value) {
  21. echo $key . " bevat " . $value . "<br>";
  22. }
  23. }
  24. }
  25. ?>

Aangezien je namelijk met een nesting van array's zit 
Offline BigBug - 10/08/2007 10:38
Avatar van BigBug PHP expert Ja ik moet het zeker anders aanpakken 

Ik heb besloten het allemaal in een MySQL db te plompen 
Scheelt een hoop werk en is veel makkelijker.

Iedereen bedankt voor de hulp iig!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.273s