Avatar billede dolly Nybegynder
17. december 2003 - 21:22 Der er 8 kommentarer og
1 løsning

Gæstebog problemer

Hej!
Jeg sidder med et lille haste problem i min gæstebog, fordi jeg har lagt det, hvor man tilføjer og ser selve gæstebogen sammen. Jeg ved ikke, om der er noget jeg enten over ser eller gør forkert. Er der hurtigt hjælp at hente til en pæn slat point eller er alle gået på juleferie?

risogros.asp (Denne fil er hvor jeg tilføjer og kan se selve gæstebogen)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Systematics homekitchen</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">
<!--



function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
//-->
</script>
<script language="JavaScript">window.status = ""</script>
<script language="javascript" src="validering.js"></script>

<link href="ego.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
@import url("systematic.css");
-->
</style>

<style>
BODY {    SCROLLBAR-FACE-COLOR: #ffffff;
          SCROLLBAR-HIGHLIGHT-COLOR: #ff0000;
          SCROLLBAR-SHADOW-COLOR: #cccccc;
          SCROLLBAR-3DLIGHT-COLOR: #DFDFDF;
          SCROLLBAR-ARROW-COLOR: #ff0000;
          SCROLLBAR-TRACK-COLOR: #ffffff;
          SCROLLBAR-DARKSHADOW-COLOR: #ffffff
}
</style>

</head>

<body class="broedtxt">
<table width="640" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="40"><img src="grafik/trans.gif" width="40" height="30" border="0"></td>
    <td width="640"></td>
  </tr>
  <tr>
    <td></td>
    <td valign="top" class="overskrifter"><table width="600" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td><img src="grafik/overskrifter/risogros.gif" width="240" height="24"></td>
        </tr>
        <tr>
          <td><img src="grafik/trans.gif" width="6" height="15"></td>
        </tr>
        <tr>
          <td class="broedtxt"><p>Om det m&aring; v&aelig;re ris eller ros, s&aring;
              vil de sidste 200 skrevne kommentarer ligge tilg&aelig;ngelig p&aring;
              denne side, hvorefter de vil blive overskrevet af nye kommentarer.<br>
              <img src="grafik/trans.gif" width="6" height="10"> </p>
            </td>
        </tr>
        <tr>
          <td class="broedtxt"><table border="0" cellpadding="0" cellspacing="0">
              <tr>
                <td width="84" height="30" class="broedtxt"> Navn</td>
                <td width="324" height="30"> <input name="navn" maxlength="46" type="text" class="inputfield" size="30">
                  <span class="broedtxt">max 46 tegn</span></td>
              </tr>
              <tr>
                <td height="30"> <span class="broedtxt">E-mail</span></td>
                <td height="30"> <input name="email" type="text" class="inputfield" size="30">
                </td>
              </tr>
              <tr>
                <td height="30" valign="top" class="broedtxt"> <img src="grafik/trans.gif" width="6" height="2"><br>
                  Kommentar</td>
                <td height="30"><textarea name="text" rows="4" cols="39" wrap="virtual" class="inputfield"></textarea></td>
              </tr>
              <tr>
                <td>&nbsp; </td>
                <td height="45"> <input type="hidden" name="StrMode" value="new_comment">
                  <input name="button" type="button" class="button" onFocus="this.blur()" onClick="validering()" value="tilf&oslash;j kommentar">
                </td>
              </tr>
              <tr valign="top">
                <td height="18" colspan="2">
                  <%
if Session("error") = true then
  response.write "Following mistake has occured<br>" & Session("message")
  Session("error") = false
end if
%>
                </td>
              </tr>
            </table></td>
        </tr>
      </table></td>
  </tr>
  <tr>
    <td></td>
    <td valign="top" class="broedtxt"> <table width="600" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td valign="top">
<%

' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("../Systematic/homekitchen.mdb")
Conn.Open DSN

' De sidste 200 kommentarer bliver hentet ind med denne streng, hvorefter de overskrives fra en ende, når antallet er oversteget
strSQL = "Select top 200 * from risogros order by ID desc"

' Udfør forespørgsel (objRec indeholder nu resultatet)
Set objRec = Conn.Execute(strSQL)

