Webshop sessions
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!
Gewijzigd op 01/01/1970 01:00:00 door Marijn
$_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.
foreach door een array lopen, ook door multidimensionele.
Je kunt met 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']['aantal'] = $aantal;
Dan een foreach en je bent klaar!
Gewijzigd op 01/01/1970 01:00:00 door - Ariën -
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!
$_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:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?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.
*/
}
?>
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
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
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:
Code (php)
lijkt mij zo.
(Met de array / session / ding van SanThe.)
Spuit 11.
Gewijzigd op 01/01/1970 01:00:00 door - Ariën -
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:
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
Gewijzigd op 01/01/1970 01:00:00 door Bram
Geef de line eens waarnaar verwezen wordt. Waarschijnlijk probeer je een var die geen array is uit te lezen als ware het een array()
Als je dan voor in je winkelmandje de naam van alle producten (dus niet het ID) wilt tonen, dan moet je in die foreach voor elk product dus 1 query draaien om de naam op te halen?
Lijkt me toch overbodig? Of kan dat makkelijker?
En volgens mij het opslaan van de naam van het product in de sessie niet netjes..
hoe?
Leuk, maar om een hele bestaande class te gebruiken vind ik onnodig. Ik wil het liever gewoon zelf scripten. Dus als je een oplossing hebt?
Waarom zou je niet alleen de login in de sessie houden en de webshop gegevens dan in mysql houden?
Jim schreef op 02.02.2010 10:09:
Waarom zou je niet alleen de login in de sessie houden en de webshop gegevens dan in mysql houden?
Waar koppel je het winkelmandje dan aan als iemand geen account (nog?) heeft? Zowiezo al niet op IP. Als je ingelogd bent kan dat op UserID, maar ja... niet iedereen wil een account aanmaken om een winkelmandje te kunnen gebruiken.
@ Niels. Bij jouw moeten ze zich ook registreren om te winkelen. Dat kan e.v.t ook achteraf. Kan je in korte lijnen vertellen hoe jij die in zo'n foreach, of wat je dan ook maar gebruikt om de winkel-mandje-sessions uit te lezen de namen van de producten ophaalt? Of gebruik je daar ook 1 query voor?
Gewijzigd op 01/01/1970 01:00:00 door - Ariën -
Geef de melding dat alleen voor deze keer dat je op de website bent de winkelwagen onthouden wordt. Wil je dat de producten altijd zichtbaar zijn dan moet je een account aanmaken:)
Niels schreef op 02.02.2010 10:15:
@Aar.
Geef de melding dat alleen voor deze keer dat je op de website bent de winkelwagen onthouden wordt. Wil je dat de producten altijd zichtbaar zijn dan moet je een account aanmaken:)
Geef de melding dat alleen voor deze keer dat je op de website bent de winkelwagen onthouden wordt. Wil je dat de producten altijd zichtbaar zijn dan moet je een account aanmaken:)
Het gaat om de namen van de producten tonen voor in hun winkelwagentje/mandje/whatever, in de Sessie staat de ID, daar kan een klant niks mee.
Dus how?
Gewijzigd op 01/01/1970 01:00:00 door - Ariën -
Ow zo.
Uh ja ik had in de database een tabel opgeslagen carts