Avatar billede sevelsted Nybegynder
02. november 2004 - 19:57 Der er 8 kommentarer og
1 løsning

Form med udtræk og input

Hej Eksperter.

Jeg har et problem.
Jeg er i gang med at lave en gæstebog i asp, men database.
Jeg har brugt et script hvor man selv skriver sit navn og
Email ind, jeg har så lavet et login system hvor jeg ved hjælp
af sessions laver udtræk af navn og emails.

Nu er problemet at det script jeg bruger til gæstebogen
bruger value feltet til at gemme de intastede oplysninger...
og jeg ville gerne have det sådan at jeg kan lave udtrækket til value feltet... og på den måde sørge for at der ikke er nødventig selv at skrive sit navn og email, men at de allerede var skrevet ind i et hidden tekstfelt....

Sådan ser det tekstfelt ud, som det er nu:
<input name="Navn" type="hidden" value="<%=strNavn%>">

Jeg vil gerne kunne lave et udtræk, ind i det felt som så gemmer det i databasen.
sådan ser udtrækket ud:
<%=session("fornavn")%>

Nu er spørgsålet så:
Kan man lave et hidden felt, som man først laver et udtræk til(med <%=session("fornavn")%>), og derefter gemmer det i databasen ved hjælp af <%=strNavn%>"> ?????

Med venlig hilsen
Sevelsted
Avatar billede hiks Nybegynder
03. november 2004 - 10:41 #1
hvis spørgsmålet er om du først kan sætte en sessions variabel og sidenhen gemme det i databasen så er svaret JA. Men syntes det er lidt kryptisk skrevet - så ved ikke om det er det du er ude efter!

/hiks
Avatar billede sevelsted Nybegynder
04. november 2004 - 11:57 #2
Hej hiks

Jov det er nok lidt det jer er ude efter, problemet er at jeg bruger 2 froskellige slags scrpit, et login system og en gæstebog, og dem vil jeg gerne have til at kører sammen...
Gennem login systemet, bruger jeg så nogle sessions til at hente navne og emailadr. ud med....

Her har du koderne...

Login:
<% 

dim db, ConnStr, i, sql, rs

' Database Connect
Function Connect ()
    Set DB = Server.CreateObject("ADODB.Connection")
    ConnStr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" + Server.MapPath("xxx.mdb")
    DB.Open (ConnStr)
    Set Connect = DB
End Function



' sql clean
function fixQuotes(strWords)
fixQuotes = replace(strWords, "'", "''")
dim badChars
dim newChars

badChars = array("select", "drop", ";", "--", "insert", "delete", "xp_", "or", "and")
newChars = fixQuotes

for i = 0 to uBound(badChars)
newChars = replace(newChars, badChars(i), "")
next

fixQuotes = newChars
end function
   




' login hvis du trykker på knap
if request("doit") = "Jep" then

    Set DB = Connect()
    SQL = "SELECT * FROM login WHERE email ='" + fixQuotes(Request("email")) + "' and password ='" + fixQuotes(Request("password")) + "' "
'    response.write sql
    Set RS = DB.Execute (SQL)
    If not RS.EOF Then
      Response.write "<div align='center' class='tekst'>Du er nu logget ind !</div>"
    session("login") = true ' Så er du login
    Session.Timeout=30 ' 30 min til du auto logout
   
   
    session("fornavn") = RS("fornavn") ' Så er du login
    session("postnr") = RS("postnr") ' Så er du login
    session("bynavn") = RS("bynavn") ' Så er du login
    session("email") = RS("email") ' Så er du login
    session("koen") = RS("koen") ' Så er du login
    response.redirect "default.asp" 'evt send person videre... 
    else
    Response.write "<div align='center' class='tekst'>Du er ikke logget ind...</div>"
    session("login") = false ' Du er ikke login
      response.redirect "default.asp" 'evt send person videre...
    end if

end if




'På sider som du ikke er login på som kræver login skal det her gør at du bliver sendt her til ..
'if session("login") <> true then response.redirect ("default.asp?menu=login")




'Hvis du vil have ting vist når du er login så
'if session("login") = true then

' ....
'    Ting
' ....

'End if

%>







Gæstebog:

<%
'På sider som du ikke er login på som kræver login skal det her gør at du bliver sendt her til ..
if session("login") <> true then response.redirect ("default.asp?menu=login")




'Hvis du vil have ting vist når du er login så
if session("login") = true then
end if
%>
<table border="0" cellspacing="0" cellpadding="0" width="770" height="100%" align="center" valign="top">
<tr><td width="175" align="center" valign="top">
<br>

