14. januar 2005 - 11:21Der 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
<% 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 & "><<</a>" Else Response.Write "<<" End If
Response.Write " "
If Clng(intPage) < Clng(intPageCount) Then Response.Write "<a href=?page=" & intPage + 1 & ">>></a> " Else Response.Write ">>" End If
%>
håber der er nogen der kan se hvad jeg gør forkert.
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)
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)
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)
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("</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 & "><<</a>" Else Response.Write "<<" End If
Response.Write " "
If Clng(intPage) < Clng(intPageCount) Then Response.Write "<a href=emner.asp?id=" & id & "&page=" & intPage + 1 & ">>></a> " Else Response.Write ">>" 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.
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
Fejltype: ADODB.Recordset (0x800A0CC1) Elementet kan ikke findes i den samling, der svarer til det anmodede navn eller ordenstal. /6ty9/News.asp, line 57
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 :/
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 :/
<!--#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 %>
<% '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
<% 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 & "><<</a>" Else Response.Write "<<" End If
Response.Write " "
If Clng(intPage) < Clng(intPageCount) Then Response.Write "<a href=?page=" & intPage + 1 & ">>></a> " Else Response.Write ">>" 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:  </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>
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?
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)
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.