Avatar billede krydset Nybegynder
16. november 2003 - 12:00 Der er 11 kommentarer og
1 løsning

lægge en ordrer i db

Hejsa jeg sidder og er ved at ligge en sidste hånd på min odrer db, men kan ikke rigtig finde ud af structuren på den.

Der skal ligges vareid, varenavn, varepris og selvfølgelig navn adresse osv.
Men det er de 3 øverste jeg er i tvivl om, de kommer fra en tabel som hedder varekurv og bliver trukket ud med en while og det virker osse pænt, men jeg vil gerne have så trukket dem ud igen så jeg kan bruge dem til senere reference, jeg har prøvet et oprette et felt til dem hver og ligge dem i et felt, men det bliver noget rod, hvordan kan jeg kringle den  så ordrene ligger pænt i databasen?
Avatar billede rackbox Nybegynder
16. november 2003 - 12:26 #1
Jeg vil gerne svare, men mangler lidt mere information.. Prøv at smide de tabeller, som bliver påvirket samt en lidt dybere forklaring af, hvad du vil have som resultat.
Avatar billede krydset Nybegynder
16. november 2003 - 12:48 #2
oki doki.

Jeg er ved at udvikle en webshop

jeg har en vare kurv, vare kurvern bruger en tabel som hedder varekurv, der bliver indsat en post for hver vare som der bliver tilføjet af brugeren. man kan selvfølgelig rette antal slette vare osv i den.

tabellen er her:

