Avatar billede jtc Nybegynder
06. december 2003 - 21:41 Der er 45 kommentarer og
1 løsning

Simpel fejl ved forkert brugernavn og password

Hvorfor er der fejl i linie 19 dvs
  Set rs = Conn.Execute(SQL)
når man indtaster et forkert brugernavn og password?


<%
if Request.Querystring("mode") = "logud" then
  Session("login") = ""
  Session.Abandon
  'Det er nødvendig at lave redirect eller slettes session ikke helt
  Response.Redirect("http://www.db.dk")
end if
%>
<%
if Request.ServerVariables("REQUEST_METHOD") = "POST" then

  Set Conn = Server.CreateObject("ADODB.Connection")
  Set rs = Server.CreateObject("ADODB.Recordset")
  Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/db/login.mdb")
 
  password = Replace(Request.Form("password"),"'","''")
  licensnr = Replace(Request.Form("licensnr"),"'","''")
 
  SQL = "SELECT * FROM tblmedlemmer WHERE licensnr = " & licensnr & " AND adgangskode = '" & password & "'"
  Set rs = Conn.Execute(SQL)
  if NOT rs.EOF then
    Session("login") = "loged_in"
    Session("licensnr") = rs("licensnr")
  else
    Session("login") = ""
  end if
  rs.Close
  Set rs = nothing
  Conn.Close
  Set Conn = nothing
  if Session("login") = "loged_in" then
    If Request.QueryString("funktion") = "opret" then
    Response.Redirect("opret.asp")
    else
    Response.Redirect("besvar.asp?id=" & request.QueryString("id"))
    end if
  Else
    If Request.QueryString("funktion") = "opret" then
    Response.Redirect("opret.asp?funktion=opret")
    else
    Response.Redirect("besvar.asp?funktion=besvar&id=" & request.QueryString("id"))
    end if
  end if
end if
%>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/JavaScript">
function valider () {
  if ( form1.licensnr.value.length == 8 ) {
  } else {
      alert ("Du har indtastet et forkert licensnr.");
      form1.kommentar.focus();
      return false; 
  };

  if ( form1.password.value.length > 0 ) {
  } else {
      alert ("Du har glemt at skrive din adgangskode.");
      form1.overskrift.focus();
      return false; 
  };

  form1.submit();
}; 
</script>
</head>

<body background="bag.jpg">
<center>
<%
if request.QueryString("funktion") = "opret" then
%>
<form action="login.asp?funktion=opret" method="post" name="form1">
<%
end if
%>
<%
if request.QueryString("funktion") = "besvar" then
%>
<form action="login.asp?funktion=besvar&id=<% = request.QueryString("id") %>" method="post" name="form1">
<%
end if
%>

  <table border="0">
    <tr>
      <td colspan="2"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Login
        til JBU's Debatforum</font></strong></td>
    </tr>
    <tr>
      <td width="96"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Licensnr:</font></td>
      <td width="151"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
        <input name="licensnr" type="text" id="licensnr" size="21">
        </font></td>
    </tr>
    <tr>
      <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Adgangskode:</font></td>
      <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
          <input name="password" type="password" size="21">
        </font></td>
    </tr>
    <tr>
      <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">&nbsp;</font></td>
      <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
        <input name="login" type="button" onclick="valider()" value="Login">
        </font></td>
    </tr>
  </table>
  </form>
  <p><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><strong>NB. Licensnr.
    skal tastes som et langt tal, UDEN mellemrum og -.<br>
    eks: 51121478</strong></font></p>
  <p> </p>
  <p><strong><font size="3" face="Verdana, Arial, Helvetica, sans-serif">Har du
    ikke f&aring;et en adganskode, s&aring; send en mail til <a href="mailto:webmaster@jbwu.dk">webmaster</a>
    med licensnr, navn og &oslash;nsket adganskode.</font></strong><br>
  </p>
</center>
</body>
Avatar billede eagleeye Praktikant
06. december 2003 - 21:46 #1
som det ser ud er licensnr et tal så hvis man ikke skriver et nummer eller skriver et bogstav får man en fejl. Samt man skal ikke lave ' om til to '' for tal der skal ' fjernes. Man kan laves sådan den tjekke på om licensnr er et tal eller sættes den default til 0 eksvis



  password = Replace(Request.Form("password"),"'","''")
  licensnr = Replace(Request.Form("licensnr"),"'","")
  if isNumeric(licensnr) = false then licensnr = 0
 
  SQL = "SELECT * FROM tblmedlemmer WHERE licensnr = " & licensnr & " AND adgangskode = '" & password & "'"