</td>
<td width="550" valign="top">
<br>
<div class="overskrift">Gæstebog</div>
<br>
<div valign="top" align="center">
<table border="0" cellspacing="0" cellpadding="0" width="500" height="100%" align="center" valign="top"><tr><td valign="top" class="tekst">

<%

Const adOpenKeyset = 1
Const adLockOptimistic = 3

strMode = Request.QueryString("mode")
tempConn = "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("xxx.mdb")

If Request.Form("Gem") <> "" Then
    strError = ""
    strNavn = Trim(Request.Form("Navn"))
    strEmail = Trim(Request.Form("Email"))
    strKommentar = Trim(Request.Form("Kommentar"))
    If Len(strNavn) = 0 Then
        strError = "<li>Du skal skrive dit navn!</li>"
    ElseIf Len(strEmail) = False Then
        strError = "<li>Du skal skrive en gyldig e-mail adresse!</li>"
    ElseIf Len(strKommentar) = 0 Then
        strError = "<li>Du skal skrive en kommentar!</li>"
    End If
    If Len(strError) = 0 Then
        Set rs = Server.CreateObject("ADODB.RecordSet")
        strSQL = "SELECT * FROM Guestbook WHERE (ID = 0)"
        rs.Open strSQL, tempConn, adOpenKeyset, adLockOptimistic
        If (rs.BOF Or rs.EOF) Then
            rs.AddNew
            rs("Navn") = Server.HTMLEncode(strNavn)
            rs("Email") = Server.HTMLEncode(strEmail)
            rs("Kommentar") = Server.HTMLEncode(strKommentar)
            rs("Dato") = Now()
            rs.Update
        End If
        rs.Close
        Set rs = Nothing
    Else
        strError = "<p><ul><font color=#574902>" & strError & "</font></ul></p>"
        strMode = "add"
    End If
End If
%>

<table border="0" width="500" cellspacing="0" cellpadding="3">
    <tr>
      <td width="100%" bgcolor="#574902"><p><font face="verdana" size="4" color="#FFFFFF"><strong>Gæstebogen</strong></font></td>
    </tr>
    <tr>
      <td width="100%">

<%
Select Case strMode
Case "add"
%>
<form method="POST" action="default.asp?menu=gæstebog">
<table border="0" width="100%" cellspacing="0" cellpadding="2">
        <tr>
          <td valign="middle" align="left" colspan="2"><font face="tahoma" size="2"><br>Indtast venligst oplysningerne i følgende felter:<strong>
      <%=strError%></td>
        </tr>
        <tr>
          <td valign="middle" align="left"></td>
          <td valign="middle" align="left">
          <input name="Navn" type="hidden" value="<%=strNavn%>">
          </td>
        </tr>
        <tr>
          <td valign="middle" align="left"></td>
          <td valign="middle" align="left">
          <input name="Email" type="hidden" value="<%=strEmail%>">
          </td>
        </tr>
        <tr>
          <td valign="top" align="left"><div align="right"><p><strong><font face="verdana" size="2">Kommentar</font></strong></td>
          <td valign="middle" align="left"><textarea rows="3" name="Kommentar" cols="40"><%=strKommentar%></textarea></td>
        </tr>
        <tr>
          <td valign="middle" align="left" colspan="2"><br>
          <input type="submit" value="Gem" name="Gem"> <input type="button" value="Annuller" name="Annuller" onClick="java script:location.href='default.asp?menu=gæstebog'"></td>
        </tr>
      </table>
</form>
<%
Case Else
    strAddLine = "<p class='tekst'><img src='hjemmesidebilleder/add.gif' width='16' height='16'>&nbsp;<a href=default.asp?menu=gæstebog&mode=add><strong><font color=#000000>Skriv et indlæg i min gæstebog!</font></strong></a></p>"
    Response.Write strAddLine
    strSQL = "SELECT * FROM Guestbook ORDER BY Dato DESC;"
    Set myConn = Server.CreateObject("ADODB.Connection")
    myConn.Open tempConn
    Set rs = myConn.Execute(strSQL)
    If Not (rs.BOF Or rs.EOF) Then
        Response.Write "<table width=100% border=0 cellpadding=1 cellspacing=1>"
        Do While Not rs.EOF
            dtmDato = rs("Dato")
            dtmDato = FormatDateTime(dtmDato,vbLongDate) & " kl. " & FormatDateTime(dtmDato,vbLongTime)
            Response.Write "<tr bgcolor=#A49027><td width=""100%""><font face=tahoma size=2>" & dtmDato & "</td></tr>"
            If Len(rs("Email")) > 0 Then
                Response.Write "<tr><td><strong><a href=mailto:" & rs("Email") & "><font face=tahoma color=#000000 size=2>" & rs("Navn") & "</a><font face=tahoma color=#574902 size=2> skriver:</strong></td></tr>"
            Else
                Response.Write "<tr><td><font face=tahoma color=#574902 size=2><strong>" & rs("Navn") & " skriver:</strong></td></tr>"
            End If
            Response.Write "<tr><td><font face=tahoma size=2>" & rs("Kommentar") & "<br>&nbsp;</td></tr>"
            rs.MoveNext
        Loop
        Response.Write "</table>"
    Else
        Response.Write "<p><font face=tahoma size=2>Der er endnu ikke nogle der har skrevet i gæstebogen</font></p>"
    End If
    myConn.Close
    Set myConn = Nothing
    Response.Write strAddLine
