Gå til innhold

Disable knapp etter å ha blitt klikket én gang


Anbefalte innlegg

Videoannonse
Annonse

Om database er interessant så kan bruke av transaksjoner løse dette. Kort sagt så innebærer det "låsing" av rows i en tabell, slik at f. eks den ikke kan skrives til før en annen transaksjon er ferdig. Har ikke kodet dette selv før, men kan se for meg at koden blir fort litt mer innviklet, da det må legges til litt ekstra funksjoner som låser/låser opp og slikt, men det vel uansett den beste (og tryggeste løsningen).

 

Det er dette som brukes på sider man kan bestille flybillett o.l., slik at ikke flere skal bestille samme samtidig f. eks.

Lenke til kommentar

Hehe jeg håpet kanskje det gikk an å skrive om kodinga til handlekurva, derfor la jeg inn kodinga i stad her.

 

WP = Wordpress ja. Har jo databaser, så om jeg absolutt må bruke det for at dette skal funnke, så er det vel ingen vei utenom. (Kanskje bortsett fra en "kjøp nå"-funksjon).

 

Dog er det slik at det ikke er SINNSYK fortjeneste på hver bok, så er begrensa hvor mye tid jeg kan bruke på å legge inn hver bok osv om det skal være økonomisk forsvarlig å holde på med.

 

Hva bruker du nå til å vise hvilke bøker du selger? Med en database trenger du bare en PHP fil, der du viser boka etter IDen(bok.php?id=ID-TIL-BOK) .

Lenke til kommentar
  • 1 måned senere...

Kjører WP Ultra simple Paypal Cart på min litt crappy netthandel, og der har jeg 1 issue: Jeg selger brukte bøker, og har som regel bare én bok av hver. Det som da funker dårlig med WP Ultra simple Paypal Cart-en er at den ikke holde styr på lager slik at jeg unngår at to kunder bestiller og betaler for samme bok.

 

Jeg skulle hatt en snedig løsning, gjerne i php, der "legg i handlekurv"-knappen blir disabla eller forsvinner helt for den aktuelle boken om kunden klikker på den og kjøper den. Dog er det slik at man kan legge til flere bøker i kurven, og en kunde kan jo ombestemme seg. Om han da velger å fjerne boka fra kurven må knappen aktiveres/komme til syne igjen.

 

Det som da avgjør om knappen blir disabla for godt er om kunden betaler eller ei. Alt av betaling går btw gjennom Paypal.

 

Er dette mulig å få til?

Ettersom det ikke ser ut som tråden er løst svarer jeg på den. Jeg har en mulig løsning, om den virker vet jeg ikke og den er nok kanskje litt tung.

 

Det første jeg ser for meg er at du oppretter en tabell i databasen som består av: brukeren som har lagt til boka i handlekurven, hvilken bok det er, antall brukeren har valgt og klokkeslettet det ble lagt til (creationtime).

 

 

 

Eksempel:

CODE

CREATE TABLE selectedBooks (

userId VARCHAR(100) REFERENCES someTable.userId,

bookid VARCHAR(100) REFERENCES someTable.bookId,

amount INTEGER,

creationtime DATETIME NOT NULL,

 

primary key(userId, bookId)

);

 

 

 

 

Du vil sannsynligvis trenge en service som går f.eks. en gang i timen og sletter poster som har vært der lenger enn creationtime + timeout.

 

Når brukeren går til kassen og har kjøpt boka/bøkene får du sannsynligvis vite om kjøpet gikk som det skulle. Hvis kjøpet gikk gjennom kan du slette raden fra den nye tabellen og oppdatere antallet som er igjen av den gitte boka. Ble kjøpet mislykket kan du slette raden fra den nye tabellen. I steden for å slette boka fra tabellen kan du også vente til den timer ut, men det vil da ta en stund.

 

Hver gang en bruker kommer inn og ser boka kan beholdningen oppdateres. Da kan du sjekke om beholdningen er 0, hvis den ikke er det summerer du antallet av boka som er lagt i handlekurven og trekker dette fra beholdningen. Hvis verdien som returneres er større enn 0 vises knappen for å legge boka i handlevogna, ellers ikke.

 

Også tror jeg du nok vil bruke transactions i SQL på spørringene så du er sikker på at du ikke får en inkonsistent database.

 

Håper denne forklaringa ikke ble for vanskelig. Denne fremgangsmåten er kanskje litt tungvinn om du bare har én bok av hver, men hvis du skulle ha flere så tror jeg den kan være en mulighet.

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...