webForumDet fria alternativet

Paging problem

9 svar · 240 visningar · startad av His Divine Shadow

His Divine ShadowMedlem sedan sep. 20002 748 inlägg
#1

Lyckades med tråd problemet ändå, men nu har jag problem med paging, jag får det inte att funka...
Nån som vet hur man kan koppla en paging kod till detta script?
Det som torde vara det viktiga är väl rsThreads:
Set rsThreads = DB.Execute ("SELECT * FROM Posts WHERE ForumID = '" & ForumID & "' AND status = '1' ORDER BY Date DESC")

Som borde användas för pagingen, men jag vet inte hur jag ska bygga in paging här...

<!-- #INCLUDE FILE="config.inc" -->
<HTML>
	<HEAD>
		<TITLE>Discussion Forum : by Manas Tungare</TITLE>
		<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
		<LINK REL="stylesheet" HREF="forum.css">
	</HEAD>
	<Message BGCOLOR="#FFFFFF" LEFTMARGIN="0" TOPMARGIN="0" MARGINWIDTH="0" MARGINHEIGHT="0">
		<%
Public Sub treeMessage_Build(MessageID, Level)
Dim rsPosts
Set rsPosts = DB.Execute ("SELECT * FROM Posts WHERE ForumID = '"& Request.QueryString("ForumID") &"' ORDER BY Date ASC")

	rsPosts.Filter = "MessageID = " & MessageID
	%>
		<img src="images/threader.jpg" width="<%= Level * 20 %>" height="2"> <font face="arial,tahoma" size="2">
			<img src="images/arrows/<%=rsPosts("Status")%>.jpg">&nbsp; <a href="Message.asp?ID=<%=rsPosts("MessageID")%>" target="Message">
				<%=rsPosts("Subject")%>
			</a>&nbsp;-&nbsp;<%=rsPosts("Author")%>&nbsp;<font face="arial,tahoma" size="1" color="<% if datediff("h",Date,now()) < 24 then %>Blue<%ELSE%>Red<%END IF%>">(<%=rsPosts("Date")%> )</font>
			<br>
			<%
	rsPosts.Filter = "Parent = " & MessageID

	If Not (rsPosts.EOF And rsPosts.BOF) Then
		rsPosts.MoveFirst
		While Not rsPosts.EOF
			treeMessage_Build rsPosts("MessageID"), Level+1
			rsPosts.MoveNext
		Wend
	End If
End Sub
%>
			<%
If Request ("ForumID") = "" Then
	' We don't have a valid ForumID, so go back to the main page.
response.Redirect("thread.asp?ForumID=1")
End If

Dim ForumID
ForumID = Request("ForumID")

Dim DB, rsForum, rsPosts, rsThreads
Set DB = Connect (ForumMDB)
Set rsForum = DB.Execute ("SELECT * FROM Forums WHERE ForumID = " & ForumID)
Set rsPosts = DB.Execute ("SELECT * FROM Posts WHERE ForumID = '" & ForumID & "' ORDER BY Date ASC")
Set rsThreads = DB.Execute ("SELECT * FROM Posts WHERE ForumID = '" & ForumID & "' AND status = '1' ORDER BY Date DESC")

If rsThreads.BOF And rsThreads.EOF Then
  ShowError ("<P ALIGN=""center"">There are no Posts in this forum.<br><A HREF=""post.asp?ForumID="& ForumID &"&Status=1"" target=""Message""><img border=""0"" SRC=""images/newpost.jpg""></A></P>")
%>
			<%
Else
	rsThreads.MoveFirst
%>
			<table width="100%">
				<tr>
					<td>
						<font face="arial,tahoma" size="2"><b>
								<%=rsForum("Forum")%>
							</b></font>
						<br>
						<font face="arial,tahoma" size="2">
							<%=rsForum("Description")%>
						</font>
					</td>
					<td align="right" width="12%">
						<A HREF="post.asp?ForumID=<%=ForumID%>&Status=1" target="Message"><img border="0" SRC="images/newpost.jpg"></A>
					</td>
				</tr>
			</table>
			<br>
			<%
				While Not rsThreads.EOF
					treeMessage_Build rsThreads("MessageID"), 0
					rsThreads.MoveNext
				Wend
		      %>
			<% End If %>