do while not objRec.eof

comment = Replace(objrec("text"), vbCrLf, "<BR>")

response.write "<table border=""1"" bordercolor=""#cccccc"" width=""550"" cellpadding=""20"" cellspacing=""3""><tr><td bordercolor=""#cccccc"">"
response.write "<table width=""550"" align=""center"" cellpadding=""3"" cellspacing=""0""><tr class=""broedtxt""><td background=""system/td_back.gif"">"
response.write "<span class=""mellemoverskrift"">" & objrec("nick") & "</span>"
response.write "</td><td align=""right"" background=""system/td_back.gif"">"
response.write "<a href=mailto:" & objrec("email") & " onFocus=""this.blur()""><img src=grafik/envelope.gif border=0 alt=" & objrec("email") & "></a>"
response.write "</td></tr>"
response.write "<tr><td colspan=""2"">"
response.write "<table class=""broedtxt"" cellpadding=""0"" cellspacing=""0"" width=""100%""><tr><td>"
response.write comment
response.write "</td></tr></table>"
response.write "</td></tr>"
response.write "<tr class=""datotidDB""><td background=""system/td_back2.gif"">"
response.write "date: " & objrec("dato")
response.write "</td><td align=""right"" background=""system/td_back2.gif"">"
response.write "time: " & objrec("tid")
response.write "</td></tr></table>"
response.write "</td></tr></table><br>"
objRec.movenext
loop

' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing

%>
          </td>
        </tr>
      </table></td>
  </tr>
</table>
</body>
</html>


add_risogros.asp (denne fil tilføjer til min gæstebog)

<%

'Set the response buffer to true as we maybe redirecting
Response.Buffer = True

strMode = request.form("strMode")

'If the session variable is False or does not exsist then redirect the user to the unauthorised user page
If strMode <> "new_comment" then
    'Redirect to user start page
    Response.Redirect "index.asp"
End If

'Dimension variables
Dim strInputComments             'Holds the Users comments
Dim saryCommentWord             'Array to hold each word in the comments enetred by the user
Dim intCheckWordLengthLoopCounter    'Loop counter
Dim intWordLength            'Holds the length of the word to be checked
Dim blnWordLenthOK            'Boolean set to False if any words in the description are above 80 characters
Dim intLongestWordLength         'Holds the number of characters in the longest word entered in the

'Read in user deatils from the guestbook form
strInputComments = Request.Form("text")

'Split-up each word in the comments from the user to check that no word entered is over 50 characters
saryCommentWord = Split(Trim(strInputComments), " ")
   
'Initialse the word length variable
blnWordLenthOK = True
   
'Loop round to check that each word in the comments entered by the user is not above 70 characters
For intCheckWordLengthLoopCounter = 0 To UBound(saryCommentWord)
   
    'Initialise the intWordLength variable with the length of the word to be searched
    intWordLength = Len(saryCommentWord(intCheckWordLengthLoopCounter))
   
    'Get the number of characters in the longest word
    If intWordLength => intLongestWordLength Then
        intLongestWordLength = intWordLength
    End If
       
    'If the word length to be searched is more than or equal to 70 then set the blnWordLegthOK to false
    If intWordLength => 80 Then
        blnWordLenthOK = False               
    End If
Next

If blnWordLenthOK = True Then

Set Rs = Server.CreateObject ("ADODB.Connection")
set rec = server.createobject("ADODB.recordset")
Rs.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("../Systematic/homekitchen.mdb")
Rec.open "risogros", Rs, 2, 3

Dim dato
dato = date()

Dim tid
tid = time()

navn = Request ("navn")
email = Request ("email")
comment = Request ("text")

if comment = "" then
  comment = "Ingen kommentar er tastet ind!"
end if

Rec.Addnew
Rec("nick") = navn
Rec("email") = email
Rec("text") = comment
Rec("dato") = dato
Rec("tid") = tid
REC.Update

Rec.close
set Rec=nothing
Response.redirect "risogros.asp"

else
Session("error") = true
Session("message") = "Beklager, det er ikke lovligt at taste over 46 tegn!"
Response.redirect "risogros.asp"
end if
%>


