login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Session array

Offline TriX - 24/04/2006 15:36
Avatar van TriXHTML interesse ik krijg de volgende waarden binnen:
  1. <?php
  2.  
  3.  
  4. $new_productid = $_GET['id'];
  5. $new_productnaam = $_GET['productnaam'];
  6. $new_productprijs = $_GET['prijs'];
  7. $new_productomschrijving = $_GET['omschrijving'];
  8. ?>


Deze wil in in een array zetten... deze array moet een session worden!

Als ik een nieuw product selecteer moet hij deze aan deze array teovoegen... hoe doe ik dat? :S

23 antwoorden

Gesponsorde links
Offline marten - 24/04/2006 15:39
Avatar van marten Beheerder wat voor array wil je nou hebben?

array 1: (productid)
---------
1
2
3
4
5

array 2: (naam)
---------
blaat1
blaat2
blaat3
???????????????
Offline TriX - 24/04/2006 15:41
Avatar van TriX HTML interesse nee...

[productid] => 1 [productnaam] => test enz.


zo!
Offline timo - 24/04/2006 15:41
Avatar van timo PHP ver gevorderde je kan dit doen:
  1. <?php
  2. $_SESSION['sessienaam'] = array($new_productid,$new_productnaam,$new_productprijs,$new_productomschrijving);
  3. ?>

dan is bv $_SESSION['sessienaam'][0] $new_productid
let je wel op dat dit gevaarlijk is zonder dingen als addslashes...
Offline TriX - 24/04/2006 15:44 (laatste wijziging 24/04/2006 16:44)
Avatar van TriX HTML interesse T wordt een shop...

Ik klik op een plaatje... deze stuurt m naar een javascript die de pagina reload en de juiste waarden van het product meegeeft. De waarden moeten in een session gezet worden. Er moeten dus meerdere producten in de sessie gezet kunnen worden.
Offline Gerard - 24/04/2006 16:46
Avatar van Gerard Ouwe rakker Aan alleen het id heb je toch genoeg? De rest van de info kan je uit de database halen.
Offline Thomas - 24/04/2006 16:47 (laatste wijziging 24/04/2006 16:49)
Avatar van Thomas Moderator Denk goed na bij wat je in een sessie stopt, en hoe je dit doet.

Het enige wat je in principe in je sessie hoeft te stoppen is een product-id en een aantal. De rest (productnaam, (stuk)prijs, omschrijving, etc.) is afleidbaar, dus dit hoef je niet in je sessie te zetten!

Ik zou een aparte (array-)variabele in je sessie introduceren, genaamd "producten" of "winkelmandje" of "basket" of wat dan ook.

Je zou dan bijvoorbeeld als volgt gegevens van producten op kunnen slaan in je sessie:

  1. <?php
  2. // aanmaken
  3. $_SESSION['basket'] = array();
  4.  
  5. // toevoegen
  6. // hierbij zijn <product_id> en <product_aantal> getallen
  7. $_SESSION['basket'][<product_id>] = <product_aantal>;
  8.  
  9. // verwijderen
  10. unset($_SESSION['basket'][<product_id>]);
  11.  
  12. // uitlezen
  13. foreach($_SESSION['basket'] as $prod_id => $prod_aantal)
  14. {
  15. echo "id: ".$prod_id." aantal: ".$prod_aantal;
  16. }
  17. ?>


Zie je hoe makkelijk al die winkelmand-operaties worden als je ff nadenkt over hoe je je sessievariabelen inricht? Scheelt je later veel werk!
Offline Ibrahim - 24/04/2006 16:48 (laatste wijziging 24/04/2006 16:48)
Avatar van Ibrahim PHP expert je doet gewoon dit:
  1. <?php
  2. $_SESSION['some'] = array("kind" => "of",
  3. "session" => "array"
  4. );
  5. ?>


