Webshop sessions

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Marijn

marijn

06/11/2008 15:57:00
Quote Anchor link
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!
Gewijzigd op 01/01/1970 01:00:00 door Marijn
 
PHP hulp

PHP hulp

02/12/2024 19:41:14
 
- SanThe -

- SanThe -

06/11/2008 16:04:00
Quote Anchor link
Gebruik array()'s.

$_SESSION['cart']['productnummer1'] = $aantal1;
$_SESSION['cart']['productnummer2'] = $aantal2;
Enz.
 
Marijn

marijn

06/11/2008 16:13:00
Quote Anchor link
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.
 

06/11/2008 16:15:00
Quote Anchor link
Je kunt met foreach door een array lopen, ook door multidimensionele.
 
Tamara

Tamara

06/11/2008 16:27:00
Quote Anchor link
@ 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.
 
Ee jee

Ee jee

06/11/2008 16:28:00
Quote Anchor link
$_SESSION['artikel_idnr'] = $artikel_idnr;
$_SESSION['artikel_idnr']['aantal'] = $aantal;

Dan een foreach en je bent klaar!
 
- Ariën  -
Beheerder

- Ariën -

06/11/2008 16:32:00
Quote Anchor link
die foreach is in dit voorbeeld dus bedoeld om de producten in de winkelwagen te tonen dan?
Gewijzigd op 01/01/1970 01:00:00 door - Ariën -
 
Robert Deiman

Robert Deiman

06/11/2008 16:42:00
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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.
     */

     }
?>


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
 

06/11/2008 16:45:00
Quote Anchor link
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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
foreach($_SESSION['cart'] => $key as $value) {
echo 'Productnummer: ' . $key . ' Aantal: ' . $value;
}

?>

lijkt mij zo.
(Met de array / session / ding van SanThe.)
Spuit 11.
Gewijzigd op 01/01/1970 01:00:00 door
 
- Ariën  -
Beheerder

- Ariën -

06/11/2008 18:44:00
Quote Anchor link
Thnx, ik zal er ook eens mij klooien, en Marijn de TS zal dat ook vast wel doen dan denk ik zo ;).
Gewijzigd op 01/01/1970 01:00:00 door - Ariën -
 
Bram

Bram

22/11/2008 20:04:00
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?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
Gewijzigd op 01/01/1970 01:00:00 door Bram
 
Klaasjan Boven

Klaasjan Boven

22/11/2008 20:50:00
Quote Anchor link
Geef de line eens waarnaar verwezen wordt. Waarschijnlijk probeer je een var die geen array is uit te lezen als ware het een array()
 
- Ariën  -
Beheerder

- Ariën -

02/02/2010 10:01:00
Quote Anchor link
Dat ziet er geweldig uit, maar ik had een vraag.

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?
 
Niels K

Niels K

02/02/2010 10:03:00
Quote Anchor link
Kijk anders hier even naar:)

http://www.phphulp.nl/php/scripts/7/1756/
 
- Ariën  -
Beheerder

- Ariën -

02/02/2010 10:06:00
Quote Anchor link
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?
 
- Jim  -

- Jim -

02/02/2010 10:09:00
Quote Anchor link
Waarom zou je niet alleen de login in de sessie houden en de webshop gegevens dan in mysql houden?
 
Niels K

Niels K

02/02/2010 10:13:00
Quote Anchor link
Uhh dan kijk je naar de class en dan maak je zelf 1 met je eigen implementatie?:)

Gefeliciteerd met je 2000 post trouwens:)
Gewijzigd op 01/01/1970 01:00:00 door Niels K
 
- Ariën  -
Beheerder

- Ariën -

02/02/2010 10:13:00
Quote Anchor link
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 -
 
Niels K

Niels K

02/02/2010 10:15:00
Quote Anchor link
@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:)
 
- Ariën  -
Beheerder

- Ariën -

02/02/2010 10:18:00
Quote Anchor link
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:)

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 -
 
Niels K

Niels K

02/02/2010 10:25:00
Quote Anchor link
@Aar

Ow zo.

Uh ja ik had in de database een tabel opgeslagen carts
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.