//D
Avatar billede netro Nybegynder
17. december 2003 - 21:26 #1
Du har et hasteproblem? Og hvad er dette så?
Avatar billede eagleeye Praktikant
17. december 2003 - 21:27 #2
Du mangler en <form> og en </form> tag omkring dine input felter sådan felterne er på formen.:

Samt du skal havde et hidden felt på din form som hedder strMode:

<form action="add_risogros.asp" method="POST">
<input type="hidden" name="strMode" value="new_comment">

.. alle dine input felter ..

</form>
Avatar billede eagleeye Praktikant
17. december 2003 - 21:31 #3
Så skal du være sikker på denne validate funktion submitter formen og ikke kun returnere true/false...
onClick="validering()"

For normalt vil man lave en onSubmit i form tagen da valideings funktioner typisk returnere true/false alt efter om form må sendes, så skal knappen være en submit knap og ikke en button...
Avatar billede dolly Nybegynder
17. december 2003 - 21:54 #4
Tak for din hurtige hjælp, Eagleeye! Men det driller lige lidt endnu. Jeg indsætter lige mine filer igen, men denne gang også min validering, fordi jeg er ikke helt klar over, hvad det er, du vil have mig til at gøre her:

"Så skal du være sikker på denne validate funktion submitter formen og ikke kun returnere true/false...
onClick="validering()"

For normalt vil man lave en onSubmit i form tagen da valideings funktioner typisk returnere true/false alt efter om form må sendes, så skal knappen være en submit knap og ikke en button..."


risogros.asp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Systematics homekitchen</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">
<!--



function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
//-->
</script>
<script language="JavaScript">window.status = ""</script>
<script language="javascript" src="validering.js"></script>

<link href="ego.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
@import url("systematic.css");
-->
</style>

<style>
BODY {    SCROLLBAR-FACE-COLOR: #ffffff;
          SCROLLBAR-HIGHLIGHT-COLOR: #ff0000;
          SCROLLBAR-SHADOW-COLOR: #cccccc;
          SCROLLBAR-3DLIGHT-COLOR: #DFDFDF;
          SCROLLBAR-ARROW-COLOR: #ff0000;
          SCROLLBAR-TRACK-COLOR: #ffffff;
          SCROLLBAR-DARKSHADOW-COLOR: #ffffff
}
</style>

</head>

<body class="broedtxt">
<table width="640" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="40"><img src="grafik/trans.gif" width="40" height="30" border="0"></td>
    <td width="640"></td>
  </tr>
  <tr>
    <td></td>
    <td valign="top" class="overskrifter"><table width="600" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td><img src="grafik/overskrifter/risogros.gif" width="240" height="24"></td>
        </tr>
        <tr>
          <td><img src="grafik/trans.gif" width="6" height="15"></td>
        </tr>
        <tr>
          <td class="broedtxt"><p>Om det m&aring; v&aelig;re ris eller ros, s&aring;
              vil de sidste 200 skrevne kommentarer ligge tilg&aelig;ngelig p&aring;
              denne side, hvorefter de vil blive overskrevet af nye kommentarer.<br>
              <img src="grafik/trans.gif" width="6" height="10"> </p>
            </td>
        </tr>
        <tr>
          <td class="broedtxt"><form name="new_comment" action="add_risogros.asp" method="post">
              <form action="add_risogros.asp" method="POST">
            <input type="hidden" name="strMode" value="new_comment">
          <table border="0" cellpadding="0" cellspacing="0">
                        <tr>
                <td width="84" height="30" class="broedtxt"> Navn</td>
                <td width="324" height="30"> <input name="navn" maxlength="46" type="text" class="inputfield" size="30">
                  <span class="broedtxt">max 46 tegn</span></td>
              </tr>
              <tr>
                <td height="30"> <span class="broedtxt">E-mail</span></td>
                <td height="30"> <input name="email" type="text" class="inputfield" size="30">
                </td>
              </tr>
              <tr>
                <td height="30" valign="top" class="broedtxt"> <img src="grafik/trans.gif" width="6" height="2"><br>
                  Kommentar</td>
                <td height="30"><textarea name="text" rows="4" cols="39" wrap="virtual" class="inputfield"></textarea></td>
              </tr>
              <tr>
                <td>&nbsp; </td>
                <td height="45"> <input type="hidden" name="StrMode" value="new_comment">
                  <input name="button" type="button" class="button" onFocus="this.blur()" onClick="validering()" value="tilf&oslash;j kommentar">
                </td>
              </tr>
              <tr valign="top">
                <td height="18" colspan="2">
                  <%