Avatar billede jtc Nybegynder
06. december 2003 - 21:51 #2
tak for det eagleeye men det havde sådanset selv løst problemet ved at lave feltet om til et tekstfelt

Men kan du så ikke sige mig hvordan jeg tjekker om licensnr-feltet udelukkende indeholdet tal ved hjælp af følgende skript
function valider () {
  if ( form1.licensnr.value.length == 8 ) {
  } else {
      alert ("Du har indtastet et forkert licensnr.");
      form1.kommentar.focus();
      return false; 
  };
Avatar billede eagleeye Praktikant
06. december 2003 - 22:03 #3
man kan tilføje noget som dette som tjekke hver karakter:

    var string = form1.licensnr.value;
    var valid="0123456789"
    for (var i=0; i<string.length; i++) {
        if (valid.indexOf(string.charAt(i)) < 0) {
            alert('invalid characters');
            return false;
        }
    }
Avatar billede jtc Nybegynder
06. december 2003 - 22:09 #4
hvor skal det så tilføjes
Avatar billede eagleeye Praktikant
06. december 2003 - 22:15 #5
Det må være inde i det hvor strengen er ok:


function valider () {
  if ( form1.licensnr.value.length == 8 ) {
    var string = form1.licensnr.value;
    var valid="0123456789"
    for (var i=0; i<string.length; i++) {
        if (valid.indexOf(string.charAt(i)) < 0) {
            alert("Ugyldig karakter");
            form1.kommentar.focus();
            return false;
        }
    }
  } else {
      alert ("Du har indtastet et forkert licensnr.");
      form1.kommentar.focus();
      return false; 
  };
Avatar billede jtc Nybegynder
06. december 2003 - 22:15 #6
Det fandt jeg også selv en løsning på men hvordan kan det så være at jeg ikke bare kan trykke enter når jeg står i et af formfelterne???

Det plejer man da at kunne
Avatar billede eagleeye Praktikant
06. december 2003 - 22:23 #7
Det er fordi det ikke er en submit kanp men en almendelig knap du har..
<input name="login" type="button" onclick="valider()" value="Login">

Hvis du laver en submit knap og så kalder validate funtion'en i <form>'tagens onsubmit så skulle det virke som normalt...:
<input name="login" type="submit" value="Login">


Så skal <form>'tagen laves om til:
<form action="login.asp?funktion=besvar&id=<% = request.QueryString("id") %>" method="post" onsubmit="return valider();" name="form1">


Samt sidste ting i funktionen skal man så lave en return true i stedet for .submit så denne:
form1.submit();

Bliver til:
return true;
Avatar billede jtc Nybegynder
06. december 2003 - 22:27 #8
ja det virker næsten men så går den også ind og tjekker i databasen det skal den jo ikke

Hvad skal man så gøre
Avatar billede eagleeye Praktikant
06. december 2003 - 22:31 #9
jeg er ikke helt med?? sender formen vidre selvom det er forkert?
Avatar billede jtc Nybegynder
06. december 2003 - 22:33 #10
Ja hvis formen er forkert så går den ind i databasen og tjekker om licensnr og password er rigtigt

Der er vel fordi der står følgende
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
Avatar billede eagleeye Praktikant
06. december 2003 - 22:35 #11
det skulle den ikke kunne gøre, hvordan ser valider() funktionen ud nu?
Avatar billede jtc Nybegynder
06. december 2003 - 22:35 #12
kan man ikke lave den om så den kun tjekker i databasen hvis formen er udfyldt korrekt ved renturn true
Avatar billede jtc Nybegynder
06. december 2003 - 22:36 #13
<script type="text/JavaScript">
function valider () {
  if ( ( form1.licensnr.value.length == 8 )
        &&( form1.licensnr.value.match(/^[0-9\+ ]+$/) )
    ) {
  } else {
      alert ("Du har indtastet et forkert licensnr.");
      form1.licensnr.focus();
      return false; 
  };

  if ( form1.password.value.length > 0 ) {
  } else {
      alert ("Du har glemt at skrive din adgangskode.");
      form1.password.focus();
      return false; 
  };

  return true;
}; 
</script>
Avatar billede jtc Nybegynder
06. december 2003 - 22:38 #14
men lige så snart man trykker på submit er
Request.ServerVariables("REQUEST_METHOD")
vel lig med
"post"
Ligemeget om den validere korrekt

Men skal scriptet så stå ovenfor asp-koderne
Avatar billede eagleeye Praktikant
06. december 2003 - 22:39 #15
det forstår jeg ikke helt er  onsubmit="return valider();"  kommet med i form tagen?
Avatar billede jtc Nybegynder
06. december 2003 - 22:41 #16
ja det er den men det er heller ikke altid den går ind og kigger i databasen
Avatar billede eagleeye Praktikant
06. december 2003 - 22:44 #17
hvad er så forskellen når den går i databasen og når den ikke gør?
Avatar billede jtc Nybegynder
06. december 2003 - 22:45 #18
Det jeg lægger mærke til er at den spørger om man vil lave windows huske passwordet selvom den lige har givet besked om at licensnr er forkert
Så jeg ved ikke helt om den går ind i databasen
Avatar billede jtc Nybegynder
06. december 2003 - 22:45 #19
lave=have
Avatar billede jtc Nybegynder
06. december 2003 - 22:45 #20
men det sker ikke altid at den spørger
Avatar billede jtc Nybegynder
06. december 2003 - 22:47 #21
men som sagt skriver den godt nok om felterne er udfyldt korrekt, jeg ville bare helst undgå den spørger om man vil have windows til at huske passwordet når nu felterne er udfyldt forkert
Avatar billede eagleeye Praktikant
06. december 2003 - 22:48 #22
Det med den husker password er en funktion i browseren og det kan man som bruger bruge eller slå fra, jeg tror ikke man kan styre den funktion fra koden.
Avatar billede jtc Nybegynder
06. december 2003 - 22:49 #23
okay men hvis der ikke er noget at gøre så siger jeg mange tak for hjælpen
Avatar billede jtc Nybegynder
06. december 2003 - 22:55 #24
man kan du ellers fortælle mig hvordan man laver denne kode mere simpel således den eventulet fortsætter ud i det uendelige
<%
Sql = "Select * From debat where id2 = '0' Order By dato desc"
Set Rs = database.Execute(Sql)
%>
<%
    '--- Her startes loopen
    Do While Not Rs.Eof
  %>
</font></font>
<tr>
  <td valign="top"> <table width="100%" border="0" cellpadding="0" cellspacing="0">
      <tr valign="top">
        <td height="20" valign="bottom" bordercolor="#6391A9">
<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="indhold.asp?Id=<%= Rs("Id")%>" target="indhold">
            <%= Rs("overskrift")%></a>
            <% response.Write(" " & Rs("forfatter") & " - " & Rs("klub")) %>
            </font></p></td>
      </tr>
      <tr valign="top">
        <td bordercolor="#6391A9"> <font size="2" face="Verdana, Arial, Helvetica, sans-serif">
          <%
Sql1 = "Select * From debat where id2 = '" & rs("id") & "1' Order By dato asc"
Set Rs1 = database.Execute(Sql1)
%>
          <%
    '--- Her startes loopen
    Do While Not Rs1.Eof
  %>
          </font> <table width="100%" border="0" cellpadding="0" cellspacing="0">
            <tr>
              <td> <table width="100%" border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td width="10"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><img src="bag.jpg" width="1" height="1"></font></td>
                    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="indhold.asp?Id=<%= Rs1("Id")%>" target="indhold"><%= Rs1("overskrift")%></a>
                      <% response.Write(" " & Rs1("forfatter") & " - " & Rs1("klub")) %>
                      </font></td>
                  </tr>
                </table></td>
            </tr>
            <tr>
              <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
<%
Sql2 = "Select * From debat where id2 = '" & rs1("id") & "2' Order By dato asc"
Set Rs2 = database.Execute(Sql2)
%>
                <%
    '--- Her startes loopen
    Do While Not Rs2.Eof
  %>
                </font> <table width="100%" border="0" cellpadding="0" cellspacing="0">
                  <tr>
                    <td> <table width="100%" border="0" cellspacing="0" cellpadding="0">
                        <tr>
                          <td width="20"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><img src="bag.jpg" width="1" height="1"></font></td>
                          <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="indhold.asp?Id=<%= Rs2("Id")%>" target="indhold"><%= Rs2("overskrift")%></a>
                            <% response.Write(" " & Rs2("forfatter") & " - " & Rs2("klub")) %>
                            </font></td>
                        </tr>
                      </table></td>
                  </tr>
                  <tr>
                    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
                      <%
Sql3 = "Select * From debat where id2 = '" & rs2("id") & "3' Order By dato asc"
Set Rs3 = database.Execute(Sql3)
%>
                      <%
    '--- Her startes loopen
    Do While Not Rs3.Eof
  %>
                      </font> <table width="100%" border="0" cellpadding="0" cellspacing="0">
                        <tr>
                          <td> <table width="100%" border="0" cellspacing="0" cellpadding="0">
                              <tr>
                                <td width="30"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><img src="bag.jpg" width="1" height="1"></font></td>
                                <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="indhold.asp?Id=<%= Rs3("Id")%>" target="indhold"><%= Rs3("overskrift")%></a>
                                  <% response.Write(" " & Rs3("forfatter") & " - " & Rs3("klub")) %>
                                  </font></td>
                              </tr>
                            </table></td>
                        </tr>
                        <tr>
                          <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
                            <%
Sql4 = "Select * From debat where id2 = '" & rs3("id") & "4' Order By dato asc"
Set Rs4 = database.Execute(Sql4)
%>
                            <%
    '--- Her startes loopen
    Do While Not Rs4.Eof
  %>
                            </font> <table width="100%" border="0" cellpadding="0" cellspacing="0">
                              <tr>
                                <td> <table width="100%" border="0" cellspacing="0" cellpadding="0">
                                    <tr>
                                      <td width="40"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><img src="bag.jpg" width="1" height="1"></font></td>
                                      <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="indhold.asp?Id=<%= Rs4("Id")%>" target="indhold"><%= Rs4("overskrift")%></a>
                                        <% response.Write(" " & Rs4("forfatter") & " - " & Rs4("klub")) %>
                                        </font></td>
                                    </tr>
                                  </table></td>
                              </tr>
                              <tr>
                                <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
                                  <%
Sql5 = "Select * From debat where id2 = '" & rs4("id") & "5' Order By dato asc"
Set Rs5 = database.Execute(Sql5)
%>
                                  <%
    '--- Her startes loopen
    Do While Not Rs5.Eof
  %>
                                  </font> <table width="100%" border="0" cellpadding="0" cellspacing="0">
                                    <tr>
                                      <td> <table width="100%" border="0" cellspacing="0" cellpadding="0">
                                          <tr>
                                            <td width="50"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><img src="bag.jpg" width="1" height="1"></font></td>
                                            <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="indhold.asp?Id=<%= Rs5("Id")%>" target="indhold"><%= Rs5("overskrift")%></a>
                                              <% response.Write(" " & Rs5("forfatter") & " - " & Rs5("klub")) %>
                                              </font></td>
                                          </tr>
                                        </table></td>
                                    </tr>
                                    <tr>
                                      <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
                                        <%
Sql6 = "Select * From debat where id2 = '" & rs5("id") & "6' Order By dato asc"
Set Rs6 = database.Execute(Sql6)
%>
                                        <%
    '--- Her startes loopen
    Do While Not Rs6.Eof
  %>
                                        </font> <table width="100%" border="0" cellpadding="0" cellspacing="0">
                                          <tr>
                                            <td> <table width="100%" border="0" cellspacing="0" cellpadding="0">
                                                <tr>
                                                  <td width="60"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><img src="bag.jpg" width="1" height="1"></font></td>
                                                  <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="indhold.asp?Id=<%= Rs6("Id")%>" target="indhold"><%= Rs6("overskrift")%></a>
                                                    <% response.Write(" " & Rs6("forfatter") & " - " & Rs6("klub")) %>
                                                    </font></td>
                                                </tr>
                                              </table></td>
                                          </tr>
                                          <tr>
                                            <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
                                              <%
Sql7 = "Select * From debat where id2 = '" & rs6("id") & "7' Order By dato asc"
Set Rs7 = database.Execute(Sql7)
%>
                                              <%
    '--- Her startes loopen
    Do While Not Rs7.Eof
  %>
                                              </font> <table width="100%" border="0" cellpadding="0" cellspacing="0">
                                                <tr>
                                                  <td width="70"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><img src="bag.jpg" width="1" height="1"></font></td>
                                                  <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="indhold.asp?Id=<%= Rs7("Id")%>" target="indhold">
                                                    <%= Rs7("overskrift")%></a>
                                                    <% response.Write(" " & Rs7("forfatter") & " - " & Rs7("klub")) %>
                                                    </font></td>
                                                </tr>
                                              </table>
                                              <font size="2" face="Verdana, Arial, Helvetica, sans-serif">
                                              <%
    '--- Der loopes igennem databasen for at finde nyhederne
    Rs7.MoveNext
    Loop
  %>
                                              </font></td>
                                          </tr>
                                        </table>
                                        <font size="2" face="Verdana, Arial, Helvetica, sans-serif">
                                        <%
    '--- Der loopes igennem databasen for at finde nyhederne
    Rs6.MoveNext
    Loop
  %>
                                        </font></td>
                                    </tr>
                                  </table>
                                  <font size="2" face="Verdana, Arial, Helvetica, sans-serif">
                                  <%
    '--- Der loopes igennem databasen for at finde nyhederne
    Rs5.MoveNext
    Loop
  %>
                                  </font></td>
                              </tr>
                            </table>
                            <font size="2" face="Verdana, Arial, Helvetica, sans-serif">
                            <%
    '--- Der loopes igennem databasen for at finde nyhederne
    Rs4.MoveNext
    Loop
  %>
                            </font></td>
                        </tr>
                      </table>
                      <font size="2" face="Verdana, Arial, Helvetica, sans-serif">
                      <%
    '--- Der loopes igennem databasen for at finde nyhederne
    Rs3.MoveNext
    Loop
  %>
                      </font></td>
                  </tr>
                </table>
                <font size="2" face="Verdana, Arial, Helvetica, sans-serif">
                <%
    '--- Der loopes igennem databasen for at finde nyhederne
    Rs2.MoveNext
    Loop
  %>
                </font></td>
            </tr>
          </table>
          <font size="2" face="Verdana, Arial, Helvetica, sans-serif">
<%
    '--- Der loopes igennem databasen for at finde nyhederne
    Rs1.MoveNext
    Loop
  %>
          </font> </td>
      </tr>
    </table></td>
</tr>
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<%
    '--- Der loopes igennem databasen for at finde nyhederne
    Rs.MoveNext
    Loop
  %>
Avatar billede eagleeye Praktikant
06. december 2003 - 23:06 #25
Du skal havde fat i en rekrusiv funktion som kan skrive indlægne ud. De bruges også i forums.
Avatar billede jtc Nybegynder
06. december 2003 - 23:10 #26
og hvor får jeg så fat i en sådan
Avatar billede eagleeye Praktikant
06. december 2003 - 23:13 #27
Jeg har et eks, det er funktion UdskrivForum som du kan kigge lidt på..:


<HTML>
<HEAD><TITLE>Forum</TITLE></HEAD>
<BODY>
<%
'Åbner connection til databasen
Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("db7.mdb")

'Kald function med ForumID, startID, Level.. Sæt startID=0 og Level=0
UdskrivForum 1,0,1

'Luk forbinelsen til Databasen
Conn.Close
Set Conn = Nothing
%>
</BODY>
</HTML>

<%
function UdskrivForum(forumID, entryID,level)
  Set rs = Server.CreateObject("ADODB.Recordset")
  strSQL = "SELECT * FROM forumBeskeder WHERE forumID = " & forumID & " AND svarPaa="&entryID&" ORDER BY DATO DESC"
  set rs = Conn.Execute (strSQL)
 
  do while not rs.EOF
    for i = 1 to Level
      Response.Write ":  :"
    next
    Response.Write "entryID=" & Rs("entryID") & " | " & rs("indhold") & "<br>"
    UdskrivForum forumID, rs("entryID"),level+1
    if entryID = 0 then
      Response.Write "<hr>"
    end if
     
    rs.MoveNext
  loop
  rs.Close
  Set rs = Nothing
end function
%>
Avatar billede jtc Nybegynder
06. december 2003 - 23:14 #28
okay men det bliver jeg nok bare ikke ret meget klogere af, men er sænker det farten hvis man gør som jeg hidtil har gjort
Avatar billede eagleeye Praktikant
06. december 2003 - 23:19 #29
Jeg tror de to koder vil være lige hurtige da man ikke kommer dybere end nødvendig i begge tilfælde. Fordelen ved en funktion er at den tager højde for X antal dybter hvorimod "hard-coded" dybter stopper et sted eksvis 7.

Det er nok lettere at holde koden vedlige med funktion da man kun skal rette et sted, hvorimod man skal rette alle stedet hvis man laver det i en lang liste.
Avatar billede jtc Nybegynder
06. december 2003 - 23:20 #30
ja okay men kunne du så tænke dig at skrive min kode ind i din?? :-)
Avatar billede eagleeye Praktikant
06. december 2003 - 23:22 #31
Ja jeg kan give et forsøg på koden..
Avatar billede jtc Nybegynder
06. december 2003 - 23:24 #32
Det ville være meget fint hvis du gad det
Takker tusinde gange
Avatar billede eagleeye Praktikant
06. december 2003 - 23:35 #33
Jeg kan ikke lige helt overskue hvordan outputet skal formatere om det er rykket ind eller???
men prøv i første omgang dette, husk at tilrettte connetion til din database. Måske det i første omgang var en ide at prøv koden i en ny fil:

<%
'Åbner connection til databasen
Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("db7.mdb")

'Kald function med startID, Level.. Sæt startID=0 og Level=0
UdskrivForum 0,1

'Luk forbinelsen til Databasen
Conn.Close
Set Conn = Nothing
%>

<%
function UdskrivForum(entryID,level)
  Set rs = Server.CreateObject("ADODB.Recordset")
  SQL = "SELECT * FROM debat WHERE id2='"&entryID&"' ORDER BY DATO DESC"
  set rs = Conn.Execute (SQL)
 
  do while not rs.EOF
%>
  <table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tr valign="top">
      <td height="20" valign="bottom" bordercolor="#6391A9">
      <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
      <a href="indhold.asp?Id=<%= Rs("Id")%>" target="indhold">
      <%= Rs("overskrift")%></a>
      <% response.Write(" " & Rs("forfatter") & " - " & Rs("klub")) %>
      </font></p>
      </td>
    </tr>
    <tr valign="top">
      <td bordercolor="#6391A9"> <font size="2" face="Verdana, Arial, Helvetica, sans-serif">
<%
    'kald funtionen igen for at udskrive kommentare til denne kommentar.
    UdskrivForum rs("id"),level+1
%>
      </td>
    </tr>
  </table>
<%
    rs.MoveNext
  loop
  rs.Close
  Set rs = Nothing
end function
%>
Avatar billede jtc Nybegynder
06. december 2003 - 23:42 #34
så udkriver den kun "hovedoverksriften"

Og ja resten er indrykker 10 pixel for hvert niveau
Avatar billede eagleeye Praktikant
06. december 2003 - 23:44 #35
ok, der er også lige en detailje jeg har overset: '" & rs3("id") & "4'
Der er et tal med efter ID'et..
Avatar billede eagleeye Praktikant
06. december 2003 - 23:47 #36
Prøv lige i funtionen at lave de 3 fsøte linjer om:
  Set rs = Server.CreateObject("ADODB.Recordset")
  SQL = "SELECT * FROM debat WHERE id2='"&entryID&"' ORDER BY DATO DESC"
  set rs = Conn.Execute (SQL)


Til dette:
  Set rs = Server.CreateObject("ADODB.Recordset")
  if int(level) = 1 then
    str = ""
  else
    str = level-1
  end if
  SQL = "SELECT * FROM debat WHERE id2='"&entryID & str &"' ORDER BY DATO DESC"
  set rs = Conn.Execute (SQL)
Avatar billede jtc Nybegynder
06. december 2003 - 23:49 #37
ja så kommer de alle sammen med men hvad så med indrykning
Avatar billede jtc Nybegynder
06. december 2003 - 23:54 #38
Det er desuden kun hovedoverksriften der skal sorteres efter desc
underoverskrifterne skal så sorteres efter asc
Avatar billede eagleeye Praktikant
07. december 2003 - 00:06 #39
der komme så lidt mere på ;)

