Een sessie winkelwagen in DB gooien

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Johan

Johan

16/05/2006 09:34:00
Quote Anchor link
Hallo,

Ik heb een sessie winkelwagen, daarin staan 3 producten!
Nu pak ik deze sessie uit met foreach()

Nou wil ik deze drie producten die nu uit de sessie worden getoond
met een INSERT INTO query in een tabel in de phpmyadmin database stoppen

Maarrr, hij maakt nu gewoon 3 nieuwe rijen aan in de tabel orders met dus drie nieuwe
order_id, maar hij moet gewoon 1 nieuwe rij aanmaken met in die rij die drie artikelen (artikel_id)

Zoekend naar een oplossing...
 
PHP hulp

PHP hulp

16/11/2024 20:45:08
 
Willem Jan Z

Willem Jan Z

16/05/2006 09:41:00
Quote Anchor link
Dus als ik je goed begrijp wil jij in 1 veld van je tabel 3 producten stoppen?

Zo ja: zucht
Zo nee: Wat bedoel je dan?
 
Johan

Johan

16/05/2006 10:08:00
Quote Anchor link
Ja dat bedoel ik ja, maar dat staat er ook wel duidelijk ;)
 
Robert Deiman

Robert Deiman

16/05/2006 10:12:00
Quote Anchor link
Dit is geen mooie oplossing Johan, wat beter is is bijvoorbeeld een row_id maken, een order_id en daarnaast 1 artikel_id.

Je krijgt dan bijvoorbeeld:

_______ _________ _________
row_id ][order_id ][artikel_id ]
1 ][500 ][450 ]
2 ][500 ][634 ]
3 ][500 ][913 ]
--------------------------------------

Snap je wat ik bedoel? Dit is een veel nettere oplossing, en wanneer iemand dan een rij wil verwijderen (lees: een product niet wil bestellen) is het mogelijk om die rij te verwijderen.
 
Barman V

Barman V

16/05/2006 10:12:00
Quote Anchor link
Tip: Normaliseren
 
Johan

Johan

16/05/2006 10:28:00
Quote Anchor link
Er is al genormaliseerd...

Maar het moet er dan eigenlijk zo uit zien:

_______ _________ _________
row_id ][order_id ][artikel_id ]
1 ][500 ][450 ] [3, 4, 5]
2 ][500 ][634 ] [8, 3, 9]
3 ][500 ][913 ]
--------------------------------------

Dus dat een ORDER meer dan 1 bestelling opslaat...


bij mij ziet het er nu zo uit namelijk:

order_id klant_id boek_id
1 2 129
2 2 131

dus klant met id 2 heeft 2 boeken besteld, maar wordt dus onder elkaar in DB gezet... en die twee boek_id moeten dus samen komen te staan...
 
Robert Deiman

Robert Deiman

16/05/2006 10:39:00
Quote Anchor link
Johan, kijk nog eens naar mijn post, dat werkt veel beter en netter! Dan is het wel genormaliseerd., je maakt het jezelf alleen maar moeilijk met deze methode. Probeer het eens op "mijn" manier.
 
Barman V

Barman V

16/05/2006 10:41:00
Quote Anchor link
Ik begrijp niet echt wat je wil.
ZOals ik het begrijp wil je meerdere artikelen in een record opslaan.
Dat zie ik door:
row_id ][order_id ][artikel_id ]
1 ][500 ][450 ] [3, 4, 5]
2 ][500 ][634 ] [8, 3, 9]
3 ][500 ][913 ]

Je mist hierboven alleen een kolomnaam. Wat bedoel je met die [3, 4, 5]?

Je kan beter niet meerdere artikelen in 1 rij opslaan. Het levert dan wel minder rijen op, maar de tijd die je kwijt bent om de kolom te selecteren, te splitsen en te tellen is veel meer.
Je kan dit [3, 4, 5] namelijk niet direct tellen als 3 artikelen. Dan moet je met php de functie explode gaan gebruiken.
Je moet echt mysql gebruiken voor het ophalen van gegevens. Mysql is daarop gefocused en daarom vele malen sneller dan php.
 
Robert Deiman

Robert Deiman

