20. april 2004 - 15:41Der 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!
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.
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!
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)
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.
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
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'");
$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; }
Synes godt om
Ny brugerNybegynder
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.