prøv den nu:


<%
function UdskrivForum(entryID,level)
  Set rs = Server.CreateObject("ADODB.Recordset")
  if int(level) = 1 then
    str = ""
  else
    str = level-1
  end if
  SQL = "SELECT * FROM debat WHERE id2='"&entryID & str &"' ORDER BY DATO DESC"
  set rs = Conn.Execute (SQL)
 
  do while not rs.EOF
%>
  <table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tr valign="top">

<% if level = 1 then %>
  <td height="20" valign="bottom" bordercolor="#6391A9">
  <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
    <a href="indhold.asp?Id=<%= Rs("Id")%>" target="indhold">
    <%= Rs("overskrift")%></a>
    <% response.Write(" " & Rs("forfatter") & " - " & Rs("klub")) %>
    </font></p>
  </td>
<% else %>
  <td>
  <table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tr valign="top">
    <td width="<%=(level*10)%>">
      <font size="2" face="Verdana, Arial, Helvetica, sans-serif"><img src="bag.jpg" width="1" height="1"></font></td>
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
    <a href="indhold.asp?Id=<%= Rs("Id")%>" target="indhold">
    <%= Rs("overskrift")%></a>
    <% response.Write(" " & Rs("forfatter") & " - " & Rs("klub")) %>
    </font>
    </td>
    </tr>
    </table>
  </td>
