<% 'Åbner connection til databasen Set conn = Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("db.mdb")
'Hvis brugeren har submittet formularen if Request.ServerVariables("REQUEST_METHOD") = "POST" then
'Tjecker om felterne er udfyld if (Request.Form("title") <> "" AND Request.Form("nyhed") <> "") then
'Tilføjer brugeren til databasen Set rs = Server.CreateObject("ADODB.Recordset") strSQL = "select * from nyheder" rs.Open strsql, conn, 1, 3
'Tilføjer brugeren til databasen og sender ham/hende til login siden rs.AddNew rs("title") = Server.HTMLEncode(Request("title")) rs("nyhed") = Replace(Request("nyhed"), vbCrLf, "<br>") rs("smiley") = Server.HTMLEncode(Request("smiley")) rs("forfatter") = Session("auth_Fornavn") & " " & Session("auth_Efternavn") rs("Email") = Session("auth_Email") rs("dato") = Now() rs.update
Response.Write("<strong><font color=000000>Din nyhed er nu postet!</font></strong>")
rs.Close set rs = nothing
else
Response.Write"<strong><font color='#ffffff'>Du mangler at udfylde en eller flere felter!</font></strong>" Response.Write"<script>" Response.Write"window.setTimeout('history.back();',2000);" Response.Write"</script>"
end if end if %> <form action="admin.asp?mode=opret" method="post">
På MinSide.asp laver du et check på mode, hvis det er preview, udskriver du alle værdier og laver en ny form med alle værdier i hidden felter og en submit knap, der submitter formen endeligt. Denne submitter evt. til samme side og med mode <> preview, submitter du den til databasen.
Når der fra formen trykkes preview, vises data i et nyt vindue med en alle felter fra første side i hidden felter og en submit knap. Når der klikkes på denne submit knap, oprettes alle data i databasen (det sidste har jeg ikke lavet, den skriver bare "Submit form her")
Det var min opfattelse, at man skulle lave et preview inden man submittede koden endeligt? Hvis du vil tillade både og bør du i stedet ændre styringen af om der skal oprettes eller laves preview, så det ikke styres via en querystring parameter, men i stedet via værdien på submit knappen.
Grr ... gnuf og alt muligt latterligt ... det har jeg ikke lige i tankerne at lave ... jeg tror egentlig også at det vil være meget bedre at lave en preview funktion først før man kan submite :-D
Grr ... gnuf og alt muligt latterligt ... nej jeg bliver sku nødt til at lave det som planlagt ... kan du forklare mig det en smule bedre hvordan jeg skal lave det med en preview og en opret nyheden knappe?
Jeg kan ikke få dit til at give mening ... du har jo kun en preview knappe ...
Vil jeg bare kunne bruge følgende på min side: If LCase(Request.Form("submit")) = "preview" Then
Lad os tage det fra bunden. Glem lige alt det den skal vis for nu. Bare vi kan få delt de 2 knapper så den ene poster beskeden som den gør lige nu og så den anden sender brugen til admin?mode=preview
Nej ikke standard, men man kan lave en JavaScript submit funktion, der kontrollerer din submit og den kan differentiere. Det burde dog ikke være nødvendigt og er også en smule farligt, da klienten kan have JavaScript disabled.
OK ... lad og så prøve ... nu har jeg det samme som dig på første side: <form action="admin.asp" method="post"> <input name="submit" type="submit" class="Button" value="Opret Nyheden"> <input name="reset" type="reset" class="Button" value="Slet og Start Forfra"> <input name="Preview" type="submit" class="Button" value="Preview"></td>
Jo, request.form("Submit") får VALUE værdien fra din knap.
Du bør derfor som en sikkerhed kontrollere på eks. LCase(Request.Form("Submit")) = "preview" så du tvinger den til at sammenligne med samme case.
Det kan godt være at mine kommentarer virker lidt rodede, for de relaterer sig til forskellige brudtykker af din kode :-)
Du kan stadig godt anvende en querystring parameter til at komme frem til opret mode. Hvis du kigger på mit seneste "komplette" eksempel, nøjes jeg med at kontrollere om der er klikket på preview knappen ellers er det opret. Det vil således ikke påvirke din nuv. kode, du skal blot ignorere min kommentar fra 25/06-2002 13:21:27 - jeg troede du mente noget andet.
Jeg tror ikke helt at jeg forstå hvad du mener. Nu har jeg prøvet med følgende:
<% '--- Nyheder Opret --- If LCase(Request.Form("submit")) = "opret" Then %>
Men så virker min links stadig ikke! Kan man lave en hvis dette eller dette er sandt så gør dette? Altså så man kan lave noget i stil med dette: <% mode=request("mode") mode1=request.Form("Submit") if mode="opret" or if mode1="opret" then %>
Nu har jeg fået det til at virke med min opret nyheden og min forige knapper. Men preview funktionen virker stadig ikke. Når man trykker på den bliver man ikke sendt til mode="preview". Følgende er hvad jeg har:
Det er som om at request.Form("Submit") for Preview er tom ... for den bliver bare sendt til forsiden eftersom at den ikke opfylder nogle af if kravne!
Det hjælper heller ikke ... Men til at under søge Opret nyheden brugte jeg jo bare: <% '--- Nyheder Opret --- mode=request("mode") mode1=request.Form("Submit") if mode="opret" OR mode1="Opret Nyheden" then %>
Du roder lidt rundt i navnene på dine knapper. For at lave det så let som muligt, giver du begge knapper samme navn, eks. Submit. Så kan du kontroller via Request.Form("Submit") hvilken knap der er trykket på.
Indtil nu har knappen heddet preview og P og jeg tror ikke du får det sybkroniseret hele vejen igennem dit script, når du ændrer navnet.
Så kan vi da komme til det det hele drejer sig om! Nu skal jeg så have gemt titlen og nyheden inden jeg går over til preview så jeg kan få det vist der. Hvordan gøres det så?
Jeg forstår ikke hvorfor du vil gemme det i en sesions variabel. Hvis du anvender mit oprindelige eksempel, tager den jo aut. alle felter fra den oprindelige formular med over - og dermed også titlen.
Faktisk skal du nok have sorteret knapperne fra i For-Each, da den tager alle felter og dermed også knapperne.
Jeg skal have min titel smidt et sted for sig ... det var derfor at jeg ville mene at det var nemmest at gemme titlen i en session og gemme nyheden i en session og så kalde dem frem på preview siden. Men jeg ved bare ikke hvordan jeg gemmer dem i en session eller et eller andet!
Laver den en formular på preview siden og udskriver samtidig alle værdier. Men du kan naturligvis godt vælge at gemme dem i sessions variabler, der er faktisk ret nemt:
Session("Titel") = Request.Form("Titel")
Og når du skal læse den refererer du blot til Session("Titel")
Husk dog på, at anvendelse af sessions variabler kræver at cookies er slået til i browseren.
Nej, den skal smides ind efter du har submittet din form, for indtil da er felterne tomme. De skal altså ind på den side der submittes til (default.asp?)
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.