iets te laat 
Offline TriX - 24/04/2006 16:53 (laatste wijziging 25/04/2006 10:30)
Avatar van TriX HTML interesse Kom er niet echt lekker uit...

Ik krijg maar 1 productlijst in het array... hij voegt er geen producten aan toe... hij past de waarden gewoon aan!

Heb nu dit:
  1. <?php
  2.  
  3. $_SESSION['winkelwagen'] = array();
  4. $_SESSION['winkelwagen'][$new_productid] = $new_productnaam;
  5.  
  6. ?>
Offline Thomas - 25/04/2006 10:35
Avatar van Thomas Moderator Als je elke keer als je een product wilt toevoegen $_SESSION['winkelwagen'] = array(); gebruikt, zal die elke keer het winkelwagen-array leeggooien, en dat lijkt mij niet de bedoeling?
Offline TriX - 25/04/2006 10:50
Avatar van TriX HTML interesse nee dat klopt, dat is niet de bedoeling! Maar dat is ook juist het probleem...

Hoop dat je me kan verder helpen! Zit op me stage en kom er egt niet uit...
Offline marten - 25/04/2006 10:52
Avatar van marten Beheerder heb je de regel al weg gehaald?

Deze moet je 1x aanmaken dus ergens boven in je script zetten bv
Offline Thomas - 25/04/2006 10:57
Avatar van Thomas Moderator Voor het uitvoeren van bewerkingen op je winkelwagen zou ik een aantal functies introduceren, bijvoorbeeld:
add_to_cart($id, $naam, $prijs, $aantal, $omschr)
remove_from_cart($id)
empty_cart()

(wat deze functies doen lijkt me redelijk voor de hand liggend)

Verder lijkt het me zeer onhandig dat je producten niet in een database staan...
Offline TriX - 25/04/2006 10:58 (laatste wijziging 25/04/2006 11:00)
Avatar van TriX HTML interesse Maar hij komt telkens opnieuw op de pagina. Er wordt op een plaatje geklikt, die geeft de waarden van het product mee dmv een javascript. Deze reload de pagina en haalt dus aan het begin de waarden op. Hoe kan ik ervoor zorgen dat het array maar 1 keer wordt aangemaakt?

Misschien een session maken met de waarde '1' nadat het array is aangemaakt. Je voert het aanmaken van het array alleen uit als de waarde in de sessie '0' is! zo iets??? 