</HTML>

------------------
Sprit löser inga problem. Men det gör inte mjölk heller.

T-bird 1200; GeForce 256 32MB; WinNT4/XP; 512MB RAM; Dialup

[Redigerat av His Divine Shadow den 06 feb 2002]

His Divine ShadowMedlem sedan sep. 20002 748 inlägg
#2

Här så är koden som jag tänkte lägga in, men som tyvärr inte funkar.
Tack i förväg om nån vet hur detta ska pusslas ihop, har försökt i flera dagar utan framgång.

<!--#include file="../connect.asp"-->
<%

Dim objConn
Dim strConnString
Dim strSQL
Dim objRS
Dim strName
Dim strComment
Dim dteDate
Dim intPageSize
Dim intPage
Dim intTotalPages
Dim intRecordCount

'## -- connection string, vilken provider och db ska användas --

'## -- hur många inlägg ska visas per sida --
intPageSize = 15

'## -- vilken sida ska visas --
intPage = Request.QueryString("page")

%>
<html>
	<head>
	</head>
	<body>
		<center>
			<font face="Verdana" size="2">Results for: <b>
					<%=searchTerm%>
				</b></font>
			<br>
			<%
If intPage = "" Then intPage = 1

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open connection

strSQL = "SELECT * from quotes where "& what &" LIKE '%"& replace(searchTerm,"'","''") &"%' ORDER BY Subcategory ASC" 

'## -- skapa ett recordset --
Set objRS = Server.CreateObject("ADODB.Recordset")
'## -- hur många poster ska visas per sida --
objRS.PageSize = intPageSize

'## -- öppna och hämta alla records --
objRS.Open strSQL, objConn, 3, 1

If objRS.EOF Then
Response.Write "<br>No results matched your query.<br><br>"
Else

'## -- vilken sida i recordset uppdelningen ska visas --
objRS.AbsolutePage = intPage

'## -- hur många sidor finns i recordset uppdelningen --
intTotalPages = objRS.PageCount

'## -- lista alla inlägg som finns i db --
Do Until objRS.EOF or intRecordCount >= intPageSize

intRecordCount = intRecordCount + 1

strName = objRS(1)
strComment = objRS(2)
dteDate = objRS(3)

%>
HÄR BORDE KODEN SOM VISAR SIDAN KOMMA
			<%
objRS.MoveNext
Loop
End If

'## -- clean up --
objRS.Close
Set objRS = Nothing

objConn.Close
Set objConn = Nothing

'## -- visa sidnavigeringen --
'## -- intPage = vilken sida som ska visas --
'## -- intTotalPages = hur många sidor som recordsetet är uppdelat i --
Call PageNavigation(intPage, intTotalPages)
%>
	</body>
</html>
<%
'## -- skapa sid-navigering --
Sub PageNavigation(ByVal WichPage, ByVal HowManyPages)
Dim strScriptName
Dim I

'## -- vilken sida ska navigeringen länka till --
strScriptName = Request.ServerVariables("SCRIPT_NAME")

'## -- visa föregående, länkat eller olänkat beroende på vilken sida som visas --
If CInt(WichPage) > 1 Then %>
<A href="<%=strScriptName%>?page=<%=WichPage - 1%>&forumID=<%=forumID%>">
	<font face="Verdana" size="1"><< Previous</A>
<%Else
Response.Write "<font face=""Verdana"" size=""1""><< Previous "
End If

'## -- lista ut alla sidnummer --
For I = 1 To HowManyPages
If CInt(WichPage) <> I Then %>
<A href="<%=strScriptName%>?page=<%=I%>&forumID=<%=forumID%>"><font face="Verdana" size="1">
		<%=I%></A>
<%
Else
%>
[ <B>
	<%=I%>
</B>]</font>
<%
End If
Next

