Avatar billede meltinis Nybegynder
01. august 2006 - 15:25 Der er 11 kommentarer og
1 løsning

Metode til at undgå gentagelse af query ved refresh af side

Jeg har en side som starter med at kalde databasen og lave ændringer, og derefter loader den side som brugeren skal se. Er der en måde man kan undgå at brugeren trykker refresh og derved får siden til at gentage kaldet til DB. Jeg har tænkt på at lave et unikt id som systemet checker inden den kalder database og er det allerede brugt vil den ikke gennemføre det. Er der nogen der har en eller anden smart måde at gøre dette eller noget tilsvarende på?
Avatar billede davidfossil Nybegynder
01. august 2006 - 15:57 #1
Kunne du lade din side udføre databaseopdateringen og derefter bruge Response.Redirect() til at smide brugeren videre til "kvitteringsiden"?
Avatar billede madeindk Nybegynder
01. august 2006 - 17:44 #2
Du kunne lave det på følgende møde:

<%
strQuery = request.querystring("query")

if strQuery = "" then
%>

<form action="?query=save" name="save">

<!-- Form felter... -->

</form>

<%
end if

if strQuery = "save" then

' Gemmer oplysninger i basen
response.redirect("?query=saved")

end if

if strQuery = "saved" then

' Oplysningerne er gemt
response.write("Formen er nu fuldført og kan ikke refreshes")

end if
%>
Avatar billede meltinis Nybegynder
01. august 2006 - 18:38 #3
Det er selvf. en mulighed at gøre det på denne måde... Og måske også den mest simple. Problemet er også hvis de går tilbage til siden før og trykker gem igen - så vil det fremgå to gange alligevel. Det der ville være godt var hvis man på en eller anden måde kunne identificere den indtastning de har lavet og så tjekke på den. Jeg tænker noget i retningen af et hidden field med en eller anden form for identifikation. Har I nogen idéer til hvordan man kunne generere dette id. SessionID + et eller andet mere (jeg tæntkte først tid, men den er svær at styre hvis brugerne er længe om at indtaste og ID'et er genereret samtidig med formen)
Avatar billede madeindk Nybegynder
01. august 2006 - 18:52 #4
Ja, det er en simpel metode.

Du kan jo bare lave et sessionID + et tilfældigt genereret tal?
Avatar billede madeindk Nybegynder
01. august 2006 - 19:08 #5
Nu har jeg det !!! :-)

På indtastningssiden får vi en session til at køre der hedder:

session("randomCode") fx. med indhold "123456789" - tilfældig kode, skal nok smide noget kode der kan generere et tilfældigt tal, det er det nemmeste af det hele :-)
session("randomCodeUsed") = "0"

... og så på "Gem informationer" siden skriver vi:

session("randomCode") fx. med indhold "123456789"
session("randomCodeUsed") = "1"

Og HVIS randomCodeUsed = "0" skal den gemme informationer og hvis den er "1" skal den ikke kalde databasen, kun gå tilbage, eller noget i den stil - styrer du selvfølgelig helt selv. Men hvis den er "0" skal den slet ikke røre databasen og det gør den heller ikke selvom man trykker tilbage, for der kører vores session("randomCodeUsed") stadig med indholdet "1" :-)

Lyder dette som en god ide?
Avatar billede nielle Nybegynder
01. august 2006 - 19:11 #6
Hvad med at gemme database-udtrækket fra deres 1. besøg i en session eller en cookie?

Hvis folk kommer ind på siden aflæser du først om der er en session/cookie for dem. Hvis der er dette, henter du værdierne fra denne og lader være med at kalde til databasen. Hvis de ikke har en session/cookie trækker du fra databasen, opretter en session/cookie med udtrækket, og viser dem så siden.
Avatar billede nielle Nybegynder
01. august 2006 - 19:12 #7
Ahh :^)
Avatar billede madeindk Nybegynder
01. august 2006 - 19:20 #8
Kunne også være en ide - men jeg tror han har problemer på de sider hvor han gemmer informationer, desværre Nielle.

Ved ikke helt om mit forslag holder (19:08:43) - hvad siger du? :-)
Avatar billede nielle Nybegynder
07. august 2006 - 20:46 #9
Har du fået kigget på det?
Avatar billede meltinis Nybegynder
31. januar 2007 - 20:50 #10
Hey... undskyld den lange ventetid. Jeg har prøvet mig lidt frem, men har ikke rigtig fået nogen holdbar løsning. Det bliver lidt for kompliceret så jeg har bare ladet det ligge og håber at de ikke gentager kaldet til serveren ved refresh. Hvis I vil have nogle point så må I smide et svar
Avatar billede madeindk Nybegynder
31. januar 2007 - 21:03 #11
Jeg smider sgu et svar, kan huske jeg brugt ret langtid på at overveje det her :-)
Avatar billede meltinis Nybegynder
31. januar 2007 - 21:12 #12
Ja... det tror jeg gerne :) Det er også en hård nød at knække... men tak for det du gav - det kan være jeg skal lave løsningen inden for den nærmeste fremtid.
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
Kurser inden for grundlæggende programmering

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