<% end if %>     
  </tr>
  <tr valign="top">
    <td bordercolor="#6391A9"> <font size="2" face="Verdana, Arial, Helvetica, sans-serif">
<%
    'kald funtionen igen for at udskrive kommentare til denne kommentar.
    UdskrivForum rs("id"),level+1
%>
      </td>
    </tr>
  </table>
<%
    rs.MoveNext
  loop
  rs.Close
  Set rs = Nothing
end function
%>
Avatar billede jtc Nybegynder
07. december 2003 - 00:13 #40
ja okay så mangler der bare at kun hovedoverksriften sorteres efter desc
underoverskrifterne skal så sorteres efter asc
Avatar billede eagleeye Praktikant
07. december 2003 - 00:15 #41
når ja. Prøv at lave disse linjer om:
  if int(level) = 1 then
    str = ""
  else
    str = level-1
  end if
  SQL = "SELECT * FROM debat WHERE id2='"&entryID & str &"' ORDER BY DATO DESC"


til dette:
  if int(level) = 1 then
    str = ""
    sort = "DESC"
  else
    str = level-1
    sort = "ASC"
  end if
  SQL = "SELECT * FROM debat WHERE id2='"&entryID & str &"' ORDER BY DATO " & sort
Avatar billede jtc Nybegynder
07. december 2003 - 00:19 #42
det ser meget fint ud
lige til sidst kan man så ikke lave en lykke til dette

