webForumDet fria alternativet

Pagingsystem - GetRows()

27 svar · 3 014 visningar · startad av Palle

PalleMedlem sedan apr. 20003 174 inlägg
#1

Detta är en diskussion gällande detta script i wF´s scriptarkiv.

Scriptet tar upp ett hett ämne här på wF, nämligen "paging".
Jag har valt att göra ett pagingsystem som använder sig
utav GetRows() för att hämta informationen från databasen.

Navigeringen är konstruerad som så att du själv kan välja mellan
att använda knappar eller text, du avkommenterar helt
sonika den navigeringen som du själv önskar använda och
kommenterar bort den andra, ni förstår nog. ;)

En demo finns att titta på här

Kom gärna med kommentarer och idéer om förbättringar. :bire

SebbeMedlem sedan jan. 20032 285 inlägg
#2

Eftersom du nu har skapat tråden kan ju jag länka till en fil jag skrev igår, hög tråkfaktor. Det enda problemet med den här sidan är att jag inte orkade kommentera den, men jag ska väl ta och fixa det senare någon gång. :)

Hoppas bara inte att Palle misstycker?
http://www11.brinkster.com/creepyone/scripts/paging.asp

PalleMedlem sedan apr. 20003 174 inlägg
#3

hehe, inte alls. :bire

Det jag postade här ovan fungerar ungefär på samma sätt fast jag använder getrows och arrayer istället
för do until loopar och pagesize då jag föredrar det. ;)

Navigeringen å andra sidan är inte samma, jag ville ha en lite kuligare variant. ;)

solbulleMedlem sedan mars 20015 287 inlägg
#4

Har inte kollat på scriptet fullt ut, men såg inte om man lätt kunde ändra hur många sidor/knappar som är synliga (5 i exemplet)
Detta har ju frågats om typ var tredje dag den senaste tiden.

PalleMedlem sedan apr. 20003 174 inlägg
#5

solbulle skrev:

Har inte kollat på scriptet fullt ut, men såg inte om man lätt kunde ändra hur många sidor/knappar som är synliga (5 i exemplet)
Detta har ju frågats om typ var tredje dag den senaste tiden.

Man kan göra det ja, men inte på ett jättelätt sätt. ;)

Ska faktiskt fixa till det, tack för tipset. :bire

crisse6Medlem sedan dec. 20002 526 inlägg
#6

