Avatar billede page Nybegynder
16. november 2006 - 19:05 Der er 27 kommentarer og
1 løsning

Preview med asp?

Hey,

Er det muligt at lave en preview funktion i asp?

Jeg tænker på om det er muligt at lave en preview af min nyhed, før jeg sender den til db'en? Ligesom man ofte ser det på diverse fora.

eller skal jeg over i noget javascript?

mvh
page
Avatar billede thesurfer Nybegynder
16. november 2006 - 19:55 #1
Ja.

Lav en preview.asp der indeholder samme layout, som din rigtige side..

Evt kan du have det på samme side, men hvor du sender ?preview=1 med i urlen..
Avatar billede page Nybegynder
16. november 2006 - 20:08 #2
Jeg kan som sådan godt lave preview funktionen. Men der hvor jeg løber ind i et problem, er når jeg skal have lavet både en "preview" og en "send" knap, fo samme form.
Avatar billede thesurfer Nybegynder
16. november 2006 - 20:25 #3
Du kan checke værdien af submit knappen..

Eksempel:

<%
if request.servervariables("request_method") = "POST" then

response.write "<hr>"

for each item in request.form
  response.write item & ": " & request.form(item)
next

response.write "<hr>"

response.end ' afslut udskrivning/afvikling
end if
%>

Der kan du aflæse de felter, der er blevet submittet.

Så kan din form se sådan ud:

<form name="frm" action="index.asp" method="action">
<input type="text" name="navn" value="Hans Hansen">
<br>
<input type="submit" name="gem" value="Gem">
<input type="submit" name="preview" value="preview">
</form>

Hvad skriver den så, når du klikker på "Gem"? Og hvad med "Preview"?
Avatar billede Slettet bruger
16. november 2006 - 20:30 #4
tjae... OK!

Mener du at du vil have det sådan din preview vises i et nyt vindue?
I så fald har jeg her et eksempel:
-----------Din form-side------------
<form id="form1" action="send.asp" target="_self" method="post">
<input type="text" name="text" size="20">
<br>
<input type="button" name="preview" value="Preview" onclick="this.form.target='_blank'; this.form.action='preview.asp'; this.form.submit();">
<input type="button" name="send" value="Send" onclick="this.form.target='_self'; this.form.action='send.asp'; this.form.submit();">
</form>

-------------Din preview-side
<%=request.form("text")%>
- og så ellers med det design der skal være...

--------------Din send-side-----------
<%=request.form("text")%>
- og så ellers med din asp-kode som skal gemme indholdet...
----------------
\Dan
Avatar billede page Nybegynder
16. november 2006 - 20:41 #5
Kommentar: thesurfer
16/11-2006 20:25:37

Der sker ikek noget. Ikke andet i end at der kommer til at stå
"test.asp?navn=Hans+Hansen&preview=preview" i url'en hvis jeg trykker på preview,
og
"test.asp?navn=Hans+Hansen&gem=Gem" hvis jeg trykker "gem"

Koden jeg bruger ser således ud:

test.asp:
<html>
<head>
</head>

<body>
<%
if request.servervariables("request_method") = "POST" then

response.write "<hr>"

for each item in request.form
  response.write item & ": " & request.form(item)
next

response.write "<hr>"

response.end ' afslut udskrivning/afvikling
end if
%>

<form name="frm" action="test.asp" method="action">
<input type="text" name="navn" value="Hans Hansen">
<br>
<input type="submit" name="gem" value="Gem">
<input type="submit" name="preview" value="preview">
</form>
</body>
</html>


Er det mig der har lavet en fejl?
Avatar billede thesurfer Nybegynder
16. november 2006 - 20:52 #6
Doh!

Der skulle står method="post" og ikke method="action" :-)
Avatar billede thesurfer Nybegynder
16. november 2006 - 20:53 #7
dannielsen> Det skulle meget gerne kunne gøres unden brug af JavaScript.. selv om det ikke er et krav..

Man burde kunne aflæse værdien af den knap, der blev brugt til at submitte formen..
Avatar billede thesurfer Nybegynder
16. november 2006 - 20:56 #8
page> Læg mærke til denne del:

"test.asp?navn=Hans+Hansen&preview=preview" i url'en hvis jeg trykker på preview,
og
"test.asp?navn=Hans+Hansen&gem=Gem" hvis jeg trykker "gem"

Som du kan se, kommer der til at stå "gem=gem" og "preview=preview"

Derfor:

<%
if request.servervariables("request_method") = "POST" then

response.write "<hr>"

for each item in request.form
  ' response.write item & ": " & request.form(item)
  if LCase(item) = "gem" then response.write "AHa... du valgte at gemme det, uden at se det først.."
  if LCase(item) = "preview" then response.write "AHa... du valgte at se et preview, inden du gemmer det.."
next

response.write "<hr>"

response.end ' afslut udskrivning/afvikling
end if
%>
Avatar billede page Nybegynder
16. november 2006 - 20:58 #9
Kommentar: thesurfer
16/11-2006 20:52:04

Da jeg ændrede det fra method til post kom der til at stå det her:

navn: Hans Hansengem: Gem

Så det virke en smule. Men hvordan får jeg den til ikke at skrive "gem: Gem"

?
Avatar billede thesurfer Nybegynder
16. november 2006 - 21:01 #10
Jeg laver lige et eksempel..
Avatar billede thesurfer Nybegynder
16. november 2006 - 21:06 #11
Eksempel på brug af den rigtige kode:

<%
if request.servervariables("request_method") = "POST" then

response.write "<hr>"

dim overskrift, tekst
dim vispreview
vispreview = false

for each item in request.form
    ' smid værdierne i variabler:
    if LCase(item) = "overskrift" then overskrift = request.form(item)
    if LCase(item) = "tekst" then overskrift = request.form(tekst)

  ' response.write item & ": " & request.form(item)
    if LCase(item) = "preview" then vispreview = true
next

if vispreview = true then
    response.write "Overskriften: " & overskrift & "<br>"
    response.write "Teksten: " & tekst
else
    ' sql kald der gemmer værdierne i databsen (erstat 1x '-tegn med 2x '-tegn):
    overskrift = replace(overskrift, "'", "''")
    tekst = replace(tekst, "'", "''")
    sql = "insert into TabelNavn overskrift, tekst values('" & overskrift & "','" & tekst & "')"
    ' fyr sql'en afsted
    ' giv brugeren besked:
    response.write "Disse oplysninger er nu gemt:<br><br>Overskrift:<br>" & overskrift & "<br><br>Tekst:<br>" & tekst
end if


response.write "<hr>"

response.end ' afslut udskrivning/afvikling  ----------- denne kan fjernes
end if
%>

<form name="frm" action="test.asp" method="post">
<input type="text" name="overskrift" value="Dette er overskriften">
<br>
<input type="text" name="teksten" value="Dette er teksten.. normalt bruger man textarea..">
<br>
<input type="submit" name="gem" value="Gem"><br>
<input type="submit" name="preview" value="preview">
</form>


Det skal lige siges, at koden ikke er testet.. der kan være små fejl..
Avatar billede page Nybegynder
16. november 2006 - 21:06 #12
Kommentar: thesurfer
16/11-2006 21:01:13

Det behøves ikke, jeg tror jeg har fået det til at virke, efter jeg rettede i koden som du skrev "20:56:31"

Den ser nu således ud:

test.asp:

<html>
<head>
</head>

<body>
<%
if request.servervariables("request_method") = "POST" then

response.write "<hr>"

for each item in request.form
  ' response.write item & ": " & request.form(item)
  if LCase(item) = "gem" then response.write "AHa... du valgte at gemme det, uden at se det først.."
  if LCase(item) = "preview" then response.write "" & request.form("navn") & ""
next

response.write "<hr>"

response.end ' afslut udskrivning/afvikling
end if
%>

<form name="frm" action="test.asp" method="post">
<input type="text" name="navn" value="Hans Hansen">
<br>
<input type="submit" name="gem" value="Gem">
<input type="submit" name="preview" value="preview">
</form>
</body>
</html>


Og den virker som den skal.. men er det muligt at få den til at åbne i sit eget vindue?
Avatar billede thesurfer Nybegynder
16. november 2006 - 21:08 #13
Jeg har allerede fundet en fejl.. her er rettelsen..:

