login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Producten in array doorsturen

Offline leendertW - 09/06/2005 19:17
Avatar van leendertWPHP beginner Ik heb een winkelwagentjesssyteem gemaakt en daar zet ik de producten die iemand besteld in een array() en lees deze vervolgens zo uit:

  1. foreach ( $test as $value => $inhoud )
  2. {
  3. $bestelling .= $inhoud.",\n\n";
  4. }


Achter elk attribuut zet ik een komma zodat ik hem later kan exploden.

[stukje bron]

<input type="hidden" name="bestelling" value="06,

Longeerlijn,

1,

14.95,

14.95 ,

" />


[einde stukje bron]

vervolgens doe ik dit in de else ( dus als de maiol verzonden gaat worden)
<?php
....
$bestelling = $_POST['bestelling'];

$bestelling_compleet = explode (",",$bestelling);
...
?>

en dan:
  1. <?php
  2. ....
  3. $sBericht .= "=====Bestelling van de klant=====\n\n";
  4.  
  5. $sBericht .= "id: ".$bestelling_compleet[0]."\n";
  6.  
  7. $sBericht .= "Productnaam: ".$bestelling_compleet[1]."\n";
  8.  
  9. $sBericht .= "Aantal: ".$bestelling_compleet[2]."\n";
  10.  
  11. $sBericht .= "Prijs: ".$bestelling_compleet[3]."\n";
  12.  
  13. $sBericht .= "Totaal prijs per product: ".$bestelling_compleet[4]."\n";
  14.  
  15. $sBericht .= "=====Einde bestelling van de klant=====";
  16.  
  17. mail ($sNaar,$sOnderwerp,$sBericht, $sHeader); // spulletjes worden door gemaild
  18.  
  19. ....
  20. ?>


Als iemand nu 1 product besteld gaat het prima omdat ik $bestelling_compleet[0]." t/m 4 door stuur. Maar zodra iemand meerdere producten heeft besteld kan $bestelling_compleet[20]." wel bestaan en wordt dus niet doorgemailt.
Hoe moet ik dit doen?
Ik denk met een for() lus maar ik weet niet hoe.

4 antwoorden

Gesponsorde links
Offline Thomas - 09/06/2005 19:27
Avatar van Thomas Moderator Ik zou het wat anders bijhouden - ik neem aan dat je van sessies gebruik maakt om gegevens te onthouden ? Zoniet, zou ik daar toch eens serieus over na gaan denken. wat ik zou doen als ik zo'n boodschappenmandjessysteem had is het volgende:

Maak een array met als sleutels de produkt-id's (nummers waarmee produkten uniek geidentificeerd worden, als je zoiets ook niet hebt wordt het hoog tijd dat je je produkten-database eens onder handen neemt ) en als values de aantallen, dus bijvoorbeeld:
$produkten[5] = 10; wil zeggen: de klant heeft 10 keer produkt met id 5 besteld. Dan loop je met een for(each) lus het hele array af op het moment dat je af wilt rekenen / een rekening wilt maken. De gegevens van zo'n produkt moet je niet tussentijds in een array proppen - je kan deze elk moment via het produkt-id opvragen - dat lijkt me gewoon stukken makkelijker dan zo'n array wat op een rijdend archief lijkt .
Offline leendertW - 09/06/2005 19:32 (laatste wijziging 09/06/2005 21:06)
Avatar van leendertW PHP beginner Ja ik heb inderdaad de de bestelling in een sessie staan ( $_SESSION['card'] )

en in als ik iets toevoeg doe ik dit:

$_SESSION['cart']="[$id,$aantal]";

Bij het afrekeken staan die gegevens daar ook nog in maar ik weet niet hoe ik die uit moet lezen vandaar dat ik ze eerst in een array heb gezet en dan uitlees met foreach()
dus ik stop het id en het aantal van een product in een sessie.
Maar heb je geen oplossing voor zoals het er nu bij staat;-) ?

edit:

Als ik 4 producten bestel en de $_SESSION['card'] echo zie ik dit:
[12,1][15,3][14,1][5,3]

eerste is voor id en de 2e voor aantal.

Nu geef ik met mysql_fetch_assoc de producten weer maar hij geeft er maar 1 weer ipv alle 4. Hoe moet ik die weer geven?
Offline Fenrir - 09/06/2005 21:22
Avatar van Fenrir PHP expert Je kunt het beter zo in de session zetten:

$_SESSION['cart'][0]['ID'] = $id;
$_SESSION['cart'][0]['aantal'] = $aantal;

En dan steeds de volgende dingen zo:

$_SESSION['cart'][1]['ID'] = $id2;
$_SESSION['cart'][1]['aantal'] = $aantal2;

Voor de 3e

$_SESSION['cart'][2]['ID'] = $id3;
$_SESSION['cart'][2]['aantal'] = $aantal3;
Offline leendertW - 09/06/2005 22:06 (laatste wijziging 10/06/2005 12:36)
Avatar van leendertW PHP beginner Edit:

probleem is verholpen.

Ik heb het gedaan zoals Fangorn zei.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.181s