'## -- visa Nästa, länkad eller olänkad beroende på vilken sida som visas --
If CInt(WichPage) < CInt(HowManyPages) Then %>
<A href="<%=strScriptName%>?page=<%=WichPage + 1%>&forumID=<%=forumID%>">
	<font face="Verdana" size="1">Next >></A>
<%
Else%>
<font face="Verdana" size="1">Next >>
	<%End If

End Sub

set objRS= nothing
set objConn = nothing
%>
</font>

[Redigerat av His Divine Shadow den 06 feb 2002]

VideMedlem sedan dec. 19996 094 inlägg
#3

Vad är det som inte fungerar?

------------------
Kunskap är makt, dessvärre är inte makt kunskap

His Divine ShadowMedlem sedan sep. 20002 748 inlägg
#4

Jag önskar jag kunde ge en bättre bild, jag har bara dessa två skilda koder nu, innan hadde jag lyckats få ihop dom så att dom någorlunda funkade, men då tappade jag det.
Det skulle ha varit mycket enklare om jag hadde denna kod kvar, så kanske ni kunnat se var jag gick fel, annars nu, så undrar jag hur jag kombinerar dessa två koder.

PatrikBMedlem sedan mars 20002 713 inlägg
#5

Vad är det som blir fel?

cya,
PatrikB

------------------
-=* IF there is a wrong way to do something, then someone will do it *=-

His Divine ShadowMedlem sedan sep. 20002 748 inlägg
#6

OK, nu har jag koden kombinerad, men det funkar fortfarande inte.
Ni kan se det här, jag har temporärt läggt upp forumet här: http://www.uniimport.fi/forum/

Här är koden som inte funkar:

<!--#include file="../connect.asp"-->
<%
Response.Buffer = True
Response.Expires = -1000

Const ForumMDB = "/db/forum.mdb"

Public Sub ShowError(Err)
  If CStr(Err) <> "" Then
      Response.Write "<P CLASS=""Error"">" + CStr(Err) + "</P>"
  End If
End Sub

Function Connect (Path2DB)
    Dim DB
    Set DB = Server.CreateObject("ADODB.Connection")
    DB.Mode = adModeReadWrite 'Since we will be adding entries.
    DB.Open ("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" + Server.MapPath(Path2DB))
    Set Connect = DB
End Function

' Function Escape() replaces single-quotes with a pair of single-quotes.
' Otherwise we face problems inserting it into SQL statements.
Function Escape(sz)
    Escape = Replace(sz, "'", "''")
End Function

' Function ShortData() formats a given Data as a nice-looking
' small string of the format:
' DD MMM, YYYY.
Public Function ShortDate(dtDate)
  If Not IsNull (dtDate) Then
    ShortDate = Day(dtDate) & " " & Left(MonthName (Month(dtDate)), 3) & ", " & Year(dtDate)
  Else
    ShortDate = dtDate
  End If
End Function
%>
<HTML>
	<HEAD>
		<TITLE>Discussion Forum : by Manas Tungare</TITLE>
		<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
		<LINK REL="stylesheet" HREF="forum.css">
	</HEAD>
	<Message BGCOLOR="#FFFFFF" LEFTMARGIN="0" TOPMARGIN="0" MARGINWIDTH="0" MARGINHEIGHT="0">
		<%
Public Sub treeMessage_Build(MessageID, Level)
Dim rsPosts
Set rsPosts = DB.Execute ("SELECT * FROM Posts WHERE ForumID = '"& Request.QueryString("ForumID") &"' ORDER BY Date ASC")

	rsPosts.Filter = "MessageID = " & MessageID
	%>
		<img src="images/threader.jpg" width="<%= Level * 20 %>" height="2"> <font face="arial,tahoma" size="2">
			<img src="images/arrows/<%=rsPosts("Status")%>.jpg">&nbsp; <a href="Message.asp?ID=<%=rsPosts("MessageID")%>" target="Message">
				<%=rsPosts("Subject")%>
			</a>&nbsp;-&nbsp;<%=rsPosts("Author")%>&nbsp;<font face="arial,tahoma" size="1" color="<% if datediff("h",Date,now()) < 24 then %>Blue<%ELSE%>Red<%END IF%>">(<%=rsPosts("Date")%> )</font>
			<br>
			<%
	rsPosts.Filter = "Parent = " & MessageID

	If Not (rsPosts.EOF And rsPosts.BOF) Then
		rsPosts.MoveFirst
		While Not rsPosts.EOF
			treeMessage_Build rsPosts("MessageID"), Level+1
			rsPosts.MoveNext
		Wend
	End If