for each item in request.form
    ' smid værdierne i variabler:
    if LCase(item) = "overskrift" then overskrift = request.form(item)
    if LCase(item) = "tekst" then overskrift = request.form(item)

  ' response.write item & ": " & request.form(item)
    if LCase(item) = "preview" then vispreview = true
next


Du kan prøve at tilføje target="_blank" til dit form-tag..
Avatar billede thesurfer Nybegynder
16. november 2006 - 21:09 #14
Hmm.. Så skal man bruge JavaScript, da det vel kun er Preview, der skal åbne i et nyt vindue?

Gem skal vel bruge samme side.. eller wa?
Avatar billede thesurfer Nybegynder
16. november 2006 - 21:11 #15
Du skal nok bruge en kombination af 16/11-2006 21:06:47 (husk rettelsen!) og 16/11-2006 20:30:26..
Avatar billede page Nybegynder
16. november 2006 - 21:16 #16
Dit eksempel virker næsten med rettelsen. Og tilføjer jeg target="_blank" åbner den også i en blnk side som den skal.

Det eneste der ikke virker er at der ikke kommer noget i tekst feltet, når jeg trykker på preview.
Avatar billede page Nybegynder
16. november 2006 - 21:17 #17
ja ok, "gem" åbner så også i et nyt vindue :(
Avatar billede thesurfer Nybegynder
16. november 2006 - 21:17 #18
Ang "Det eneste der ikke virker er at der ikke kommer noget i tekst feltet, når jeg trykker på preview.": huh? :-)

Hvordan ser ASP-koden ud, der indlæses i det nye vindue?
Avatar billede page Nybegynder
16. november 2006 - 21:23 #19
<%
if request.servervariables("request_method") = "POST" then

response.write "<hr>"

dim overskrift, tekst
dim vispreview
vispreview = false

for each item in request.form
    ' smid værdierne i variabler:
    if LCase(item) = "overskrift" then overskrift = request.form(item)
    if LCase(item) = "tekst" then teksten = request.form(item)

  ' response.write item & ": " & request.form(item)
    if LCase(item) = "preview" then vispreview = true
next

if vispreview = true then
    response.write "Overskriften: " & overskrift & "<br>"
    response.write "Teksten: " & tekst
else
    ' sql kald der gemmer værdierne i databsen (erstat 1x '-tegn med 2x '-tegn):
    overskrift = replace(overskrift, "'", "''")
    tekst = replace(tekst, "'", "''")
    sql = "insert into TabelNavn overskrift, tekst values('" & overskrift & "','" & tekst & "')"
    ' fyr sql'en afsted
    ' giv brugeren besked:
    response.write "Disse oplysninger er nu gemt:<br><br>Overskrift:<br>" & overskrift & "<br><br>Tekst:<br>" & tekst
end if


response.write "<hr>"

response.end ' afslut udskrivning/afvikling  ----------- denne kan fjernes
end if
%>
Avatar billede thesurfer Nybegynder
16. november 2006 - 21:30 #20
Jeg forstår ikke "der ikke kommer noget i tekst feltet"-delen.. der er jo ikke tekst felter i popup'en..?

Hvordan ser hele koden i popup'en ud?
Avatar billede page Nybegynder
16. november 2006 - 21:36 #21
altså, det der mangler er at den tekst der står i text feltet "teksten" ikke bliver fremvist.

Trykker jeg preview kommer der kun til at stå dette:

----------------------------
Overskriften: Dette er overskriften
Teksten:
----------------------------

Her er koden.

<html>
<head>
</head>

<body>
<%
if request.servervariables("request_method") = "POST" then

response.write "<hr>"

dim overskrift, tekst
dim vispreview
vispreview = false

for each item in request.form
    ' smid værdierne i variabler:
    if LCase(item) = "overskrift" then overskrift = request.form(item)
    if LCase(item) = "tekst" then teksten = request.form(item)

  ' response.write item & ": " & request.form(item)
    if LCase(item) = "preview" then vispreview = true
next

if vispreview = true then
    response.write "Overskriften: " & overskrift & "<br>"
    response.write "Teksten: " & tekst
