Avatar billede snigeren Nybegynder
19. september 2007 - 14:32 Der er 11 kommentarer og
1 løsning

oprette reference nr for afsendt ordre

Uhm jeg har en lidt tricky en her(synes jeg selv) er ikke lige sikker på det indvolverer scripting men kan ikke lige vende den i mit hoved. =)

1. Jeg har en e-shop hvor man kan vælge nogle varer.
2. når varerne er valgte og man vil afsende ordren skriver man sit (firma)navn og email ind i to felter.
3. derefter skal jeg bruge et refenrence nr der hører til den bestemte ordre, som kunden får på sin kopi af ordren og jeg får på min kopi af ordren.
4. Det reference nr. skal jo være forskelligt fra ordre til ordre.

Så er spørgsmålet: Hvordan er det smartest at lave et unikt nr for hver ordre som også kommer med idet man sender ordren? Og som IKKE bliver det samme hvis to forskellige kunder laver en ordre på nøjagtig samme tid?

Jeg tænkte på at man fra sit form til php filen der sender ordren med email til firma og kunde, har et mellemstop hvor den opretter unikt nr. i db´en, som vist herunder:

Færdig ordre -> mellemstop hvor dataen fra ordren bliver vidderesendt og unikt reference nr bliver oprettet i DB -> den vidderesendte ordre og reference nr. bliver samlet i en sidste fil der sender email til begge parter med mail.

Kan man gøre det anderledes? Hvis i har et godt forslag til logistikken i dette problem kom endelig med det =)
Avatar billede jakobdo Ekspert
19. september 2007 - 15:32 #1
Inden email sendes til kunde og dig, kunne man som du selv er inde på smide ordren i en ordre-tabel, hvor du har et ID felt som er INT autonummering.
Så vil du altid sikre dig et unikt ID.
Avatar billede snigeren Nybegynder
19. september 2007 - 15:47 #2
Ok, du ville simpelthen oprette en tabel i DB´en hvor alle ordrer ryger i og så får et nummer?

Grunden til at jeg ikke selv lavede sådan en tabel var at hver enkelt ordre skal behandles manuelt i et c5 system og derfor mente jeg ikke der var grund til at gemme det på serveren også.

Men det er vel ikke noget der kommer til at fylde det vilde på serveren når det kun er lidt tekst?
Avatar billede jakobdo Ekspert
19. september 2007 - 16:00 #3
En temp tabel kunne gøre det ja, og du kunne jo som sådan slette recorden når email er afsendt igen og kun bruge id til unikt nummer.
Du kunne også når en ordre påbegyndes, lave en tekst fil, som starter med at indeholde: 1
Hvergang en ordre startes, laver du følgende:

låser filen.
læser indholdet.
tæller taller 1 op.
gemmer tallet i filen.
låser filen op igen.

Så vil du også kunne opnå unikt nummer.
Avatar billede snigeren Nybegynder
19. september 2007 - 16:19 #4
det eneste problem er self. hvis en eller anden kommer til at "tømme" temp tabellen så starter den jo forfra på 1... men ok hvorfor skulle man gøre det?!

Kan man egentlig lave en tabel der max indeholder f.eks. 1000 entries og derefter sletter den første hver gang der kommer en ny så den bliver opdateret men max med 1000?
Avatar billede jakobdo Ekspert
19. september 2007 - 17:12 #5
Nej, den starter ikke forfra.
Tabellen må bare ikke truncates!
Hvis man manuelt sletter alle rækker, vil autonummering stadig virke.
Avatar billede snigeren Nybegynder
19. september 2007 - 18:01 #6
uhm ja truncates det er vel at trykke på knappen "tøm" (dansk phpmyadmin) men hva faen det kan man vel ikke rigtig gardere sig imod... =)

Mht. det med auto slet den første entry så den max kan komme op på f.eks. kan det lade sig gøre?
Avatar billede olebole Juniormester
19. september 2007 - 18:24 #7
<ole>

Med denne kode:
    $nUniq = mt_rand(0, 1000).time();

- er der én promilles chance for to ordrer med samme nummer ... og kun hvis to kunder opretter en ordre indenfor samme sekund. Mon ikke det skulle være nok?  :)

/mvh
</bole>
Avatar billede snigeren Nybegynder
20. september 2007 - 16:23 #8
hey ole

hvordan fungerer den? er det er helt random kode i forhold til tid så der ikke er en rækkefølge af reference numre eller hvordan. Så man kan ikke gå reference numre tilbage for at finde en bestemt ordre?

Eller hvordan fungerer den kode?
Avatar billede snigeren Nybegynder
21. september 2007 - 14:34 #9
jeg tror jeg hopper på jakobs forslag,.. det virker som det rigtige i denne situation så kan man bare go antal ordrer tilbage og finde en bestemt igen =)

smider du lige et svar jakob? =)
Avatar billede jakobdo Ekspert
21. september 2007 - 15:41 #10
Kan du tro. :o)
Avatar billede snigeren Nybegynder
21. september 2007 - 16:38 #11
tak tak =)
Avatar billede jakobdo Ekspert
21. september 2007 - 16:56 #12
Takker for point.
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