Avatar billede jeppe81 Nybegynder
14. januar 2005 - 11:21 Der er 29 kommentarer og
1 løsning

sideskift pr 5 post fra database

Hej

jeg er ved at lave et nyheds script og der skal der skiftes side for hver 5 nyhed, jeg har lavet det til en gæstebog hvor det virker men  jeg kan ikke lige se mig ud af hvad der er galt her.:

<%

intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
    intPage = 1
End If

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("log/6ty9.mdb")

Set rs = Server.CreateObject("ADODB.Recordset")

SQLstmt = "SELECT * FROM users WHERE ID = "&RS("SkaberID")&""

rs.Open SQLstmt, conn, 1
%>
<%

If Not (rs.BOF Or rs.EOF) Then
    rs.PageSize = 5
    rs.AbsolutePage = intPage
    intRecCount = rs.PageSize
    intPageCount = rs.PageCount

  Do While Not rs.EOF And intRecCount > 0
%>

 
  <table width="500" cellspacing="0" cellpadding="0">
    <tr valign="bottom" class="top" height="25">
      <td width="394"><font face="Arial" style="font-size:13px " color="#000000"><b>&#160; <%=RS("Overskrift")%></b></font></td>
      <td width="101" align="right"><font face="Arial" style="font-size:12px " color="#0033CC">Time:&#160 <%=RS("Tid")%></font></td>
    </tr>
    <tr bgcolor="#CCCCCC">
      <td align="left" height="60px" colspan="2"><font face="Arial" style="font-size:12px " color="#000000">&#160 <%=BrydLinie(RS("Nyhed"), 60)%></font></td>
      </tr>
    <tr class="bund" height="23" valign="top">
      <td align="left" bgcolor="#D9EFFF"><%If Session("login") = "yes" Then%><a href="rediger.asp?do=redigernyhed&ID=<%=RS("ID")%>">Edit &#160 </a><a href="news.asp?do=slet&ID=<%=RS("ID")%>">Slet</a><%End IF%></td>
      <td align="right" bgcolor="#D9EFFF"><font face="Arial" style="font-size:12px " color="#0033CC">Writer:&#160 <%=RSbruger("Username")%></font></td>
    </tr>
  </table>
<br><br>
<%
    'RS.movenext()
    'loop
    'End IF
%>

<%
    intRecCount = intRecCount - 1
    rs.MoveNext
  LOOP
End if
RS.Close


'Her udskrives << 1 2 3 4 >>  altså link til siderne man kan gå til.
Response.Write "<p>Gå til side "
For intNum = 1 To intPageCount
    Response.Write "<a href=?page=" & intNum & ">" & intNum & "</a> "
Next

Response.Write "<p>"
If Clng(intPage) > 1 Then
    Response.Write "<a href=?page=" & intPage - 1 & ">&lt;&lt;</a>"
Else
    Response.Write "&lt;&lt;"
End If

Response.Write "&nbsp;"

If Clng(intPage) < Clng(intPageCount) Then
    Response.Write "<a href=?page=" & intPage + 1 & ">&gt;&gt;</a> "
Else
    Response.Write "&gt;&gt;"
End If

%>

håber der er nogen der kan se hvad jeg gør forkert.

på forhånd tak
jeppe
Avatar billede jeppe81 Nybegynder
14. januar 2005 - 11:23 #1
den siger der er fejl på linje 39 som er:

SQLstmt = "SELECT * FROM users WHERE ID = "&RS("SkaberID")&""
Avatar billede tjaz Nybegynder
14. januar 2005 - 11:23 #2
får du nogen fejl?
Avatar billede jeppe81 Nybegynder
14. januar 2005 - 11:25 #3
ja dette er fejl meddelsen :

Tekniske oplysninger (for supportteknikere)

Fejltype:
ADODB.Recordset (0x800A0CC1)
Elementet kan ikke findes i den samling, der svarer til det anmodede navn eller ordenstal.
/6ty9/News.asp, line 39


Browsertype:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)

Side:
GET /6ty9/News.asp
Avatar billede steffansteffan Nybegynder
14. januar 2005 - 11:25 #4
JEg prøver den præcis samme kode som din og den virker:

                  <%
intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
  intPage = 1
End If

id = Request.QueryString("id")
Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT overskrift, id, bruger, brugerID, category, dato, hits FROM emner where category='" & id & "' order by ID desc;"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};UID=; PWD=1321;DBQ=" & Server.Mappath("db/forum2.mdb")
rs.Open strSQL, strDSN, 1