else
    ' sql kald der gemmer værdierne i databsen (erstat 1x '-tegn med 2x '-tegn):
    overskrift = replace(overskrift, "'", "''")
    tekst = replace(tekst, "'", "''")
    sql = "insert into TabelNavn overskrift, tekst values('" & overskrift & "','" & tekst & "')"
    ' fyr sql'en afsted
    ' giv brugeren besked:
    response.write "Disse oplysninger er nu gemt:<br><br>Overskrift:<br>" & overskrift & "<br><br>Tekst:<br>" & tekst
end if


response.write "<hr>"

response.end ' afslut udskrivning/afvikling  ----------- denne kan fjernes
end if
%>

<form name="frm" action="test.asp" method="post" target="_blank">
<input type="text" name="overskrift" value="Dette er overskriften">
<br>
<input type="text" name="teksten" value="Dette er teksten.. normalt bruger man textarea..">
<br>
<input type="submit" name="gem" value="Gem"><br>
<input type="submit" name="preview" value="preview">
</form>

</body>
</html>
Avatar billede thesurfer Nybegynder
16. november 2006 - 21:53 #22
Det er fordi du har kaldt text-boksen for "teksten" og ikke "tekst": name="teksten"

I ASP koden spørger du efter "tekst":    if LCase(item) = "tekst" then teksten = request.form(item)
Avatar billede thesurfer Nybegynder
16. november 2006 - 21:53 #23
Hvis du bruger target="_blank", ville både Gem og Preview blive sendt til et nyt vindue..
Avatar billede page Nybegynder
16. november 2006 - 22:18 #24
Jeg har forsøgt mig med "dannielsen
16/11-2006 20:30:26" og det virker som det skal.

Jeg tror at jeg er nødtil at benytte mig af JavaScript, selvom jeg havde håber jeg kunne klare mig uden.

Tak for hjælpen thesurfer, selvom jeg ikke fik det til at spille som jeg ville have det til, så blev jeg alligevel noget klogere på ASP.

dannielsen> kan du droppe et svar?
Avatar billede Slettet bruger
17. november 2006 - 23:23 #25
hehe... OK her kommer der så et svar - hvis du mener jeg har fortjent pointene...

- Men nu bliver jeg nysgerrig... Hvorfor er det at det ikke må være Java-script?

\Dan
Avatar billede thesurfer Nybegynder
18. november 2006 - 14:35 #26
dannielsen> Det er generelt en dårlig ide, at lave et (helt/delvis) system, der baserer sig på en teknologi, der kan forårsage sikkerhedsbrister.

Jo mere dynamisk og højtteknologisk man kan lave en side, jo større er chancen for at en ondsindet person kan lave en side, der "hacker" din computer.

Derfor:
Brug så lidt JavaScript som muligt, og brug det kun hvis det kan gøre "tingene nemmere" for brugeren..
Med andre ord: JavaScript må *ikke* erstatte den normale funktionalitet. JavaScript må kun forbedre den.
Avatar billede Slettet bruger
18. november 2006 - 18:40 #27
thesurfer>> Det er vi fuldstændigt enige om at man skal begrænse Java-scripts så meget som overhovedet muligt, i sin web-programmering - netop af sikkerhedsmæssige årsager.

- Men i dette her tilfælde er det jo bare i mine øjne ret umuligt at undgå Java-script - og så vidt jeg husker så indser du også selv dette her i denne tråd.

- Men i det eksempel jeg lavede mener jeg faktisk at jeg forsøgte på at begrænse Java-script så meget som muligt...


\Dan
Avatar billede thesurfer Nybegynder
19. november 2006 - 00:53 #28
Normalt er det sådan, at selve preview'et loades i samme vindue.. Dvs, der popper ikke op i et nyt vindue..

Det er ikke særligt krævende at bruge JavaScript..

Man må selv overveje, om hvor vigtigt det er at preview'et vises i et popup-vindue..

Man kunne lave det sådan her:

Man kunn jo bruge action="preview.asp", til dem der ikke bruger JavaScript, og onclick="..." til dem er brugte JavaScript..


Jeg ville nu foretrække selv at kunne vælge, om det skal vises i samme vindue, eller i et popup-vindue..
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