webForumDet fria alternativet

Pagingsystem - GetRows()

ASPur ASP

27 svar · 3 016 visningar · startad av Palle

Medlem sedan apr. 20003 174 inlägg
Frågan#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

Medlem 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

Medlem 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. ;)

Medlem 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.

Medlem 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

Medlem 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()
%>
Medlem 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()
%>
Medlem sedan mars 20015 287 inlägg
#8

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

Medlem sedan dec. 20002 526 inlägg
#9

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

Medlem 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

Medlem 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

Medlem 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? :)

Medlem sedan dec. 20002 526 inlägg
#13

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

Medlem sedan mars 20015 287 inlägg
#14

Slarvskalle!

Medlem 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
Medlem 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.

Medlem 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"?

Medlem 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.

Medlem 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.

Medlem 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"

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