Palle, kanon skript!! Nar jag kollad pa exemplet alltsa... men sjalv far jag inte ihop det, den klagar pa "Next" i slutet dar.... :(

<%
Dim forum, strSql, rs
Call DBConn()

forum = request.querystring("id")

	strSql = 	"Select threadID, threadUser, threadLastReply, threadAns, ThreadAvailable, threadForumID"&_
			"From t_threads where threadForumID = "&forum
		set rs = objConn.execute(strSql)
If NOT rs.EOF Then arrRecSet = rs.GetRows()
	rs.Close : Set rs = Nothing
Call DBClose()

If IsArray(arrrs) Then

	'// Poster per sida
	intPostsPerPage = 10

	'// Navigeringshantering
	If Len(trim(Request.Querystring("n"))) > 0 Then intPage = cInt(trim(Request.Querystring("n"))) Else intPage = 1
	intFirstPost = (intPage - 1) * intPostsPerPage
	intTotalPosts = UBound(arrrs, 2)
	intPages = ((intTotalPosts)\intPostsPerPage)+1

	If intFirstPost + (intPostsPerPage - 1) >= UBound(arrrs,2) Then
		intLastPost = UBound(arrrs, 2) 
	Else
		intLastPost = intFirstPost + (intPostsPerPage - 1)
		strNext = True
	End If

	'// Skriv ut posterna
	For i = intFirstPost To intLastPost
		threadID = arrrs(0,i)
		threadName = arrrs(1,i)
		threadUser = arrrs(2,i)
		threadAns = arrrs(3,i)
		threadLastReply = arrrs(4,i)
		
response.write 	"<table width=""100%"" bgcolor=""#EFEFEF""><tr><td>Trådar</td></tr></table>"

response.write 	"<table width=""100%"" bgcolor=""#FFFFFF"">"&_
			"<tr><td width=""2%""></td>"&_
			"<td width=""30%""><a href=""topic.asp?id="&threadID&""">"&threadName&"</a></td>"&_
			"<td width=""5%"">"&threadUser&"</td>"&_
			"<td width=""5%"">"&threadAns&"</td>"&_
			"<td width=""15%"">"&threadLastReply&"</td></tr></table>"&_
		
	Next
Call textNavigate(intPage, intTotalPosts, intPostsPerPage, intPages)
	Else
		Response.write "Inga inlägg i detta forum!"
End IF
%>
<tr>
<td align="center"><%= "Visar posterna <strong>"& intFirstPost+1 &"-"& intLastPost+1 &"</strong> av totalt <strong>"& intTotalPosts+1 &"</strong> poster" %></td>
</tr>
<%	
Call HTMLEnd()
%>
SebbeMedlem sedan jan. 20032 285 inlägg
#7

Ta bort &_ i slutet av Response.Write()'n.

<%
Dim forum, strSql, rs
Call DBConn()

forum = request.querystring("id")

	strSql = 	"Select threadID, threadUser, threadLastReply, threadAns, ThreadAvailable, threadForumID"&_
			"From t_threads where threadForumID = "&forum
		set rs = objConn.execute(strSql)
If NOT rs.EOF Then arrRecSet = rs.GetRows()
	rs.Close : Set rs = Nothing
Call DBClose()

If IsArray(arrrs) Then

	'// Poster per sida
	intPostsPerPage = 10

	'// Navigeringshantering
	If Len(trim(Request.Querystring("n"))) > 0 Then intPage = cInt(trim(Request.Querystring("n"))) Else intPage = 1
	intFirstPost = (intPage - 1) * intPostsPerPage
	intTotalPosts = UBound(arrrs, 2)
	intPages = ((intTotalPosts)\intPostsPerPage)+1

	If intFirstPost + (intPostsPerPage - 1) >= UBound(arrrs,2) Then
		intLastPost = UBound(arrrs, 2) 
	Else
		intLastPost = intFirstPost + (intPostsPerPage - 1)
		strNext = True
	End If

	'// Skriv ut posterna
	For i = intFirstPost To intLastPost
		threadID = arrrs(0,i)
		threadName = arrrs(1,i)
		threadUser = arrrs(2,i)
		threadAns = arrrs(3,i)
		threadLastReply = arrrs(4,i)
		
response.write 	"<table width=""100%"" bgcolor=""#EFEFEF""><tr><td>Trådar</td></tr></table>"

response.write 	"<table width=""100%"" bgcolor=""#FFFFFF"">"&_
			"<tr><td width=""2%""></td>"&_
			"<td width=""30%""><a href=""topic.asp?id="&threadID&""">"&threadName&"</a></td>"&_
			"<td width=""5%"">"&threadUser&"</td>"&_
			"<td width=""5%"">"&threadAns&"</td>"&_
			"<td width=""15%"">"&threadLastReply&"</td></tr></table>"
		
	Next
Call textNavigate(intPage, intTotalPosts, intPostsPerPage, intPages)
	Else
		Response.write "Inga inlägg i detta forum!"
End IF
%>
<tr>
<td align="center"><%= "Visar posterna <strong>"& intFirstPost+1 &"-"& intLastPost+1 &"</strong> av totalt <strong>"& intTotalPosts+1 &"</strong> poster" %></td>
</tr>
<%	
Call HTMLEnd()
%>
solbulleMedlem sedan mars 20015 287 inlägg
#8

If NOT rs.EOF Then arrrs = rs.GetRows()

crisse6Medlem sedan dec. 20002 526 inlägg
#9

japp, fick ordning pa det ;) fan att man kan vara sa blind ibland :e