<%
if rs2("id2") = "0" Then
%>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><form action="besvar.asp" method="post" name="form1">
        <table border="0" align="left">
          <tr>
            <td height="31" valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>BESVAR
              NEDENST&Aring;ENDE INDL&AElig;G I DEBATTEN</strong></font></td>
          </tr>
          <tr>
            <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Kommentar:</font></td>
          </tr>
          <tr>
            <td valign="top"> <div align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
                <textarea name="kommentar" cols="40" rows="8" class="noborder" id="kommentar"></textarea>
                <input name="forfatter" type="hidden" id="forfatter" value="<% Response.Write(rs("fornavn") & " " & rs("efternavn")) %>">
                <input name="klub" type="hidden" id="klub" value="<% Response.Write(rs("klub")) %>">
                <input name="dato" type="hidden" id="dato" value="<% response.write(mitdatoformat)%>">
                <input name="id2" type="hidden" id="id2" value="<% response.Write(rs2("id") & "1")%>">
                <input name="overskrift" type="hidden" id="overskrift" value="<% response.write("Re: " & rs2("overskrift")) %>">
                </font></div></td>
          </tr>
          <tr>
            <td valign="top"> <div align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
                <input name="Button" type="button" onClick="valider()" value="Opret indl&aelig;g">
                <input name="Submit2" type="reset" id="Submit2" value="Nulstil indl&aelig;g">
                </font></div></td>
          </tr>
        </table>
      <p>&nbsp;</p></form>
    </td>
  </tr>
  <tr>
    <td><table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td> <strong><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif"><%= rs2("Overskrift")%></font></strong></td>
        </tr>
        <tr>
          <td height="20"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><em><font color="#000000">Af:
            <% response.Write(" " & rs2("forfatter") & " - " & rs2("klub") & " - " & mitdatoformat2) %>
            </font></em> </font> <div align="right"></div></td>
        </tr>
        <tr>
          <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">&nbsp;</font></td>
        </tr>
        <tr>
          <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><%= Formatstr(rs2("kommentar"))%> </font></td>
        </tr>
      </table></td>
  </tr>