End Sub
%>
			<%
Dim objConn
Dim strConnString
Dim strSQL
Dim objRS
Dim strName
Dim strComment
Dim dteDate
Dim intPageSize
Dim intPage
Dim intTotalPages
Dim intRecordCount

'## -- connection string, vilken provider och db ska användas --

'## -- hur många inlägg ska visas per sida --
intPageSize = 2

'## -- vilken sida ska visas --
intPage = Request.QueryString("page")

%>
			<%
If intPage = "" Then intPage = 1

ForumID = request.QueryString("ForumID")

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open forum

strSQL = "SELECT * FROM Posts WHERE ForumID = '" & ForumID & "' AND status = '1' ORDER BY Date DESC"

'## -- skapa ett recordset --
Set objRS = Server.CreateObject("ADODB.Recordset")
'## -- hur många poster ska visas per sida --
objRS.PageSize = intPageSize

'## -- öppna och hämta alla records --
objRS.Open strSQL, objConn, 3, 1

If objRS.EOF Then
Response.Write "<br>No results matched your query.<br><br>"
Else

'## -- vilken sida i recordset uppdelningen ska visas --
objRS.AbsolutePage = intPage

'## -- hur många sidor finns i recordset uppdelningen --
intTotalPages = objRS.PageCount

'## -- lista alla inlägg som finns i db --
Do Until objRS.EOF or intRecordCount >= intPageSize

intRecordCount = intRecordCount + 1

strName = objRS(1)
strComment = objRS(2)
dteDate = objRS(3)

%>
			<%
If Request ("ForumID") = "" Then
	' We don't have a valid ForumID, so go back to the main page.
response.Redirect("thread.asp?ForumID=1")
End If

Dim ForumID
ForumID = Request("ForumID")

Dim DB, rsForum, rsPosts, rsThreads
Set DB = Connect (ForumMDB)
Set rsForum = DB.Execute ("SELECT * FROM Forums WHERE ForumID = " & ForumID)
Set rsPosts = DB.Execute ("SELECT * FROM Posts WHERE ForumID = '" & ForumID & "' ORDER BY Date ASC")
Set rsThreads = DB.Execute ("SELECT * FROM Posts WHERE ForumID = '" & ForumID & "' AND status = '1' ORDER BY Date DESC")

If rsThreads.BOF And rsThreads.EOF Then
  ShowError ("<P ALIGN=""center"">There are no Posts in this forum.<br><A HREF=""post.asp?ForumID="& ForumID &"&Status=1"" target=""Message""><img border=""0"" SRC=""images/newpost.jpg""></A></P>")
%>
			<%
Else
	rsThreads.MoveFirst
%>
			<table width="100%">
				<tr>
					<td>
						<font face="arial,tahoma" size="2"><b>
								<%=rsForum("Forum")%>
							</b></font>
						<br>
						<font face="arial,tahoma" size="2">
							<%=rsForum("Description")%>
						</font>
					</td>
					<td align="right" width="12%">
						<A HREF="post.asp?ForumID=<%=ForumID%>&Status=1" target="Message"><img border="0" SRC="images/newpost.jpg"></A>
					</td>
				</tr>
			</table>
			<br>
			<%
				While Not rsThreads.EOF
					treeMessage_Build rsThreads("MessageID"), 0
					rsThreads.MoveNext
				Wend
		      %>
			<% End If %>
			<%
