Avatar billede sebster Nybegynder
20. april 2004 - 15:41 Der er 15 kommentarer og
1 løsning

Den smarteste måde at gemme bestilling i database!

Jeg sidder og skal gemme nogle data fra en session i en database. Det er kun antal og id'er der skal gemmes. Men hvad er smartest hvis jeg skal kunne hive dem frem og ændre i dem igen???

Jeg har ikke set nogle webshops fra den side så håber på nogen med erfaring kan hjælpe!
Avatar billede jakobdo Ekspert
20. april 2004 - 16:00 #1
Hvorfor ikke lave en tabel:
ANTALID
id
antal

Men spørgsmålet er om du skal gemme det fra gang til gang?
Er det en form for brugere der skal gemmes i databasen?
Avatar billede dennismp Nybegynder
20. april 2004 - 16:47 #2
Hvis det er en bestilling så har du også andre data, fx.

OrdreID
FakturaID / Bestillingsnummer,
Kundens navn,
Dato,
Adresse,
Email,

og så en bestillingstabel

OrdreID,
vareid,
prisprstk,
antal

det VareId er id'et på produktet der er bestilt. Grunden til at prisen også er på bestillingstabellen (Den findes nok også på produkttabellen) er, at hvis du ændre priser, så skal det ikke have indflydelse på tidligere ordre (eller aktuelle). Ved at gemme prisen da kunden bestilte, undgår du dette og ligende problemer.
Avatar billede sebster Nybegynder
20. april 2004 - 18:24 #3
Hvis jeg så bestiller mere end en vare så vil der forekomme flere poster i tabellen med samme ordrenr ik? Hvis det er korrekt tror jeg at jeg har forstået budskabet!
Avatar billede dennismp Nybegynder
20. april 2004 - 18:30 #4
Ja, hvis jeg bestiller 10 blyanter og 2 blokke, så vil der være to rækker i bestillingstabellen. (en for blyanter med antal=10, og en anden for blokke med antal=2)
Avatar billede sebster Nybegynder
20. april 2004 - 18:33 #5
Nemmerlig og den vil begge have samme ordre nr! læg et svar så smider jeg nogle point!
Avatar billede dennismp Nybegynder
20. april 2004 - 18:35 #6
ok
Avatar billede sebster Nybegynder
22. april 2004 - 13:14 #7
t ekstta spørgsmål. Hvordan får jeg tillagt samme ordre nr. i de forskellige poster i databasen?
Avatar billede dennismp Nybegynder
22. april 2004 - 13:31 #8
Hvis du laver OrdreID i ordre-tabellen som auto_increment, så tæller mysql selv id'et op. Så du indsætter bare en række i ordre tabellen og bruger mysql_insert_id() for at gå den nye ide, og sætte dette id ind i bestillingstabellen.
Avatar billede sebster Nybegynder
22. april 2004 - 13:34 #9
Hvor skal jeg placere den, helt præcist???
Avatar billede dennismp Nybegynder
22. april 2004 - 13:42 #10
I stil med..

insert-i-ordre-tabel, sæt id=NULL  (eller undlad, så tildeler mysql eet id selv)
$ordreid = mysql_insert_id()
insert-i-bestillingstabel hvor ordreid=$ordreid
Avatar billede sebster Nybegynder
22. april 2004 - 14:09 #11
Hvad gør jeg galt, den opdatere ikke i databasen, mit script ser således ud!!!

<?php
require('session.php');
include('dbconnect.php');
                if (isset($_SESSION['shopcart'])) {
 
                      $orderid = mysql_insert_id();
                   
                    foreach (($_SESSION['shopcart']) as $proid => $antal)
                    { 
                    if ($antal >= 1) {
       
                    $info = mysql_query("SELECT * FROM product WHERE proid=$proid") or die ("Could not connect to the Database");
                    while ($wines=mysql_fetch_array($info)) {
                   
                    $kundeid=$_SESSION['id'];
                    $date=date("D d M Y H:i");
                    $proid=$wines['proid'];
                    $proname=$wines['proname'];
                    $price=$wines['price'];
                    $num=$wines['num'];
                    $liter=$wines['provol'];
                    $year=$wines['year'];
                    $betalt=0;
                   
                    }
                    mysql_query("INSERT INTO faktura SET orderid='$orderid', kundeid='$kundeid', proid='$proid', date='$date', product='$proname', pris='$price', antal='$antal', num='$num' liter='$liter', aar='$year', betalt='$betalt'");
                   
                    }
                    }
                   
   
               
                    }
                   
                   

?>
Avatar billede sebster Nybegynder
22. april 2004 - 14:13 #12
Fandt ud af det. havde glemt at sætte et ,. Men den giver forskelligt orderid!!! Hvad gør jeg galt!
Avatar billede dennismp Nybegynder
22. april 2004 - 17:09 #13
er det kun en del af scriptet du har vist?
Avatar billede sebster Nybegynder
22. april 2004 - 20:03 #14
Ja men har fundet en l&oslash;sning!
Avatar billede dennismp Nybegynder
22. april 2004 - 20:05 #15
Gider du at poste den (eller ideen)? Så kan det være andre kan bruge det :-).
Avatar billede sebster Nybegynder
22. april 2004 - 20:07 #16
Ja selvf&oslash;lgelig

$goid=mysql_query("SELECT * FROM faktura ORDER BY oid DESC LIMIT 1") or die ("Could not connect to the Database");
                    while ($getid=mysql_fetch_array($goid)) {                   
                      $orderid=$getid['orderid'] + 1;                   
                    }
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester