Gå til innhold

Hvordan finne autonummer før det er registrert?


Anbefalte innlegg

Holder på med et lite prosjekt i php med mysql database.

 

Har en tabell "Ordrer" med OrdreNr som identifikator.

 

Når en ordre registreres skal skriptet vite OrdreNr FØR ordren blir registrert i tabellen.

 

Hvordan kan jeg få til det?

 

Jeg kunne selvsagt opprettet en ny ordre med blanke verdier, for deretter fyllt inn resten når ordren er ferdigregistrert, men da vil jeg ende opp med en blank ordre hver gang noen avbryter før ordren er registrert ferdig.

 

Noen som har tips til hvordan denne biffen kan fikses?

 

En mulighet er vel å finne ut hva siste OrdreNr er, for deretter +1 - men da kan jeg jo risikere at en annen person rekker å legge inn ordre før den første forsøkte :ohmy:

Så kanskje en form for reservasjon er mulig?

Lenke til kommentar
Videoannonse
Annonse

Hmm.. liker ikke helt den løsningen... Så vidt jeg vet er det ikke mulig å slette disse tomme radene, for så å "gjenbruke" raden? Nye rader vil vel uansett ta i bruk siste nummer, selv om det er flere "ledige"? Hvis ikke det finnes noen kommandoer eller noe slikt som lar den ta "ledige" numre?

Lenke til kommentar

du kan jo lage en funksjon selv.

 

bla igjennom ordrenr til du finner en som er tom, for så å bruke den.

dersom ingen er ledig legger du bare en til på slutten.

 

og hvorvidt en klarer å ta et løpenummer samtidig som deg

avhenger tross alt litt på trafikken.

 

men hvorfor må du vite OrdreNr før du registrere ordren?

Lenke til kommentar

Hva med egen tabell som inneholder siste benyttede ordrenummer. Når du henter ordrenummer øker du verdien i tabellen (tabellen inneholder ikke noe annet enn siste ordrenummer). Benyttes ikke ordrenummeret vil det ikke bli blanke linjer i odrebasen. Ubenyttede odrenummere vil ikke bli gjenbrukt så du må passe på å ha nok siffere.

Lenke til kommentar

Den beste løsningen på dette problemet er rett og slett å opprette en midlertidig tabell, hvor ordrene registreres før de er fulltført. Når de fullfører orderen så overfører du bare orderen til den riktige tabellen. På den måten har du også mer oversikt over hva som skjer på siden din, og kan se hvis det eventuelt er steder som hindrer brukeren å registrere bestillingen.

 

Nå vet ikke jeg hva du skal bruke dette til, men det høres ut som noe lignende en handlekurv. I så fall har du også muligheten til å legge alle produktene i en session, for å så lagre de i MySQL når de klikker send bestilling. Men når det er sagt så liker jeg løsningen med midlertidig tabell, da kan kunene til og med komme tilbake å fullføre handelen senere dersom de logger seg inn. Og i tillegg så får du oversikten jeg nevnte ovenfor.

 

Forklar litt om hva du skal bruke scriptet til så kan jeg beskrive litt nærmere.

Lenke til kommentar

Takk for mange svar :)

 

Grunnen til at jeg vil vite ordrenummer før ordren registreres er fordi en 3. part (betalingsleverandør) skal registrere betalingen. For å ha full oversikt, ønsker jeg at betalingsleverandøren skal registrere ordren med samme nummer som jeg har registrert.

 

I denne omgang er det et ekstremt simpelt opplegg uten bruk av handlekurv eller noe slikt.

 

Kun et script som samler inn noen data, for deretter kontakte betalingsleverandør (med ordrenummeret) og når betalingen er fullført returnere til et script som fullfører ordren og registrer den i databasen - med samme ordrenummer som betalingsleverandøren fikk

 

Er usikker på hvordan en midlertidig tabell vil hjelpe her - den må fremdeles vite hvilket ordrenr den får?

Endret av Lurifaksen
Lenke til kommentar

Eg ville ha tatt et annet hendelsesforløp:

-> kunde velger varer -> kunde vil kjøpe varene -> kunde lagrer ordren -> systemet forespør og tar i mot betaling -> informasjon om at betaling er ok lagres på ordren.

 

og ikke minst, siden det er en 3. part med i bilde er dette med sikkerhet veldig

viktig. du må være sikker på at ordrenummeret er det samme, og det vil eg

påstå kun skjer om du registrerer ordren, og deretter tar i mot betaling.

 

det vil også bli litt brukervennlig, da kunden kan ved problemer gå inn og foreta

betaling senere, da ordren allerede er registrert, men ikke betalt for. ting kan

skje tross alt.

Lenke til kommentar

Metoden som nomore foreslår er nok den som er vanligst i det tilfellet. Legg til et felt i databasen din som sier betalt. Måten du tenkte å løse det på er nok helt bakvendt og kan få store konsekvenser, tenk deg dette:

 

Noen betaler, så kræsjer MySQL eller selve serveren din. Da har kunden din betalt, men du har ikke bestillingen eller noe. Dette er et meget aktuelt problem, og det er en av grunnene til at commit (traksaksjoner) finnes.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...