16/05/2006 10:50:00
Quote Anchor link
Dat is precies wat ik ook wil. Die 4e kolom met de artikelen moet weg ([3, 4, 5] en [8, 3, 9]) en 450, 634 en 913 zijn allemaal artikelen voor order_id 500.

Je krijgt dan dus nog maar 1 artikel per rij.

Ik weet wel waardoor het komt, dat die tabel nu zo raar lijkt, hij heeft de mijne gekopieerd en daarachter zijn artikel_id kolom (inhoud daarvan) gezet.

row_id ][order_id ][artikel_id ]
1 ][500 ][450 ]
2 ][500 ][634 ]
3 ][500 ][913 ]
4 ][501 ][457 ]
5 ][501 ][638 ]
6 ][501 ][919 ]
 
Johan

Johan

16/05/2006 10:54:00
Quote Anchor link
Robert, kheb jou idee nog eens door gekeken:

row_id ][order_id ][artikel_id ]
1 ] [500 ] [450 ]
2 ] [500 ] [634 ]
3 ] [500 ] [913 ]
--------------------------------------

Dit is misschien toch een nette oplossing... alleen is het dan niet zo dat je onnodig veel rijen krijgt?

Ben wat dat betreft nog wel beginneling, maar kan wel snel dingen oppakken...
 
Robert Deiman

Robert Deiman

16/05/2006 10:58:00
Quote Anchor link
Je krijgt meer rijen, maar het is gemakkelijker en veel sneller om ermee te werken. Er komt alleen nog wel een kolom bij, de kolom aantal. Je moet ook weten hoeveel een klant van een bepaald artikel heeft gekocht, en dat wil bij jou vorige oplossing niet eens.

row_id ][order_id ][artikel_id ][aantal ]
1 ][500 ][450 ][2]
2 ][500 ][634 ][3]
3 ][500 ][913 ][1]
4 ][501 ][457 ][6]
5 ][501 ][638 ][1]
6 ][501 ][919 ][3]
 
Johan

Johan

16/05/2006 11:04:00
Quote Anchor link
Dankje,

Mijn vorige oplossing was ook nog niet compleet, omdat ik eerst eens wilde dat hij de artikelen in één rij zet...

Maar aantal heb ik in php per artikel al klaar.

Maar ik zal eens met die tabel aan de slag, en hem opnieuw structueren, bedankt voor je tips.

Heb je nog wat tips m.b.t. een online bestelsysteem wat betreft factureren?
 
Robert Deiman

Robert Deiman

16/05/2006 11:12:00
Quote Anchor link
Voor je tabellen krijg je in principe de volgende:

Klanten --> alle klantgegevens (adres, telnr, naam etc)
Producten --> alle productgegevens (naam, omschrijving, prijs etc.)
Orders --> Samengestelde orders (ordernr, artikelcode, aantal, verkoopprijs)

Waarom de prijs in de order tabel? Een prijs kan veranderen terwijl de order is geplaatst, je wilt dat klanten niet voor verassingen komen te staan wat prijzen betreft.
 
Johan

Johan

16/05/2006 13:17:00
Quote Anchor link
Oké! die laatste is goede tip :)

btw, ik stuit op klein probleempje

[row_id] [order_id] [klant_id] [boek_id] [aantal]
[8] [0] [2] [131] [2]
[7] [0] [2] [130] [3]
[6] [0] [2] [129] [1]

Ik moet dan denk ik even controleren waar de tabel is met de hoogte van Order_id? en daar +1 bij op tellen? of zou je het anders doen?
Gewijzigd op 01/01/1970 01:00:00 door Johan
 
Frank -

Frank -

16/05/2006 13:54:00
Quote Anchor link
De tabel waar alle order_id's uit komen, heeft een kolom order_id die autoincrement is (en dus ook uniek!). Dit nummer zet je dan ook in de tabel met de verschillende producten. En je gebruikt het om een verband te leggen met je klanten, etc. etc.
 
Johan

Johan

16/05/2006 16:16:00
Quote Anchor link
In dit geval is het attribuut order_id niet auto increment...
Je zou denk ik ff de hele topic moeten lezen om te kijken waar het over gaat ;)
 



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.