@Fangorn... Ja is ook irritant dat ze niet in een db staan. Maar moet volgens mij moet dat geen problemen opleveren waar ik nu mee te maken heb. De klant hoeft het niet in een db... en de klant is koning 
Offline vinTage - 25/04/2006 11:02
Avatar van vinTage Nieuw lid je kan toch checken of je session al gezet is met
if(!isset(je session))
{ //start nieuwe sessie }
else
{//gebruik bestaande }

of iets in die trent ?
Offline Thomas - 25/04/2006 11:02 (laatste wijziging 25/04/2006 11:03)
Avatar van Thomas Moderator Je kunt kijken of je winkelwagen al bestaat?

Wederom een functie?

  1. // retourneert een boolean die aangeeft of de winkelwagen bestaat
  2. function cart_exists()
  3. {
  4. return isset($_SESSION['winkelwagen']);
  5. }


Of je maakt een functie die de winkelwagen meteen maakt

  1. function cart_make()
  2. {
  3. if(!isset($_SESSION['winkelwagen']))
  4. {
  5. $_SESSION['winkelwagen'] = array();
  6. }
  7. // geeft aan of het aanmaken succesvol was
  8. return isset($_SESSION['winkelwagen']);
  9. }


Huh?! De klant merkt toch niet dat jij op de achtergrond met een database werkt?!
Offline TriX - 25/04/2006 11:03 (laatste wijziging 25/04/2006 11:09)
Avatar van TriX HTML interesse ja zat ik ook al aan te denken... was t al aan t proberen maar wist niet met welke functie! isset dus... THNX!

EDIT:

Okey dat werkt. Ik kan nu ook geen dubbele waarden aan het array toevoegen! Dus dat is mooi! Nu moet ik alleen nog meerdere waarden aan het array toevoegen die bij het juiste productid horen...

$new_productnaam;
$new_productprijs;
$new_productomschrijving

heb nu:
  1. <?php
  2.  
  3. $_SESSION['winkelwagen'][$new_productid] = $new_productnaam;
  4.  
  5. ?>


Alvast bedankt voor jullie hulp! 
Offline marten - 25/04/2006 11:42 (laatste wijziging 25/04/2006 11:43)
Avatar van marten Beheerder nee dat hoeft niet want die staan in je database ;)

dus je kan zoals eerder gezegd:

sessie v winkelwagen bevat bv
2
5
8
9
10

Dit zijn de product nummers en daar kan je nou kijken welke gegevens daar bij horen ;) die hoeven dus niet in een sessie.
Offline Thomas - 25/04/2006 11:46
Avatar van Thomas Moderator TriX had al eerder aangegeven dat 'ie geen gebruik maakt van een database... Dat hoeft trouwens geen belemmering te vormen om het aan te pakken zoals marten / proximus / ik voorstelden .
Offline TriX - 25/04/2006 12:11 (laatste wijziging 25/04/2006 13:26)
Avatar van TriX HTML interesse ja maar hoe zorg ik ervoor dat die de juiste waarden aan bijv. $new_productid 1 toevoeg?

  1. <?php
  2.  
  3. $_SESSION['winkelwagen'][$new_productid] = $new_productnaam, ?????;
  4.  
  5. ?>


Ik krijg errors als ik probeer meerdere waarden toe te voegen... hoe moet dit precies doen?
Offline marten - 25/04/2006 13:37
Avatar van marten Beheerder welke errors?
Offline Thomas - 25/04/2006 13:48
Avatar van Thomas Moderator STAP 1
Vraag jezelf af welke dingen je wilt (kunnen) doen met je shoppingcart.
Wil je meerdere keren een of meer producten toevoegen of verwijderen uit je winkelmandje, wil je deze helemaal kunnen leeggooien et cetera.

STAP 2
Vervolgens ga je dit in codevorm gieten. Je kunt dit doen door verschillende operaties in verschillende functies te stoppen, bijvoorbeeld een functie voor het toevoegen (of verwijderen) van een (of meer) producten, een functie voor het legen van je winkelmand et cetera.

STAP 3
TEST je oplossing. Doet de code ook wat hij behoort te doen?

Trek deze 3 stappen even uit elkaar, dat werkt een stuk makkelijker.
Offline TriX - 25/04/2006 13:51 (laatste wijziging 25/04/2006 14:01)
Avatar van TriX HTML interesse Ik heb al een oplossing....

  1. <?php
  2.  
  3. $new_product = $new_productnaam . "_" . $new_productomschrijving . "_" . $new_productprijs;
  4.  
  5.  
  6.  
  7. $_SESSION['winkelwagen'][$new_productid] = $new_product;
  8.  
  9.  
  10. foreach($_SESSION['winkelwagen'] as $new_productid => $new_product)
  11. {
  12. $producteigenschap = explode("_", $_SESSION['winkelwagen'][$new_productid]);
  13. echo " <B>id:</B> ".$new_productid." <B>naam:</B> ".$producteigenschap[0]." <B>omschrijving:</B> ".$producteigenschap[1]." <B>prijs:</B> ".$producteigenschap[2]."";
  14. echo "<br>";
  15. }
  16.  
  17.  
  18. ?>


dmv explode haal ik ze uit elkaar!
Iedereen bedankt... Me baas was tevreden 
Offline marten - 25/04/2006 14:03
Avatar van marten Beheerder dmv implode kan je ze ook aan elkaar zetten ;)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.301s