Hallo allemaal.

Ik moet voor school een webshop bouwen in PHP. Ik kan goed overweg met php en mysql. Geen probleem dus. Alleen de sessies heb ik nog nooit eerder mee gewerkt.

Ik heb even op internet gekeken naar de werking van sessies. Hier kwam ik alleen de hele erge basis tegen. Dus 1 ding toevoegen en verwijderen. Met een webshop is het alleen wat ingewikkelder. Ik moet meerdere dingen in sessies kwijt. Denk aan productnummer en het aantal. Dit kan ik gewoon doen door te werken met een scheidingsteken als een comma volgensmij. Maar ik kom er ECHT NIET uit. Hoe controleer ik of productnr al in sessie staat zodat er dus 1 bij aantal bij gezet kan worden? Hoe splits ik aantal en productnr in de sessie?

Kan iemand voorbeeldscriptje maken met zoiets als dit:
$productnr = $_GET['productnr'];
$aantal = $_GET['aanta;'];

Dit wil ik in sessie zetten. Dat is nog niet zo lastig. Kan gewoon met bijv. $_SESSION['cart'] = $productnr".|".$aantal;

Maar er moet controle komen of toevallig al sessie is met dat productnr. als dat zo is moet hij die sessie veranderen. dus aantal van die sessie naar 2 zetten

Alvast bedankt!
Gebruik array()'s.

$_SESSION['cart']['productnummer1'] = $aantal1;
$_SESSION['cart']['productnummer2'] = $aantal2;
Enz.
Uhhm Ik denk niet dat dit zo gaat werken? Als ik dit wil weergeven als men klikt op mijn winkelwagentje. Wat laat ik dan zien? Ik weet ja niet wat zij als product hebben gedaan? En hoe onderscheid ik zo het nummer van het aantal? Ik heb nog nooit eerder met sessies gewerkt dus beetje meer uitleg is welkom.
Je kunt met [php]foreach[/php] door een array lopen, ook door multidimensionele.
@ Marijn

Als je niet weet hoe je het precies meot schrijven, kijk dan af van bestaande webshops of soortegelijke dingen. Een gastenboek is een beetje de basis voor een Webshop.

Je kan ook een variabele maken voor wat er allemaal in een sessie moet worden opgeslagen, en een sessie van die variabele maken.
$_SESSION['artikel_idnr'] = $artikel_idnr;
$_SESSION['artikel_idnr']['aantal'] = $aantal;

Dan een foreach en je bent klaar!
die foreach is in dit voorbeeld dus bedoeld om de producten in de winkelwagen te tonen dan?
Eejee schreef op 06.11.2008 16:28
$_SESSION['artikel_idnr'] = $artikel_idnr;
$_SESSION['artikel_idnr']['aantal'] = $aantal;

Dan een foreach en je bent klaar!


@Eejee

Neeej dat gaat neit helemaal goed want jij krijgt nu een foute sessie opbouw. Je maakt nu eerst van $_SESSION['artikel_idnr'] de waarde van een artikel (dus gewoon een variabele) en vervolgens maak je er een array van door ['aantal'] te gebruiken.
Doe je dit voor een nieuw artikel dat je aan je mandje wil toevoegen gaat het fout. Je maakt eerst weer de gewone variabele $_SESSION['artikel_idnr'] en vervolgens maak je er weer opnieuw een array van. Uiteindelijk heb je alleen maar 1 aantal erin staan (jup, that's all) en wel die van het laatst toegevoegde artikel.

$_SESSION['mandje'][$artikel_idnr] = $aantal; moet je gebruiken.

Je kan dan met:

<?php
foreach($_SESSION['mandje'] as $artikelnummer => $aantal_besteld){
echo $artikelnummer.': '.$aantal_besteld.'<br />';//toon art.nummer+ aantal besteld
/*hier verder werken, hij loopt zelf alle artikelen in je sessie langs in deze lus
je kan met een query aan de hand van het id prima het bijbehorende product ophalen.
*/
}
?>

edit

@Karl als bovenstaande tegen mij was, dan heb je dat bij het juiste eind.


@Karl
Aar schreef op 06.11.2008 16:32
die foreach is in dit voorbeeld dus bedoeld om de producten in de winkelwagen te tonen dan?

Yep zoiets:
<?php
foreach($_SESSION['cart'] => $key as $value) {
echo 'Productnummer: ' . $key . ' Aantal: ' . $value;
}
?>

lijkt mij zo.
(Met de array / session / ding van SanThe.)
Spuit 11.
Thnx, ik zal er ook eens mij klooien, en Marijn de TS zal dat ook vast wel doen dan denk ik zo ;).
Aar schreef op 06.11.2008 18:44
Thnx, ik zal er ook eens mij klooien, en Marijn de TS zal dat ook vast wel doen dan denk ik zo ;).


Ik zit zelf ook een beetje te spelen met het creeeren van een winkelmandje, heel simpel om te testen gebruik ik dit stukje:

<?php
$_SESSION['cart']['A1'] = '1';
?>


Wanneer ik dit uitvoer krijg ik de volgende error:

Warning: Cannot use a scalar value as an array in cart.php on line XX

Maar ik snap niet wat ik fout doe? Bovenaan het document staat normaal session_start();. Moet ik misschien vooraf definieren of deze sessie een array is (zoja, hoe doe ik dat..?)?

Alvast bedankt voor jullie hulp!

Bram

Reageren