If Not (rs.BOF Or rs.EOF) Then
  rs.PageSize = 10
  rs.AbsolutePage = intPage
  intRecCount = rs.PageSize
  intPageCount = rs.PageCount
  Do While Not rs.EOF And intRecCount > 0
 
  Set connect = Server.CreateObject("ADODB.Connection")
  Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)};UID=; PWD=1321;DBQ=" & Server.Mappath("db/forum2.mdb")
  sql = "select * from kommentare order by id desc;"
  Set rs16 = Server.CreateObject("ADODB.Recordset")
  set rs16 = Connect.execute(SQL)
 
  sql = "select * FROM brugere WHERE ID = " & rs("brugerID") & " order by id desc;"
  Set rs4 = Server.CreateObject("ADODB.Recordset")
  set rs4 = Connect.execute(SQL)

  response.write("<table border=""0"" cellspacing=""1"" cellpadding=""0"" width=""100%"">")
  response.write("<tr>")
  response.write("<td width=""3%"" height=""50"">")
  response.write("<div align=""center""><img src=""img/ikon_small.jpg"" width=""20"" height=""19"" alt=""""></div>")
  response.write("</td>")
  response.write("<td width=""55%"">")
 
  response.write("<table width=""98%"" align=""center"">")
  response.write("<tr>")
  response.write("<td>")
  response.write("<a href=""traad.asp?id=")
  response.Write(rs("id"))
  response.write "&emne=" & Request.Querystring("id") & ""
  response.write(""">")
  response.Write("<b>" & rs("overskrift") & "</a></b>")
  response.write("</td>")
  response.write("</tr>")
  response.write("</table>")
  response.write("</td>")
  response.write("<td width=""7%"">")
  response.write("<a href=""profilgoto.asp?id=")
  response.Write(rs4("id"))
  response.write(""">")
  response.write("<div align=""center"">" & rs4("username") & "</a></div>")
  response.write("</td>")
  response.write("<td width=""8%"">")
  response.write("<div align=""center"">" & rs("hits") & "</div>")
  response.write("</td>")
  response.write("<td width=""9%"">")
 
  Set connect = Server.CreateObject("ADODB.Connection")
  Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)};UID=; PWD=1321;DBQ=" & Server.Mappath("db/forum2.mdb")
  sql = "select * from emner"
  Set rs12 = Server.CreateObject("ADODB.Recordset")
  set rs12 = Connect.execute(SQL)

  sql = "SELECT COUNT(id) AS Count FROM kommentare WHERE kommentarID = " & rs("id") & ""
  Set rs1 = Server.CreateObject("ADODB.Recordset")
  set rs1 = Connect.execute(SQL)

  response.write("<div align=""center"">"& rs1("count") & "</div>")
  response.write("</td>")
  response.write("<td width=""18%"">")
 
  response.write("<table width=""98%"" align=""center"">")
  response.write("<tr>")
  response.write("<td>")
 
sql = "select * from kommentare WHERE KommentarID = " & rs("id") & " ORDER BY id desc"
  Set rs48 = Server.CreateObject("ADODB.Recordset")
  set rs48 = Connect.execute(SQL)
if rs48.EOF Then
  Response.Write "Ingen kommentarer"
Else 
  sql = "select * FROM brugere WHERE ID = " & rs48("BrugerID") & " order by id desc;"
  Set rs49 = Server.CreateObject("ADODB.Recordset")
  set rs49 = Connect.execute(SQL)

  count = 0
  While not rs48.eof and count > -1
  count = count -1
 
  response.write("" & rs48("dato") & "<br> Af: ")
  response.write("<a href=""profilgoto.asp?id=")
  response.Write(rs49("id"))
  response.write(""">")
  response.write("" & rs49("Username") & "</a><br>")
 
  rs48.MoveNext
  Wend
End If

  response.write("</td>")
  response.write("</tr>")
  response.write("</table>")
 
  response.write("</td>")
  response.write("</tr>")
  response.write("</table>")
  intRecCount = intRecCount - 1
  rs.MoveNext
  Loop
End If
rs.Close
Set rs = Nothing

Response.Write "<p>Gå til side "
For intNum = 1 To intPageCount
  Response.Write "<a href=emner.asp?id=" & id & "&page=" & intNum & ">" & intNum & "</a> "
Next

Response.Write "<p>"
If Clng(intPage) > 1 Then
Response.Write "<a href=emner.asp?id=" & id & "&page=" & intPage - 1 & ">&lt;&lt;</a>"
Else
  Response.Write "&lt;&lt;"
End If

Response.Write "&nbsp;"

If Clng(intPage) < Clng(intPageCount) Then
  Response.Write "<a href=emner.asp?id=" & id & "&page=" & intPage + 1 & ">&gt;&gt;</a> "
Else
  Response.Write "&gt;&gt;"
End If
%>

Måske du vil rode lidt med den.?? Den ser lidt vild ud med 50% af den er hml. i response.write tag.
Avatar billede keysersoze Ekspert
14. januar 2005 - 11:26 #5
Uden at kende fejlmeddelelsen vil jeg næsten tro at det er for RS("SkaberID") ikke eksisterer.

den kræver at databasekald tidligere på siden og det ved jeg ikke om du har?
Avatar billede jeppe81 Nybegynder
14. januar 2005 - 11:30 #6
er dette ikke mit database kald??

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("log/6ty9.mdb")

Set rs = Server.CreateObject("ADODB.Recordset")
Avatar billede jeppe81 Nybegynder
14. januar 2005 - 11:31 #7
Dette:

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("log/6ty9.mdb")

Set rs = Server.CreateObject("ADODB.Recordset")

SQLstmt = "SELECT * FROM users WHERE ID = "&RS("SkaberID")&""

rs.Open SQLstmt, conn, 1
%>
Avatar billede tjaz Nybegynder
14. januar 2005 - 11:33 #8
findes SkaberID i din database?, hvis ja ... er den tom ?
Avatar billede keysersoze Ekspert
14. januar 2005 - 11:35 #9
det der går galt er, at du forsøger at finde alle fra USERS hvor ID er lig en variabel. Variablen du forsøger at bruge er resultatet fra et recordset som ikke eksisterer og derfor fejler den

skriver du i stedet;

SQLstmt = "SELECT * FROM users WHERE ID = 1"

så burde den linie ikke fejle
Avatar billede jeppe81 Nybegynder
14. januar 2005 - 11:36 #10
ja SkaberID findes i min database og den er ikke tom, det har også virket før inden jeg satte linjeskift koden ind.
Avatar billede keysersoze Ekspert
14. januar 2005 - 11:37 #11
men hvorhenne i dit script kalder du det recordset der kan give dig det SkaberID?
Avatar billede tjaz Nybegynder
14. januar 2005 - 11:38 #12
Prøv at ændre ændre:
SQLstmt = "SELECT * FROM users WHERE ID = "&RS("SkaberID")&""

til:
SQLstmt = "SELECT * FROM users"
Avatar billede tjaz Nybegynder
14. januar 2005 - 11:39 #13
argh, missing F5 :/

sry keysersoze :)
Avatar billede keysersoze Ekspert
14. januar 2005 - 11:50 #14
det du skal tænke på er, at hvis du skriver

SELECT * FROM users

får du samtlige records fra users ud - og det er vel dem du vil lave paging på.

skriver du

SQLstmt = "SELECT * FROM users WHERE ID = etllerandet

så får du kun ét resultat ud såfremt id er den unikke nøgle i tabellen og der er ingen grund til kun at page én.
Avatar billede jeppe81 Nybegynder
14. januar 2005 - 12:00 #15
ja det er self. rigtigt, nu kommer den da også videre i scriptet men får igen problemer i denne linje:

      <td width="394"><font face="Arial" style="font-size:13px " color="#000000"><b>&#160; <%=RS("Overskrift")%></b></font></td>

og det er så self <%=RS("Overskrift")%> den ikke kan hente ud men hvorfor?
Avatar billede keysersoze Ekspert
14. januar 2005 - 12:08 #16
igen er det svært at vurdere når du ikke fortæller hvilken fejl - men er du sikker på at user-tabellen har en kolonne der heder "overskrift"?
Avatar billede jeppe81 Nybegynder
14. januar 2005 - 12:31 #17
ja det har den, fejlen er som følger:

Fejltype:
ADODB.Recordset (0x800A0CC1)
Elementet kan ikke findes i den samling, der svarer til det anmodede navn eller ordenstal.
/6ty9/News.asp, line 57

det er det du mener med hvilken fejl det er ik'?
Avatar billede keysersoze Ekspert
14. januar 2005 - 12:33 #18
Jo - og fejlen er som jeg før skrev at kolonnen overskrift højst sandsynligt ikke findes i tabellen users. Kan det passe?
Avatar billede jeppe81 Nybegynder
14. januar 2005 - 12:35 #19
nej det passer ikke den eksistere godt nok, og jeg kan også godt få trækket det hele ud af databasen og skrevet ud i tabellen, men kun når jeg ikke bruger det sideskift script :/
Avatar billede keysersoze Ekspert
14. januar 2005 - 12:41 #20
dvs alt virker nu bortset fra at du ikke kan skifte side?
Avatar billede jeppe81 Nybegynder
14. januar 2005 - 12:48 #21
nej altså, jeg lavede først et nyheds scritp der kunne udskrive, alle mine nyheder på en side, da jeg så var færdig med det kunne jeg godt se det ikke holdt i længden. Og derfor skulle jeg så lave om på det, så det ville blive delt op på flere sider, og det er så her jeg står nu, hvor jeg ikke kan få det til at virke.

håber det gav mening, er ikke så go til at formulere mig nogen gange :/
Avatar billede keysersoze Ekspert
14. januar 2005 - 12:49 #22
godt så - så har jeg et spørgsmål;

hvilke kolonner indeholder din tabel "users"?
Avatar billede jeppe81 Nybegynder
14. januar 2005 - 12:52 #23
den indeholder følgende:

ID | Overskrift | Tid | Nyhed | SkaberID

Skal jeg poste hele koden fra min news.asp?
Avatar billede jeppe81 Nybegynder
14. januar 2005 - 12:55 #24
du får den lige her:


<!--#INCLUDE FILE="Top.asp"-->
<!--#INCLUDE FILE="java.asp"-->
<!--#INCLUDE FILE="functions.asp"-->
<%
If Request("do")="slet" then
    strSQL = "DELETE * FROM news WHERE ID = " & Request("ID") & ""
    conn.execute(strSQL)
End If
%>

<table height="500px" width="100%">
    <tr>
    <td width="150px" valign="top"><img src="pic/sidenews.gif"></td>
    <td width="87%" align="left">
    <font face="Arial" style="font-size:22px" color="#000000"><img src="pic/rammenews.gif"><br></font>
   

<%
    'strSQL = "SELECT * FROM news ORDER BY ID DESC"
    'set RS = conn.execute(strSQL)
        'If Not RS.EOF Then
        'Do until RS.EOF
    'strSQL = "SELECT * FROM users WHERE ID = "&RS("SkaberID")&""
    'set RSbruger = conn.execute(strSQL)
%>

<%

intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
    intPage = 1
End If

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("log/6ty9.mdb")

Set rs = Server.CreateObject("ADODB.Recordset")

SQLstmt = "SELECT * FROM users"

rs.Open SQLstmt, conn, 1
%>
<%

If Not (rs.BOF Or rs.EOF) Then
    rs.PageSize = 5
    rs.AbsolutePage = intPage
    intRecCount = rs.PageSize
    intPageCount = rs.PageCount

  Do While Not rs.EOF And intRecCount > 0
%>

 
  <table width="500" cellspacing="0" cellpadding="0">
    <tr valign="bottom" class="top" height="25">
      <td width="394"><font face="Arial" style="font-size:13px " color="#000000"><b>&#160; <%=RS("Overskrift")%></b></font></td>
      <td width="101" align="right"><font face="Arial" style="font-size:12px " color="#0033CC">Time:&#160 <%=RS("Tid")%></font></td>
    </tr>
    <tr bgcolor="#CCCCCC">
      <td align="left" height="60px" colspan="2"><font face="Arial" style="font-size:12px " color="#000000">&#160 <%=BrydLinie(RS("Nyhed"), 60)%></font></td>
      </tr>
    <tr class="bund" height="23" valign="top">
      <td align="left" bgcolor="#D9EFFF"><%If Session("login") = "yes" Then%><a href="rediger.asp?do=redigernyhed&ID=<%=RS("ID")%>">Edit &#160 </a><a href="news.asp?do=slet&ID=<%=RS("ID")%>">Slet</a><%End IF%></td>
      <td align="right" bgcolor="#D9EFFF"><font face="Arial" style="font-size:12px " color="#0033CC">Writer:&#160 <%=RSbruger("Username")%></font></td>
    </tr>
  </table>
<br><br>
<%
    'RS.movenext()
    'loop
    'End IF
%>

<%
    intRecCount = intRecCount - 1
    rs.MoveNext
  LOOP
End if
RS.Close


'Her udskrives << 1 2 3 4 >>  altså link til siderne man kan gå til.
Response.Write "<p>Gå til side "
For intNum = 1 To intPageCount
    Response.Write "<a href=?page=" & intNum & ">" & intNum & "</a> "
Next

Response.Write "<p>"
If Clng(intPage) > 1 Then
    Response.Write "<a href=?page=" & intPage - 1 & ">&lt;&lt;</a>"
Else
    Response.Write "&lt;&lt;"
End If

Response.Write "&nbsp;"

If Clng(intPage) < Clng(intPageCount) Then
    Response.Write "<a href=?page=" & intPage + 1 & ">&gt;&gt;</a> "
Else
    Response.Write "&gt;&gt;"
End If

%>

<%
'Her er sql'en til at oprette en nyhed
    If request("do") = "send" Then
        strSQL = "INSERT INTO news (Overskrift, Tid, Nyhed, SkaberID) VALUES ('" & Request.Form("Overskrift") & "','"& formatdatetime(Now, vbshorttime) &"','"& Request.Form("Nyhed") &"'," & Session("Bruger") & ")"
        conn.execute(strSQL)
        response.Redirect("news.asp")
    End If
%>

<%
'Her udskrives formen til at oprette en nyhed
    If Session("login") = "yes" Then
%>

<form action="news.asp?do=send" name="newsinput" OnSubmit="return checkform();" method="POST">
<table align="left" bordercolor="#FFFFFF" width="500" border="1" cellspacing="0" cellpadding="0">
  <tr>
    <td align="center" height="30px" align="center"><font color="#0033CC">Overskrift:&#160 </font><input onblur="if(!!this.value.match(/['\$%]/)){alert('You are not allowed to use any of these letters /[\'$%]/');this.select();this.focus();}" type="text" name="Overskrift"></td>
  </tr>
  <tr>
    <td align="center"><textarea onblur="if(!!this.value.match(/['\<>$%]/)){alert('You are not allowed to use any of these letters /[\'$%]/');this.select();this.focus();}" name="Nyhed" cols="29" onClick="java script: this.form.Nyhed.blank" class="border">Skriv nyhed her...</textarea></td>
  </tr>
  <tr>
    <td height="30px" align="center"><input type="submit" name="submit" id="submit" value="submit"></td>
  </tr>
</table>
</form>

<%
    End If
%>

<table height="100px" width="400px" cellpadding="0" cellspacing="0" border="1">
</table>
    </tr>
</table>
<!--#INCLUDE FILE="Bund.asp"-->
Avatar billede keysersoze Ekspert
14. januar 2005 - 12:55 #25
hvilke tabeller har du i din database?
Avatar billede jeppe81 Nybegynder
14. januar 2005 - 12:58 #26
har gbook news og users
Avatar billede keysersoze Ekspert
14. januar 2005 - 13:00 #27
er du sikker på at du ikke blander dine tabeller sammen? siden hedder news.asp - i starten arbejder du med tabellen news asp - de kolonner du gav mig navnene på lyder som om de kunne ligge i en news tabel... og alligevel forsøger du at lave paging på en users tabel?

Er du sikker på at du ikke skal skrive

SQLstmt = "SELECT * FROM news"

?
Avatar billede jeppe81 Nybegynder
14. januar 2005 - 13:10 #28
ahhh tusinde tak det var bare det.

så har jeg lige et spørgsmål til.

når jeg nu også skal hente data ud fra user tabellen med
strSQL = "SELECT * FROM users WHERE ID = "&RS("SkaberID")&""

hvordan skriver jeg det så hvis jeg gerne vil hente det ud gennem et RS der skal hedde RSbruger f.eks?

bare skriv det som et svar så får du point.

og endnu engang tak :)
Avatar billede keysersoze Ekspert
14. januar 2005 - 13:16 #29
strSQL = "SELECT * FROM users WHERE ID = "&RS("SkaberID")&""
set rsbruger = conn.execute(strSQL)

men jeg ville nok foretrække at det blev lavet som et join hvis det er fordi du skal udskrive brugernavnet sammen med en nyhed.

Du kan få meget hjælp gennem access til at bygge sql'er - hvis du går ind og laver en forespørgsel hvor du hægter de 2 tabeller sammen kan den give dig en brugbar sql uden at man selv skal tænke (næsten)
Avatar billede jeppe81 Nybegynder
14. januar 2005 - 13:21 #30
okay det vil jeg lige kigge på så :)
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