CREATE TABLE `kurv` (
  `id` int(11) NOT NULL auto_increment,
  `bruger_id` varchar(255) NOT NULL default '',
  `vare_navn` varchar(255) NOT NULL default '',
  `vare_pris` varchar(255) NOT NULL default '',
  `antal` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=4 ;

#

når man så har gennemført bestillingen bliver varene fra tabellen varekurv overført til tabellen ordrer, det er umiddelbart der problemet opstår. Der må nemlig kun være en post for hver ordre, i modsætning til kurven hvor der kommer en ny post for hver vare der kommer i.

Jeg bruger pt. flg kode til at indsætte i ordre tabellen

echo "<input type='text' name='fornavn' value='Fornavn'><br>";
echo "<input type='text' name='efternavn' value='Efternavn'><br>";
echo "<input type='text' name='adresse' value='Adresse'><br>";
echo "<input type='text' name='bynavn' Value='By'><br>";
echo "<input type='text' name='postnr' value='postnr'><br>";
echo "<input type='text' name='tlfnr' Value='Telefon nr'><br>";
echo "<input type='text' name='email' value='E-Mail'><br>";
echo "<select name='pay_mode'>";
echo "<option>Efterkrav + 45,-</option>";
echo "<option>Bank overførsel</option>";
echo "<option>Dankort</option>";
echo "</select><br>";
echo "<input type='submit' name='kob' Value='send ordre'>";
echo "</form>";

include("shop/dbconnect.php");
$vare = mysql_query("SELECT * FROM kurv WHERE bruger_id = '$_SESSION[unikt_id]'") or die(mysql_error());

while ($row = mysql_fetch_array($vare)) {
    $vareid .= "$row[id]";
    $varenavn .= "$row[vare_navn]";
    $varepris .= "$row[vare_pris]";
}

mysql_query("INSERT INTO ordrer (bruger_id, for_navn, efter_navn, adresse, bynavn, post_nr, telefon, e_mail, varer_id, vare_navn, vare_pris) VALUES ('$_SESSION[name]','$_POST[fornavn]','$_POST[efternavn]','$_POST[adresse]','$_POST[bynavn]','$_POST[postnr]','$_POST[tlfnr]','$_POST[email]','$vareid','$varenavn','$varepris')") or die(mysql_error());

tabellen for odrer tabel er her :

CREATE TABLE `ordrer` (
  `ordrer_id` int(11) NOT NULL auto_increment,
  `bruger_id` varchar(255) NOT NULL default '',
  `for_navn` varchar(255) NOT NULL default '',
  `efter_navn` varchar(255) NOT NULL default '',
  `adresse` varchar(255) NOT NULL default '',
  `bynavn` varchar(255) NOT NULL default '',
  `post_nr` varchar(255) NOT NULL default '',
  `telefon` varchar(255) NOT NULL default '',
  `e_mail` varchar(255) NOT NULL default '',
  `varer_id` varchar(255) NOT NULL default '',
  `vare_navn` longtext NOT NULL,
  `vare_pris` longtext NOT NULL,
  PRIMARY KEY  (`ordrer_id`)
) TYPE=MyISAM AUTO_INCREMENT=6 ;


resultatet skulle så gerne være at ejeren af shoppen skal kunne gå ind og se alle ordrer som der er oprettet i tidens løb og søge i dem ændre osv, ved at det selvfølgelig bliver listet pænt i et browser vindue ordrer for odrer, hvor pris osv står pænt listet noget ala det her :

ordrer nr
Thomas  larsen
skovgade 3 st.th
8888
skovsø

Vare Nr: 31
Vare navn: Thermaltake
Vare pris: 499

Vare Nr: 32
Vare navn: Thermaltake
Vare pris: 499

Vare Nr: 33
Vare navn: samsung 256
Vare pris: 300

Vare Nr: 34
Vare navn: asus ps800 sata
Vare pris: 2000

og at hver bruger skal kunne se historik over alle ordrer han/hun har gennemført.

hold da op en smøre :-D


Hvis du mangler mere info må du sige til.



//krydset
Avatar billede rackbox Nybegynder
16. november 2003 - 13:04 #3
Ahh! Nu forstår jeg!

Du vil have en ordre-tabel som i princippet kan håndtere følgede oplysninger:

ordreid
personoplysninger
adresseoplysninger
varekøb

...og dette skal fremgå som én post på ordre? Hehe.. Det er ikke så svært, du skal nok bare indstille dig på at kode din database lidt om...

Lav en kundetabel:
kundeid int auto increment primary key
fornavn text
efternavn text
og_hvad_du_nu_synes

Lav en varetabel, der indeholder alle dine varer:
vare_id int auto increment primary key //Dette er også varenummer
varenavn text
varepris float
og_hvad_du_synes

og så laver du en ordre_tabel:
ordre_id int auto increment primary key
dato date
vare_id_relation int
kunde_id_relation int
faktura_nummer int
og_hvad_du_synes

Hermed har du nu en ordretabel, der kan indeholde følgende:
ordre_id |    dato | vare_id_relation | kunde_id_relation | faktura_nummer
1          20030701  1                  1                  1
2          20030701  5                  1                  1
3          20030701  8                  1                  1
etc

Du skal også bruge en faktura_tabel:
id int auto increment primary key

Forstår du pointen?
Avatar billede rackbox Nybegynder
16. november 2003 - 13:06 #4
Og brug iøvrigt sessions til at genne de midlertidige oplysninger i indkøbskurven.. Det gør det nemmere at flytte værdierne mellem siderne..
Avatar billede rackbox Nybegynder
16. november 2003 - 13:10 #5
Men der er flere måder at bygge databasen op på. Det vigtige er at du forstår relationerne imellem de forskellige tabeller.
Kunde indeholder oplysninger om kunden
Varer indeholder oplysninger om varen
Ordre indeholder oplysninger om ordren
...og kan også se således ud:
ordre_id int auto increment primary key
kunde_id int //Hvilken kunde hører ordren til?
dato date

varekoeb indeholder oplysninger om varekøb
...og kan også se således ud:
varekoeb_id int auto increment primary key
vare_nummer int //Hvilken vare har kunden købt?
ordre_id //Hvilken ordre hører dette køb til?
Avatar billede rackbox Nybegynder
16. november 2003 - 13:11 #6
Sidstnævnte metode er nok i virkeligheden bedre end den første, jeg nævnte..
Avatar billede krydset Nybegynder
16. november 2003 - 13:23 #7
lige nu lyder det som lidt vullapyk for mig, men det er igen det med relations db, er ikke så meget inde i det, men vil du hjælpe mig ud af problemet og foklere lidt mere om hvordan det forsk data så skal indsættes osv. vil gene give flere point, evt hvis du har icq eller msn kan vi tage debatten der da det er lidt hurgtiger og så lægge løsningen herinde
Avatar billede rackbox Nybegynder
16. november 2003 - 13:33 #8
hop ind på irc, serveren hedder asimov.freenode.net og kanalen hedder #php-help
Avatar billede krydset Nybegynder
16. november 2003 - 13:37 #9
ahh hat ikke irc :-D

hvor henter man det henne
Avatar billede rackbox Nybegynder
16. november 2003 - 13:38 #10
Avatar billede rackbox Nybegynder
16. november 2003 - 13:38 #11
eller bedre endnu: http://www.xchat.org/
Avatar billede krydset Nybegynder
27. november 2003 - 14:06 #12
Takker rackbox :-D
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