12. oktober 2002 - 23:45Der er
36 kommentarer og 1 løsning
Undgå dobbeltOp
Jeg leger med et fora (VB) og det er NÆSTEN ved at lykkes for mig. Bare lige denne her irriterende egenskab, at når der trykkes på submit/refresh flere gange, så laves indlægget igen. Forleden fik jeg hjælp til at checke i db'en om indlægget allerede eksisterede. Det fungerer fint bortset fra, at det også forhindrer brugere i at skrive det samme, andre allerede har skrevet - f.ex. ja - på et spm.! Har også forsøgt mig med If Session("side")=true, men kan ikke få det til at virke efter hensigten. Kan nogen hjælpe mig med hvordan jeg fanger og undgår den uheldige egenskab at doble op?
Genereres der ikke et nyt random tal når der refreshes/submittes igen? Hvis ikke tallene er ens, hvordan kan jeg så afgøre om det er et "ægte" indlæg eller ej? Eller er det bare MIN matematik der er træt?
Kan du ikke blot sammenligne det indlæg der bliver sat ind med det der er sat ind sidste gang?
Hvis de er ens skal indlæget ikke oprettes igen hvis de ikke er ens skal indlæget oprettes, Afhængig af databasesystem kan dette gøres i en Stored Procedure e.lign.
Ja - jeg har en brugertabel og en indlægtabel med init som fælles pkt'er. Dit argument er godt nok. Jeg vil lige prøve dem af. Men som nævnt er min matematik (og mere) lidt træt efter en hel dag her ved skærmen, så jeg håber det er ok jeg smider points imorgen formiddag. Især hvis jeg skal til at lege med inner joins.
>>moonduck - ja, men umiddelbart tror jeg det må blive løsningen. For... >>stigc - når jeg tester ved at udskrive værdien af random tallet, så skifter det hver gang jeg submitter eller refresher.
Randomtallet skal udskrives som hidden felt i formen, så vil det samme tal sendes med lige meget hvor mange gange du trykker "Send/Udfør" på klienten !
>>stigc - jeg har fået det til at virke med refresh, men endnu ikke med submit. Det arbejder jeg på. Husk svar til points i kan dele.
>>moonduck - jeg skal til at lave emner, så jeg tager det med dér, MEN...
..jeg har en ældre side hvor jeg efter cmd.fill, databind og nulstiller textbokse, laver en redirect til samme side. Det ser også ud til at fjerne problemet. Kan det skabe komplikationer i anden sammenhæng?
>>cms Er ikke helt med på udskrivning i formen. Jeg har lagt Dim Nummer as Integer = int(10000 * rnd)+1 umiddelbart efter <script..> og <input name="hidden1" type="hidden" value="<%= Nummer %>"> <input type="submit" Value="Submit" >
i <form>. Når jeg så checker denne: if Not Page.IsPostBack then if request.form("hidden1") <> "" Then Message.text = "<br>Gemt værdi:" + Request.form("hidden1") end if virker det med refresh/f5 men ikke Submit.
har ikke forsøgt, men hvis jeg lægger valideringen ned i sub Submit der opdaterer db osv, vil den så ikke afvise nye indlæg fordi den fastholder værdien? Jeg er lidt usikker på hvornår tildelingen af ny værdi egentlig sker!
Nej endnu ikke. Men som nævnt skal jeg til at tilrette siderne med db, så jeg vil bruge det dér. Der er kommet flere gode forslag, så hvis i vil lægge svar ind, så smider jeg points af. Takker så meget for hjælpen.
Jeg snakker ikke om en ekstra Row, men en Column (!!) - og der kan sagtens være éns indlæg hvis du tænker på de værdier du lige har nævnt. Desuden er det langt hurtigere at tjekke på en 30-tegns værdi end på en TEXT-værdi som kan være flere tusinde karakterer langt !!
cms>> Jeg tror sandsynligheden for at værdierne er ligesåstore som at man får det samme randomtal to gange i træk.
Og sammenligningen foregår i ASP.NET og når vi snakker en Insert operation er det begrænset hvor ofte den køres og derfor ser jeg ikke nogen grund til at ødelægge datamodellen op blot for at undgå dette.
Er der ingen af jer der har anvendt den redirect(side) som jeg nævnte? Den ser ud til at tømme siden for gamle informationer og et af problemerne er jo, at selv om tekstfeltet nulstilles, så er værdien fra sidste indlæg stadig til stede i hukomm. (indtil redirecten!) og kan opdatere siden ved submit eller refresh!
Moonduck -> Det er et forum vi taler om. Du har ret sålænge forummet skal bruges til hobbyarbejde med vennerne. Men nu skal vi vel også lære noget, og ikke altid springe over hvor gærdet er allerlavest - forestil dig fx at det var eksperten, der skulle sammenligne alle indlæg i en tråd før éns nye indlæg blev godkendt. Sandsynligheden for at jeg skriver ":)" to gange i en tråd er _ikke_ den samme som for at jeg får to 30-cifrede randomtal i træk !
cms -> Nej men hvor stor er chancen for at den samme forfatter skriver ":)" to gange i træk i samme tråd uden at der har været en anden der har lavet et indlæg i hele forummet.
For mig at se er problemet ikke stort, jeg har selv haft foras kørende på intranets med +100 brugere simultant hvor jeg ikke har lavet noget tjek og det har fungeret fint og det er ikke tit at folk kommer til at trykke 2 gange.
Ja det har du jo ret i :) Iøvrigt synes jeg ikke jeg kan finde dokumentation for hvordan jeg skal trække en netop indsat id-værdi ud, i en storedproc, hvis jeg samtidigt skal tage hensyn til multithreading.. Noget du har erfaringer med?
Så faldt tiøren - du skrev det endda i dit svar! Har du overskud til at fortælle mig, hvordan jeg skal 'isolere' hvad der er det sidste indlæg i db'en? Altså hvordan en 'SELECT sidste indlæg' - query skal skrues sammen? Så'n cirka!
Sorry cms - bemærkede ikke det var dit svar. Er du ikke interesseret i points? Jeres indlæg har hjulpet mig meget, så jeg vil godt oprette et nyt point-spm! Og takker meget for hjælpen.
Nej-nej, ellers tak =) Transactioner og @@Identity... Okaj jeg kigger lidt i dok.
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.