Avatar billede hanstad Nybegynder
29. juni 2003 - 12:46 Der er 12 kommentarer

Clear indhold af en form

Kan man få asp til at slette noget som er posted i en formular? Derved undgår jeg at siden er blevet refreshed og derved er dataene posted igen (som i øvrigt lægger data i en database).
Jeg ved det kan klares emd en sessions variabel, men det vil jeg ikke bruge!
Avatar billede netro Nybegynder
29. juni 2003 - 13:40 #1
Lad mig forstå dig ret - du vil undgå indsættelse af dobbeltdata i tabellen?
Når indholdet af formularen er sendt (og indsat) kan du lave en redirect til samme side. Dvs.

If Request.ServerVariables("Request_Method") = "POST" Then
  'Indsæt i tabel
  'Luk forbindelse og recordsæt
  Response.Redirect "denne_side.asp"
End If
Avatar billede netro Nybegynder
29. juni 2003 - 13:41 #2
Så får brugeren ikke noget ud af at opdatere siden. Det samme gør Eksperten, efter du har lavet et indlæg.
Avatar billede hanstad Nybegynder
29. juni 2003 - 15:17 #3
Det hjælper ikke. Ved refresh (F5) så postes dataene igen og servervariablen er stadig sat lig POST.

Jo bruger får at se, hvis der er kommet ny data i et evt. udtræk længere nede på siden.
Avatar billede netro Nybegynder
29. juni 2003 - 16:22 #4
Hvis der ikke er sendt noget fra via POST ved sidste sideanmodning, sendes data ikke igen!

Lad os sige du har følgende formular på siden "index.asp":

<form method="post" action="index.asp">
<input type="text" name="mintekst">
<input type="submit">
</form>

Når den er sendt, foretager du som nævnt en redirect til samme side UDEN at sende nogle data igen:

<%
If Request.ServerVariables("Request_Method") = "POST" Then
  'Indsæt i tabel
  'Luk forbindelse og recordsæt
  Response.Redirect "index.asp"
End If
%>

Herefter vil du frit kunne opdatere siden.
Avatar billede hanstad Nybegynder
29. juni 2003 - 19:37 #5
Men det er ikke det jeg mener.
Det jeg mener er som følgende kode:

<%
If Request.ServerVariables("Request_Method") = "POST" Then
  'Indsæt i tabel
  'Luk forbindelse og recordsæt
  Response.Redirect "index.asp"
End If
%>
<form method="post" action="index.asp">
<input type="text" name="mintekst">
<input type="submit">
</form>

begge ting står på sammen side (det gør ingen forskel, hvis de står på hver sin side). Når brugeren poster data og siden reloades gemmes data selvfølgelig i databasen. Men hvis bruger så efterfølgende trykker på F5, så må der tilføjes noget i databasen.
Hertil er jeg nok nødt til at cleare http-headerne. Men hvordan?
Avatar billede hanstad Nybegynder
29. juni 2003 - 19:38 #6
Ups fejl.
...trykker på F5, så må der tilføjes noget i databasen.
rettest til
...trykker på F5, så må der IKKE tilføjes noget i databasen.
Avatar billede netro Nybegynder
29. juni 2003 - 20:07 #7
Så aner jeg simpelthen ikke, hvad du vil. Med min løsning er det ligegyldigt, om brugeren trykker F5 efter, data er sendt.
Avatar billede hanstad Nybegynder
29. juni 2003 - 20:11 #8
Det jeg bar eville vide var om kan kan cleare http-headeren, hvor post-oplysningerne står i
Avatar billede netro Nybegynder
29. juni 2003 - 21:12 #9
Hvordan skulle du kunne klare det med en session-variabel?
Avatar billede hanstad Nybegynder
29. juni 2003 - 22:00 #10
Hvis jeg spørger:
if session("HarVæretHerFør") = "" then
  opdater db
  session("HarVæretHerFør")=true
end if
Avatar billede netro Nybegynder
29. juni 2003 - 22:22 #11
Nå, sådan mener du... Ja, men så bliver oplysningerne også sendt igen. De bliver bare ikke indsat i tabellen.
Avatar billede hanstad Nybegynder
29. juni 2003 - 22:23 #12
nej det ved jeg. Og det var lige præcis det jeg ville undgå
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