</table>
<%
End if
%>
<%
if right(rs2("id2"),1) = "1" Then
%>
     
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><form action="besvar.asp" method="post" name="form1">
        <table border="0">
          <tr>
            <td height="31" valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>BESVAR
              NEDENST&Aring;ENDE INDL&AElig;G I DEBATTEN</strong></font></td>
          </tr>
          <tr>
            <td valign="top"><div align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Kommentar:</font></div></td>
          </tr>
          <tr>
            <td valign="top"> <div align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
                <textarea name="kommentar" cols="40" rows="8" class="noborder" id="kommentar"></textarea>
                <input name="forfatter" type="hidden" id="forfatter" value="<% Response.Write(rs("fornavn") & " " & rs("efternavn")) %>">
                <input name="klub" type="hidden" id="klub" value="<% Response.Write(rs("klub")) %>">
                <input name="dato" type="hidden" id="dato" value="<% response.write(mitdatoformat)%>">
                <input name="id2" type="hidden" id="id2" value="<% response.Write(rs2("id") & "2")%>">
                <input name="overskrift" type="hidden" id="overskrift" value="<% response.write("Re: " & right(rs2("overskrift"),len(rs2("overskrift"))-4)) %>">
                </font></div></td>
          </tr>
          <tr>
            <td valign="top"> <div align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
                <input name="Button" type="button" onClick="valider()" value="Opret indl&aelig;g">
                <input name="Submit2" type="reset" id="Submit2" value="Nulstil indl&aelig;g">
                </font></div></td>
          </tr>
        </table>
      </form>
    </td>
  </tr>
  <tr>
    <td><table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td> <strong><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif"><%= rs2("Overskrift")%></font></strong></td>
        </tr>
        <tr>
          <td height="20"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><em><font color="#000000">Af:
            <% response.Write(" " & rs2("forfatter") & " - " & rs2("klub") & " - " & mitdatoformat2) %>
            </font></em> </font> <div align="right"></div></td>
        </tr>
        <tr>
          <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">&nbsp;</font></td>
        </tr>
        <tr>
          <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><%= Formatstr(rs2("kommentar"))%> </font></td>
        </tr>
      </table></td>
  </tr>