crisse6Medlem sedan dec. 20002 526 inlägg
#10

okej, forsoker fa ordning pa en sak har nu... vill blanda in tabellen t_members i min sql sats, men for att jag anvander getrows() och ar ny pa saken sa vet jag inte hur allt hanger ihop till 100%, hehe.. iaf, den sager nu i pagingen att det ar 3 poster nar det ar en, tror det kan vara for att det ar 3 anvandare i db'n? Men det ar alltsa bara en (1) trad i db'n... kolla hur jag forsoker gora i sql satsen ;) och forklara garna hur jag kan anvanda det sen i min kod, tex vill kunna skriva sida.asp?id="&anvandarID&"........

[red]
<%
Dim forum, strSql, rs, arrrs, intPostsPerPage, intPage
Dim ntFirstPost, intTotalPosts, intPages, intLastPost
Dim i, threadID, threadName, threadUser, threadAns, threadLastReply
Dim strNext, intFirstPost, strModerator, objMod, strOutMod, thread
Dim strLocation, objLoc, strLinkForum, userID

Call DBConn()
Call Location()
Call Moderator()
	strSql = 	"Select t_threads.threadID, t_threads.threadUser, t_threads.threadLastReply, t_threads.threadAns, t_threads.threadName, t_threads.ThreadAvailable, t_threads.threadForumID, t_members.userID"&_
			" From t_threads, t_members where t_threads.threadForumID = "&forum
		set rs = objConn.execute(strSql)
		
If NOT rs.EOF Then arrrs = rs.GetRows()
	rs.Close : Set rs = Nothing
Call DBClose()

If IsArray(arrrs) Then

	'// Poster per sida
	intPostsPerPage = 10

	'// Navigeringshantering
	If Len(trim(Request.Querystring("n"))) > 0 Then intPage = cInt(trim(Request.Querystring("n"))) Else intPage = 1
	intFirstPost = (intPage - 1) * intPostsPerPage
	intTotalPosts = UBound(arrrs, 2)
	intPages = ((intTotalPosts)\intPostsPerPage)+1

	If intFirstPost + (intPostsPerPage - 1) >= UBound(arrrs,2) Then
		intLastPost = UBound(arrrs, 2) 
	Else
		intLastPost = intFirstPost + (intPostsPerPage - 1)
		strNext = True
	End If

	'// Skriv ut posterna
	For i = intFirstPost To intLastPost
		threadID = arrrs(0,i)
		threadUser = arrrs(1,i)
		threadLastReply = arrrs(2,i)	
		threadAns = arrrs(3,i)
		threadName = arrrs(4,i)
		
response.write 	"<br><br><table width=""100%"" bgcolor=""#EFEFEF""><tr>"&_
		"<td width=""2%""></td>"&_
		"<td width=""30%"">Tråd</td>"&_
		"<td width=""5%"">Startad Av</td>"&_
		"<td width=""5%"">Svar</td>"&_
		"<td width=""15%"">Senaste</td>"&_
		"</tr></table>"