End Select
%>

</tr>
    <tr align="center">
      <td width="100%" height="20" bgcolor="#574902"></td>
    </tr>
  </table>
  </center>

<br><br>
</td></tr></table>
</div>
</td>
<td><br><br></td>
</tr></table>

Der hvor jeg gerne vil have det til at fungerer sammen, er hvor der står:
<input name="Navn" type="hidden" value="<%=strNavn%>">

Det vil jeg gerne have lavet til et "hidden" felt, hvor der først bliver lavet er udtræk til, og derefter bliber feltets indhold gemt i databasen...
Avatar billede hiks Nybegynder
04. november 2004 - 12:10 #3
måske således?

<input name="Navn" type="hidden" value="<%=Session("fornavn")%>">
<input name="Email" type="hidden" value="<%=Session("email")%>">

/hiks
Avatar billede sevelsted Nybegynder
04. november 2004 - 13:58 #4
Ja, hvis det bare var så let,

Sådan er det bare næsten aldrig... :-(

For at det der står i feltet bliver gemt i databasen, skal <%=strNavn%>">
Stå i value feltet...

/sevelsted
Avatar billede hiks Nybegynder
04. november 2004 - 14:00 #5
hvorfor? hvorfor kan den ikke modtage andre værdier?

/hiks
Avatar billede hiks Nybegynder
04. november 2004 - 14:07 #6
jeg skal lige have forklaret flowet i dine sider så...

Først login - og så skal man ryge hvorhen? default.asp?menu=gæstebog

/hiks
Avatar billede sevelsted Nybegynder
04. november 2004 - 14:27 #7
Yeps.... www.sevenoaks.dk

Når man så står på default.asp?menu=gæstebog
er der nogle sessions fra login systemet, som jeg gerne lave nogle udtræk af...
blandt andet <%=Session("fornavn")%>">

Jeg vil dog gerne have at det ikke er nødventig for brugeren at indtaste sit navn og email igen, når han/hun skriver i gæstebogen....
(derfor den hidden formtil navn og email)

Det er så her jeg render ind i problemer, for gæstebogen er lavet anderledes, så den skal bruge verdien fra form feltet altså value=""
og til det bruger den: <%=strNavn%>">
som den tager medsig når du trykker på send knappen...

/sevelsted
Avatar billede hiks Nybegynder
04. november 2004 - 16:27 #8
ja det er da også meget fint. Men jeg kan stadig ikke se hvorfor

<input name="Navn" type="hidden" value="<%=Session("fornavn")%>">
<input name="Email" type="hidden" value="<%=Session("email")%>">

ikke må blive skrevet af sessions variable, der er jo dem den slæber med videre så og brugere er jo logget ind så derfor er vi alle galde?

Er det fordi at du gerne vil skrive mere end fornavn og emailen i gæstebogen? Ellers forstår jeg det simpelthen ikke - der burde ikke være nogen problemer i at tage sessions variablerne og ligge dem i de to input felter som jo er hidden og sidenhen så poste dem til siden vha "GEM" knappen. Det er jo kun når brugeren trykker "GEM" at den vil smide det i databasen. - Og jeg kan se i din gem "procedure" at der forespørger den så på de to inputvariable som nu har fået værdierne fra sessionen.

ellers kan du jo gøre det at du i den "procedure"

            rs("Navn") = Server.HTMLEncode(Session("fornavn"))
            rs("Email") = Server.HTMLEncode(Session("email"))

ellers forstår jeg det simpelthen bare ikke? Du bruger jo kun strNavn og StrEmail når du gemmer og de bliver jo automatisk dine sessionsvariable.

/hiks
Avatar billede sevelsted Nybegynder
14. september 2005 - 12:01 #9
Lukker her, det virker ikke...
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