if Session("error") = true then
  response.write "Following mistake has occured<br>" & Session("message")
  Session("error") = false
end if
%>
                </td>
              </tr>
            </table>  </form></td>
        </tr>
      </table></td>
  </tr>
  <tr>
    <td></td>
    <td valign="top" class="broedtxt"> <table width="600" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td valign="top">
<%

' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("../Systematic/homekitchen.mdb")
Conn.Open DSN

' De sidste 200 kommentarer bliver hentet ind med denne streng, hvorefter de overskrives fra en ende, når antallet er oversteget
strSQL = "Select top 200 * from risogros order by ID desc"

' Udfør forespørgsel (objRec indeholder nu resultatet)
Set objRec = Conn.Execute(strSQL)

do while not objRec.eof

comment = Replace(objrec("text"), vbCrLf, "<BR>")

response.write "<table border=""1"" bordercolor=""#cccccc"" width=""550"" cellpadding=""20"" cellspacing=""3""><tr><td bordercolor=""#cccccc"">"
response.write "<table width=""550"" align=""center"" cellpadding=""3"" cellspacing=""0""><tr class=""broedtxt""><td background=""system/td_back.gif"">"
response.write "<span class=""mellemoverskrift"">" & objrec("nick") & "</span>"
response.write "</td><td align=""right"" background=""system/td_back.gif"">"
response.write "<a href=mailto:" & objrec("email") & " onFocus=""this.blur()""><img src=grafik/envelope.gif border=0 alt=" & objrec("email") & "></a>"
response.write "</td></tr>"
response.write "<tr><td colspan=""2"">"
response.write "<table class=""broedtxt"" cellpadding=""0"" cellspacing=""0"" width=""100%""><tr><td>"
response.write comment
response.write "</td></tr></table>"
response.write "</td></tr>"
response.write "<tr class=""datotidDB""><td background=""system/td_back2.gif"">"
response.write "date: " & objrec("dato")
response.write "</td><td align=""right"" background=""system/td_back2.gif"">"
response.write "time: " & objrec("tid")
response.write "</td></tr></table>"
response.write "</td></tr></table><br>"
objRec.movenext
loop

' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing

%>
          </td>
        </tr>
      </table></td>
  </tr>
</table>
</body>
</html>




add_risogros.asp

<%

'Set the response buffer to true as we maybe redirecting
Response.Buffer = True

strMode = request.form("strMode")

'If the session variable is False or does not exsist then redirect the user to the unauthorised user page
If strMode <> "new_comment" then
    'Redirect to user start page
    Response.Redirect "index.asp"
End If

'Dimension variables
Dim strInputComments             'Holds the Users comments
Dim saryCommentWord             'Array to hold each word in the comments enetred by the user
Dim intCheckWordLengthLoopCounter    'Loop counter
Dim intWordLength            'Holds the length of the word to be checked
Dim blnWordLenthOK            'Boolean set to False if any words in the description are above 80 characters
Dim intLongestWordLength         'Holds the number of characters in the longest word entered in the

'Read in user deatils from the guestbook form
strInputComments = Request.Form("text")

'Split-up each word in the comments from the user to check that no word entered is over 50 characters
saryCommentWord = Split(Trim(strInputComments), " ")
   
'Initialse the word length variable
blnWordLenthOK = True
   
'Loop round to check that each word in the comments entered by the user is not above 70 characters
For intCheckWordLengthLoopCounter = 0 To UBound(saryCommentWord)
   
    'Initialise the intWordLength variable with the length of the word to be searched
    intWordLength = Len(saryCommentWord(intCheckWordLengthLoopCounter))
   
    'Get the number of characters in the longest word
    If intWordLength => intLongestWordLength Then
        intLongestWordLength = intWordLength
    End If
       
    'If the word length to be searched is more than or equal to 70 then set the blnWordLegthOK to false
    If intWordLength => 80 Then
        blnWordLenthOK = False               
    End If
