Hvordan får data fra en foreach til databassen

Tags:    php mysql

Hej udviklerne.

Jeg er i gang med at lave en lille shop, og det eneste jeg mangler er får ordrene ind i databassen men kan ikke helt se mig ud af det.

Dette er min indkøbkurv:
Fold kodeboks ind/udPHP kode 



Dette som skal gøre at det komme i databassen kommer her:
Fold kodeboks ind/udPHP kode 


Min databasser ser sådan ud

ordre = hovede ordren.

ordrenummer
kundeid
afhentet
totalpris

ordrene = specifik vare

id
ordrenummer
varenummer
antal
timestamp
prisalt = pris alt per vare

Håber i kan hjælpe



Indlæg senest redigeret d. 15.09.2011 21:32 af Bruger #16264
9 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Hvad er dit problem, ser da ud til du har lavet dine inserts til at indsætte dine data ? Fejler de eller mangler du noget ?



Hej Benni.

Ja de insert men det der er problemet er

inde på ordrene komme der ikke noget ind og inde på ordre komme der en frem men der mangler totalprisen



På det tidspunkt, hvor du indsætter i ordre har du jo udmiddelbart heller ingen data endnu ? Du definerer først variablen $total senere, så den er jo vel null, der hvor du først indsætter den.

Pris i ordrene ligner det at du har byttet rundt på pris pr stk og pris i alt, ved ikke om det er nok til at sænke den pga. evt mærkelige valg af datatype +
Du har også indsat dit id som var det en varchar (altså '' pinger omkring) - din id er vel et tal =?
Du har indsat samtlige af dine værdier i din database som var de tekst, men de er vel henholdsvis tal og decimal tal ?



Indlæg senest redigeret d. 15.09.2011 21:53 af Bruger #10576
Hej benni

Jeg har ændre det nu til

Fold kodeboks ind/udPHP kode 


Men der jeg tog pinger af kom der en fejl så tog dem på igen, men nu siger den

Og nu kommer den med denne fejl

Column count doesn't match value count at row 1



Lidt svært at lure. Kan sådan generelt foreslå at tage 1 ting af gangen.
Løbe dine værdier igennem og print dem ud. Hvis det ser rigtig ud, tilføj den første insert og se hvordan dette går, og så tilføj det næste.

Kan lige spotte at denne ser mærkelig ud.
mysql_query("UPDATE vare SET lbh='lbh-$item_count' WHERE varenavn=$item");



Det er sådan er den minus lagerbeholdning.

Jeg har næsten fået det til at virke den for alle info med nu.

Men den som hedder ordre kommer der også 2 ind hvor der kun skal komme en ind

Kode ser sådan er nu
Fold kodeboks ind/udPHP kode 




Ja, det er jo klart, du looper igennem hvert item i din indkøbskurv.. Men ordren skal du jo kun have i en gang, så den skal du have efter din foreach. der skal du huske at have nogen globale variabler for de værdier, du trænger til at lave den samlede ordre.



Som jeg læser koden, så...

Du looper alle varene igennem, men for hver vare laver du en ordre.

Din ordre skal være en total af alle varene, så flyt din indsæt-ordre udenfor din vareoptælling



Det her burde virke, men der er minimum tre problemer med det.

1. Du har en tid på alle items i den samme order, ville tro tiden skulle have været på order

2. Det er muligt at bestille mere end dit lager, og muligvis sætte det lager til en negativ beholdning (afhænger af om datatype er signed eller unsigned.).

3. Dette er i princippet 2., men det er muligt for en kunde at bestille noget som en anden kunde lige har bestilt.

Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 16.09.2011 12:44 af Bruger #5620
t