</table>
<%
End if
%>
Avatar billede jtc Nybegynder
07. december 2003 - 00:27 #43
jeg går i seng nu men jeg håber du vil hjælpe med det sidste spørgsmål alligevel. Jeg kigger lige ind i morgen og ser om du har svaret
Avatar billede eagleeye Praktikant
07. december 2003 - 00:34 #44
Det kan man vist ikke lige.. Jeg formoder det er inde i en
do while not rs.EOF

Det man kan gøre er at lave nogle variable som indeholder det som er forskelligt fra gang til gang, som det ser ud er HTML koden ens i begge tilfælde og der er nogle tal som ændre sig så man kan:

if rs2("id2") = "0" Then
  str = 1
else
  str = Int(right(rs2("id2"),1))+1
end if


Så kan du havde den samme koden og når du har en linje som denne:
<input name="id2" type="hidden" id="id2" value="<% response.Write(rs2("id") & "2")%>">

Kan den rettes til:
<input name="id2" type="hidden" id="id2" value="<% response.Write(rs2("id") & str)%>">
Avatar billede eagleeye Praktikant
28. december 2003 - 02:10 #45
Jeg har svaret på dit oprindelige spørgsmål + omskrevet en masse kode og fortalt hvordan du selv kan løse det 3 store ekstra sprøgsmål. Så det r vist på tide at lukke her.
Avatar billede jtc Nybegynder
29. december 2003 - 12:43 #46
Det må du undkylde, jeg har ikke fået kigget på dit svar, men mange tak for den store hjælp, som du selv omtaler :-)
Kunne ikke have gjort det uden dig

Her er pointene
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