Next

If blnWordLenthOK = True Then

Set Rs = Server.CreateObject ("ADODB.Connection")
set rec = server.createobject("ADODB.recordset")
Rs.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("../Systematic/homekitchen.mdb")
Rec.open "risogros", Rs, 2, 3

Dim dato
dato = date()

Dim tid
tid = time()

navn = Request ("navn")
email = Request ("email")
comment = Request ("text")

if comment = "" then
  comment = "Ingen kommentar er tastet ind!"
end if

Rec.Addnew
Rec("nick") = navn
Rec("email") = email
Rec("text") = comment
Rec("dato") = dato
Rec("tid") = tid
REC.Update

Rec.close
set Rec=nothing
Response.redirect "risogros.asp"

else
Session("error") = true
Session("message") = "Beklager, det er ikke lovligt at taste over 46 tegn!"
Response.redirect "risogros.asp"
end if
%>


validering.js

function validering()
  {

if (new_comment.navn.value == "")
  alert('Husk at indtaste dit navn!')

else

{

  error = 0;

  placering=0;
  tekst=(new_comment.email.value).toLowerCase();
  placering=tekst.indexOf("@");
  if(tekst ==""){
    alert ("Husk at indtaste din e-mail!");
  error = 1;
  }
  else{
    tegn=tekst.indexOf(" ");
    if(tegn!=-1){
      alert ("Mellemrum kan ikke benyttes i din e-mail!");
      error = 1;
    }
    else{
      if (tekst.indexOf("æ")!=-1 || tekst.indexOf("ø")!=-1 || tekst.indexOf("å")!=-1 ||
        tekst.indexOf("Æ")!=-1 || tekst.indexOf("Ø")!=-1 || tekst.indexOf("Å")!=-1 ||
        tekst.indexOf(";")!=-1 || tekst.indexOf(",")!=-1){
        alert ("Disse bogstaver æ ø å Æ Ø Å , kan ikke benyttes i din e-mail!");
        error = 1;
      }
    else{
      if (placering<1 || tekst.length<=(placering+1)){
        alert ("Din e-mail er forkert - prøv igen!");
        error = 1;
      }
    }
  }
}
if(error == 0)
new_comment.submit();   
}
}


Derudover, når jeg prøver at tilføje til min DB = gæstebog, så sender den min index tilbage istedet for risogros.asp, hvor gæstebogen står og jeg er ikke sikker på den tilføjer til min DB (homekitchen.mdb). Ja, jeg tror bare, jeg totalt har mistet overblikket over dette nu. Kan du hjælpe igen?

//D
Avatar billede eagleeye Praktikant
17. december 2003 - 21:58 #5
Måske jeg var total blind første gang eller..... men form tagen er der to gang nu:

<form name="new_comment" action="add_risogros.asp" method="post">
              <form action="add_risogros.asp" method="POST">

Prøv at slette nr.2 så der kun er denne tilbage:
<form name="new_comment" action="add_risogros.asp" method="post">


Ok validate funktionen bruger formnavnet name="new_comment" som reference så det ok.
Avatar billede eagleeye Praktikant
17. december 2003 - 22:00 #6
Grunden til den ryger på din index er her:

If strMode <> "new_comment" then
    'Redirect to user start page
    Response.Redirect "index.asp"
End If

Det fordi strMode ikke er lig new_comment så den gemmer ikke noget i databasen.
Avatar billede eagleeye Praktikant
17. december 2003 - 22:05 #7
Prøv at udkommentere  Response.Redirect "index.asp"
Så skulle den kunne gemme i databasen:

If strMode <> "new_comment" then
    'Redirect to user start page
    'Response.Redirect "index.asp"
End If
Avatar billede dolly Nybegynder
17. december 2003 - 22:10 #8
Sådan, Eagleeye...du kan det der pis!

Svar mig og du får pointene!

Tak for hjælpen og god jul!

//D
Avatar billede eagleeye Praktikant
17. december 2003 - 22:11 #9
Ok du får et svar fra mig ;)
Jo tak og god jul også til dig.
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