response.write 	"<table width=""100%"" bgcolor=""#FFFFFF"">"&_
			"<tr><td width=""2%""></td>"&_
			"<td width=""30%""><a href=""topic.asp?id="&threadID&""">"&threadName&"</a></td>"&_
			"<td width=""5%"">"&threadUser&"</td>"&_
			"<td width=""5%"">"&threadAns&"</td>"&_
			"<td width=""15%"">"&threadLastReply&"</td></tr></table><br><br>"
		
	Next
Call textNavigate(intPage, intTotalPosts, intPostsPerPage, intPages)
	Else
		Response.write "Inga inlägg i detta forum!"
End IF
%>
<table>
<tr>
<td><%= "Visar posterna <strong>"& intFirstPost+1 &"-"& intLastPost+1 &"</strong> av totalt <strong>"& intTotalPosts+1 &"</strong> poster" %></td>
</tr>
</table>
<%	
Call HTMLEnd()
%>
[/red]

Tackar, glider till Minneapolis nu sa jag vantar pa svar tills jag ar tillbaka :D

pirroMedlem sedan aug. 2001226 inlägg
#11

Hoppas att du inte har ngt emot att ja tar ditt stylesheetkod för button, samt button taggen, då ja inte kände till den.
Har gjort ett för php och ska testa göra med knappar...

Over and Out
Pirro

crisse6Medlem sedan dec. 20002 526 inlägg
#12

Ingen som vet? :D

Kan ju tillagga att det ar sql satsen det ar fel pa... hehe.... nar jag tar bort hamtningen fran t_members sa listar den korrekt... hmm? hur ska man bara sig at? :)

crisse6Medlem sedan dec. 20002 526 inlägg
#13

HEEEEEELP I NEED SOMEBODY, HEEEELP IS THERE ANYBODY, HEEEEEELP MEEEEEEEE!

solbulleMedlem sedan mars 20015 287 inlägg
#14

Slarvskalle!

Bosse168Medlem sedan nov. 20031 018 inlägg
#15

Hur gör man för att få informationen från ett formulär?
Funkar bra när jag söker men men när jag byter sida blir det som en tom sida?

min SQL sats

SQL = "Select * From members Where username Like '%%" & Replace(namn,"'","''") & "%%' AND kon Like '%%"& kon &"%%'" & _
" AND (to_days(current_date) - to_days(foddes))/365.2405 between "& sqlAge &" AND stad Like '%%"& staden &"%%' AND lan Like '%%"& lanet &"%%' AND status Like '%%"& online &"%%'" & _
" And bild_godkand Like '%%"& bild &"%%' Order By "& ordning
Bosse168Medlem sedan nov. 20031 018 inlägg
#16

Löste det med sessions finns det inget bättre och snällare kod så servern blir glad.

bluespotMedlem sedan nov. 200093 inlägg
#17

Tre saker jag skulle vilja ha lite hjälp med.

  1. Jag har valt att bara navigera med siffror, men om jag har mindre än två poster i databasen så försvinner navigeringen.

  2. Hur ser koden ut om jag vill visa en bild som hör till den aktuella posten?

  3. Innan jag går in på sidan med pagingen så finns det olika länkar typ sida.asp?id=1 som man klickar på, hur får jag pagingsidan att välja rätt poster med urvalet på "id"?

PalleMedlem sedan apr. 20003 174 inlägg
#18

1. Det beror på att scriptet per default är satt till att visa 20 poster per sida, är det mindre än 20 poster visas ingen navingering för det finns inget att navigera mellan.. ändra intPostsPerPage så det passar dina önskemål.

2. Lägg in bilden i koden där posterna skrivs ut.

3. Du måste ändra sql-satsen så den passar ditt syfte och hämtar det som Du vill hämta.

bluespotMedlem sedan nov. 200093 inlägg
#19

Jag har satt intPostsPerPage = 1
Men om jag har mindre än tre poster i databasen så syns inte navigeringen, har man bara två poster vill man kunna navigera mellan dom.

Kan någon ge exempel hur koden ska skrivas på mina andra punkter, jag är inte så bra på detta.

bluespotMedlem sedan nov. 200093 inlägg
#20

Varför får jag felmeddelande:
Microsoft JET Database Engine (0x80040E14)
Syntaxfel (operator saknas) i frågeuttrycket 'Id WHERE KundId=2'.

Min kod:

Set RecSet = Connect.Execute("SELECT * FROM Referenser ORDER BY Id WHERE KundId="&Request.Querystring("KundId"))

Länken som jag klickar på: a href="kundreferens.asp?KundId=2"

137 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)