objRS.MoveNext
Loop
End If

'## -- clean up --
objRS.Close
Set objRS = Nothing

objConn.Close
Set objConn = Nothing

'## -- visa sidnavigeringen --
'## -- intPage = vilken sida som ska visas --
'## -- intTotalPages = hur många sidor som recordsetet är uppdelat i --
Call PageNavigation(intPage, intTotalPages)
%>
	</body>
</HTML>
<%
'## -- skapa sid-navigering --
Sub PageNavigation(ByVal WichPage, ByVal HowManyPages)
Dim strScriptName
Dim I

'## -- vilken sida ska navigeringen länka till --
strScriptName = Request.ServerVariables("SCRIPT_NAME")

'## -- visa föregående, länkat eller olänkat beroende på vilken sida som visas --
If CInt(WichPage) > 1 Then %>
<A href="<%=strScriptName%>?page=<%=WichPage - 1%>&forumID=<%=forumID%>"><font face="Verdana" size="1">
	<< Previous</A>
<%Else
Response.Write "<font face=""Verdana"" size=""1""><< Previous "
End If

'## -- lista ut alla sidnummer --
For I = 1 To HowManyPages
If CInt(WichPage) <> I Then %>
<A href="<%=strScriptName%>?page=<%=I%>&forumID=<%=forumID%>"><font face="Verdana" size="1">
		<%=I%></A>
<%
Else
%>
[ <B>
	<%=I%>
</B>]</font>
<%
End If
Next

'## -- visa Nästa, länkad eller olänkad beroende på vilken sida som visas --
If CInt(WichPage) < CInt(HowManyPages) Then %>
<A href="<%=strScriptName%>?page=<%=WichPage + 1%>&forumID=<%=forumID%>"><font face="Verdana" size="1">
	Next >></A>
<%
Else%>
<font face="Verdana" size="1">Next >>
	<%End If

End Sub

set objRS= nothing
set objConn = nothing
%></HTML>

------------------
Sprit löser inga problem. Men det gör inte mjölk heller.

T-bird 1200; GeForce 256 32MB; WinNT4/XP; 512MB RAM; Dialup

PatrikBMedlem sedan mars 20002 713 inlägg
#7

eh, va lite mycket att gå igenom ... du skulle inte kunna "fimpa" allt irrelevant HTML-kod som bara stökar till det.

En annan sak. Hur såg din grundkod ut innan du försökte att göra en paging?

Det ser ut som du har lagt till ett recordset för att sköta pagingen vilket blir lite knas. Det du skall göra är att modifiera rsThreads recordsetet till paging.

cya,
PatrikB

------------------
-=* IF there is a wrong way to do something, then someone will do it *=-

[Redigerat av PatrikB den 07 feb 2002]

His Divine ShadowMedlem sedan sep. 20002 748 inlägg
#8

Kan ju Pröva, problemet är ju att jag inte fattar ditt som datt gällandes detta, det torde ju bli enklare om man kopierade in koden i det program man använder.

------------------
Sprit löser inga problem. Men det gör inte mjölk heller.

T-bird 1200; GeForce 256 32MB; WinNT4/XP; 512MB RAM; Dialup

His Divine ShadowMedlem sedan sep. 20002 748 inlägg
#9

Hmm, prövade göra som du förslog och voilá det funkar, thx very much.

Om nån är intresserad får ni nog använda denna kod om ni vill ha en såndär "rekursiv tråd kod" ;)
Den funkar fin-fint.

------------------
Sprit löser inga problem. Men det gör inte mjölk heller.

T-bird 1200; GeForce 256 32MB; WinNT4/XP; 512MB RAM; Dialup

PatrikBMedlem sedan mars 20002 713 inlägg
#10

... och lite kod skulle vi nog vilja se ... eller andra som har haft/har problem med liknande

cya,
PatrikB

------------------
-=* IF there is a wrong way to do something, then someone will do it *=-

Genererad på 389 ms · cache AV · v20260730165559-full.f96bc7eb