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...
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?
Ja dat bedoel ik ja, maar dat staat er ook wel duidelijk ;)
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.
Tip: Normaliseren
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...
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.
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.
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 ]
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...

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]

Reageren