webForumDet fria alternativet

Paging prob

ASP

25 svar · 401 visningar · startad av ConnyFox

Medlem sedan aug. 20011 087 inlägg
Frågan#1

Halo! Har sökt och kollat på FAQ guiden för Paging men förstår helt enkelt inte hur jag ska få det att funka ihop med min kod, någon som har tid o hjälpa mig?

Jag vill visa dom 20 första meddelanderna och sedan kunna välja nästa 20.

Eller ännu häldre visa sidnummer som man kan klicka på t.ex sidan 4 visar 41-50 osv..

tack på förhand Webforum leker ;)

<% if request.querystring("visa") = "" or request.querystring("visa") = "utkorg" or request.querystring("visa") = "inkorg" then %>

<% if request.querystring("visa") = "utkorg" then %>

<%
SQL = "SELECT * FROM meddelanden where fran = '" & session("member") & "' and franv = 'visa'"
RecSet.Open SQL, Connection, 3, 3
%>

<%elseif request.querystring("visa") = "" or  request.querystring("visa") = "inkorg" then %>

<%
SQL = "SELECT * FROM meddelanden where till='" & session("member") & "' and tillv = 'visa'"
RecSet.Open SQL, Connection, 3, 3
%>

<% end if %>

<% if recset.eof then%><br><br><center>Inga medelanden</center><br><br><%else%>
<form name="boxar" action="funktioner.asp?funktion=delmessbox" method="post">
<table width="100%">
<tr bgcolor="#E9E9E9"><td width="2%"><input name="allbox" type="checkbox" value="Check All" onClick="CheckAll();" class="check"></td><td width="25%"><%if request.querystring("visa") = "utkorg" then %>Till<%else%>Från<%end if%></td><td>Rubrik</td><td width="15%">Skickat</td></tr>

<% 
do until RecSet.EOF
cnt = cnt + 1
strColor = "#FFFFFF" 
If cnt Mod 2 = 0 then strColor = "#E9E9E9"
%>
<tr bgcolor="<%=strColor%>"><td align="middle"><input type="checkbox" class="check" value="<%=RecSet("ID")%>" name="checkboxar"></td><td><% if recset("nytt") = "0" then%><img src="bilder/ico_messnew.gif"> <%elseif recset("nytt") = "1" then%><img src="bilder/ico_messopen.gif"> <%else recset("nytt") = "2" %><img src="bilder/ico_mess.gif"> <%End IF%> 
<%if request.querystring("visa") = "utkorg" then %><a href="info.asp?member=<%=RecSet("till")%>"><%=RecSet("till")%></a><%else%><a href="info.asp?member=<%=RecSet("fran")%>"><%=RecSet("fran")%></a><%end if%>
</td><td> <a href="default.asp?visa=read&ID=<%=RecSet("ID")%>"><%=Recset("rubrik")%></a></td><td width="20%" align="right"> <%=formatDate(recset("datum"))%>
</td></tr>
<%
RecSet.MoveNext
loop

RecSet.Close
%>
</td></tr><tr bgcolor="#E9E9E9"><td colspan="3">
<a <% if session("inloggad") = false then %>href="javascript:alert(' Du måste logga in för att kunna lägga till en länk. \n Är du inte redan medlem så bli det genast och få \n tillgång till alla roliga grejjer här!');" <% else %>href="javascript:document.boxar.submit()"<% end if %>><img SRC="bilder/tabort.gif" name="skicka" value="Skicka" class="input"></a></td><td></form></td></tr>
</table>
<%end if %>

------------------
*brölar ljudligt*

Medlem sedan aug. 20011 087 inlägg
#2

Ingen? Snälla :o)

------------------
*brölar ljudligt*

Medlem sedan aug. 20011 087 inlägg
#3

nehepp *snyft*

------------------
*brölar ljudligt*

Medlem sedan mars 20002 836 inlägg
#4

Pagingen är ju ett av de ämnen som tagits upp absolut MEST i detta forum.
Tycker att det låter konstigt att du inte skulle kunna söka reda på information om hur paging funkar.

Sök ... och du borde få upp huuuur många trådar som helst i ämnet, tror att det finns material för en hel bok om paging :e

Gör ett försök, kika igenom kodexempel, försök att hänga med vad som händer när scriptet körs, testa sedan och kom tillbaka så lovar jag att du kommer att få hjälp.

cya,
PatrikB

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

Medlem sedan aug. 20011 087 inlägg
#5

Hehe jovisst hittar jag massa kod, en sablans massa kod faktiskt, men antingen så sorterar den efter ID X to Y typ o d e ju ganska kört när alla ID inte finns (t.ex om man tagit bort massa inlägg) eller så är koden för krånglig för att jag ska förstå den :o) Så därför ber jag nån vänlig själ att antingen hjälpa mig att förstå eller hjälpa mig med koden. Tackar ;)

------------------
*brölar ljudligt*

Medlem sedan dec. 19998 577 inlägg
#6

Så därför ber jag nån vänlig själ att antingen hjälpa mig att förstå

Jag ahr skrivit en artikel i ämnet som kanske kan vara till hjälp:
http://www.webeye.nu/default2.asp?que=asp/default.asp&exec=asp/artiklar/asp_17.asp

------------------
Mostly Harmless

Medlem sedan aug. 20011 087 inlägg
#7

Tack den hjälpte, funkar inte så bra ihop med min kod dock hehe.. men men får la försöka klura ut något

------------------
*brölar ljudligt*

Medlem sedan feb. 20012 412 inlägg
#8

Hej, det absolut lättaste är att bygga pagingen först (eller använda en färdig) och sedan utveckla, designa och anpassa den så att den passar. Det är betydligt mycket bökigare att göra tvärt om.

mvh Jörgen :)

------------------
.: Det är jag som ger svaren och det är Ni som ställer frågorna :.

Medlem sedan mars 20002 836 inlägg
#9

ok då .... vi får väl ta det steg för steg :e ... ska försöööka vara lite pedagogisk *ler*

Det första vi gör är att ändra cursortypen till 1.
Behöver ju inte ställa recordsetet för uppdatering när du endast ska visa poster:

RecSet.Open SQL, Connection, 1, 3

Vad behöver vi då veta för att kunna dela upp recordsetet på olika sidor:

1. Hur många poster ska visas på varje "sida"?
2. Hur många sidor finns det totalt i recordsetet?
3. Vilken "sida" efterfrågas?

Vi börjar med att lägga till hur många poster vi vill visa per sida:

'## -- hur många poster ska visas per sida --
intPageSize = 15 '## -- visa 15 poster per sida --

Nu har vi en av byggstenarna i pagingen klar.

Vi går vidare med att lägga till en sak innan recordsetet öppnas.

RecSet.PageSize = intPageSize

'## -- öppna recordsetet --
RecSet.Open SQL, Connection, 1, 3

dvs, vi säger till recordset objectet att vi endast vill ha intPageSize poster per sida.

Vi har fortfarande ett par saker som behövs innan pagingen e klar ... bara ett par saker :e

Där vi börjar att loopa igenom recordsetet lägger vi till detta:

do until RecSet.EOF [b]or cnt >= intPageSize[/b]

dvs, den ska inte visa fler poster än vad - intPageSize - säger att den ska göra.

Vi slutar här ..... så att du får lite att göra ..... medans jag hämtar andan =)

Din kod bör se ut ungefär så här:

<% 
intPageSize = 15

if request.querystring("visa") = "" or request.querystring("visa") = "utkorg" or request.querystring("visa") = "inkorg" then

	if request.querystring("visa") = "utkorg" then
	
		SQL = "SELECT * FROM meddelanden where fran = '" & session("member") & "' and franv = 'visa'"
		'RecSet.Open SQL, Connection, 1, 3
	
	elseif request.querystring("visa") = "" or request.querystring("visa") = "inkorg" then
	
		SQL = "SELECT * FROM meddelanden where till='" & session("member") & "' and tillv = 'visa'"
		'RecSet.Open SQL, Connection, 1, 3
	
	end if
	
	'## -- hur många poster per sida --
	RecSet.PageSize = intPageSize
	
	'## -- öppna recordsetet --
	RecSet.Open SQL, Connection, 1, 3

	if recset.eof then
%><br><br><center>Inga medelanden</center><br><br>
<%
	else
		do until RecSet.EOF or cnt >= intPageSize
			cnt = cnt + 1
			strColor = "#FFFFFF" 
			If cnt Mod 2 = 0 then strColor = "#E9E9E9"
%>
<----- här ska det vara en massa html ----->
<%
			RecSet.MoveNext
		loop

		RecSet.Close
end if
%>

märk att jag plockat bort all oviktig html-kod för att dra ned längden på detta inlägg

cya,
PatrikB

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

Medlem sedan mars 20002 836 inlägg
#10

del 2 .....

då börjar vi att lägga till en länk till föregående sida och en länk till nästa sida.
Koden lägger du till EFTER att loopen av alla poster har körts:

'## -- sid-navigeringen --
Response.Write "<A href=""" & strScriptName & "?page=" & intPage-1 & """"><< Föregående</A> &#0124; " & _
	"<A href=""" & strScriptName & "?page=" & intPage + 1 & """>Nästa >></A>"

När vi klickar på länkarna så kommer "nästa" eller "föregående" sida att efterfrågas.
För att vi ska kunna visa den efterfrågade sidan så måste vi "fånga upp" just den efterfrågade sidan.
Det gör vi genom att längst upp lägga till:

'## -- vilken sida ska länken gå till, till denna sida --
strScriptName = Request.ServerVariables("SCRIPT_NAME")

'## -- kolla vilken sida som ska visas --
intPage = Request.QueryString("page")
'## -- kolla så att någon sida är vald. om inte visa första sidan --
If intPage = "" Then intPage = 1

Nu har vi en liten sak till att göra.
Vi måste säga till recordsetet vilken sida som ska visas.
Det gör vi genom att innan vi går in i loopen lägga till:

'## -- gå till efterfrågad sida --
RecSet.AbsolutePage = intPage

Din kod bör se ut ungefär så här:

<% 
strScriptName = Request.ServerVariables("SCRIPT_NAME")

intPage = Request.QueryString("page")
If intPage = "" Then intPage = 1

intPageSize = 15

if request.querystring("visa") = "" or request.querystring("visa") = "utkorg" or request.querystring("visa") = "inkorg" then

	if request.querystring("visa") = "utkorg" then
	
		SQL = "SELECT * FROM meddelanden where fran = '" & session("member") & "' and franv = 'visa'"
		'RecSet.Open SQL, Connection, 1, 3
	
	elseif request.querystring("visa") = "" or request.querystring("visa") = "inkorg" then
	
		SQL = "SELECT * FROM meddelanden where till='" & session("member") & "' and tillv = 'visa'"
		'RecSet.Open SQL, Connection, 1, 3
	
	end if
	
	'## -- hur många poster per sida --
	RecSet.PageSize = intPageSize
	
	'## -- öppna recordsetet --
	RecSet.Open SQL, Connection, 1, 3

	if recset.eof then
%>
<----- inga poster ----->
<%
	else
		RecSet.AbsolutePage = intPage
		do until RecSet.EOF or cnt >= intPageSize
			cnt = cnt + 1
			strColor = "#FFFFFF" 
			If cnt Mod 2 = 0 then strColor = "#E9E9E9"
%>
<----- här ska det vara en massa html ----->
<%
			RecSet.MoveNext
		loop

		RecSet.Close
end if

'## -- sid-navigeringen --
Response.Write "<A href=""" & strScriptName & "?page=" & intPage-1 & """"><< Föregående</A> &#0124; " & _
	"<A href=""" & strScriptName & "?page=" & intPage + 1 & """>Nästa >></A>"
%>

hoppas nu att all denna kod fungerar och att du förstått grunderna till pagingen, för detta är den enklaste formen av paging

[r]
OBS!!! ingen felhantering för sid-navigerings länkarna.
Ej heller testad, skriven direkt ...
[/r]

cya,
PatrikB

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

[Redigerat av PatrikB den 29 jan 2002]

Medlem sedan aug. 20011 087 inlägg
#11

Ah tack seriöst jag fattar faktiskt nu :O) tack tack! ett problem bara! Får fel på följande kod

'## -- sid-navigeringen --
Response.Write "<A href=""" & strScriptName & "?page=" & intPage-1 & """"><< Föregående</A> &#0124; " & _
"<A href=""" & strScriptName & "?page=" & intPage + 1 & """>Nästa >></A>"

får felet

Kompileringsfel i Microsoft VBScript fel '800a03ea' 

Syntaxfel 

/StajlLinks 1.0/messbox.asp, rad 98 

Response.Write "<A href=""" & strScriptName & "?page=" & intPage-1 & """"><< Föregående</A> &#0124; " & _
---------------------------------------------------------------------------^

------------------
*brölar ljudligt*

Medlem sedan aug. 20011 099 inlägg
#12

prova med mellanslag där??

------------------
ASP är bäst fuck the rest!!!

Medlem sedan dec. 200012 464 inlägg
#13
Response.Write "<A href=""" & strScriptName & "?page=" & intPage-1 & """><< Föregående</A> &#0124; " & _
"<A href=""" & strScriptName & "?page=" & intPage + 1 & """>Nästa >></A>"

------------------
essentitia preter non sans multiplicandum

Medlem sedan aug. 20011 087 inlägg
#14

Ah tackar d funkar fin fint nu! Det löjliga är att jag faktiskt såg att d va en " förmycket men glömde testa o ändra det haha ;) tack PatrikB LarsG o alla andra här nu fattar jag äntligen vad all den där koden gör hehe!

------------------
*brölar ljudligt*

Medlem sedan aug. 20011 087 inlägg
#15

jag gjorde om lite i föregående/nästa länkarna så att föregående inte skulle visas om sidnumret var 1 eller mindre.

<% if not intpage <= 1 then %><A href="<%=strScriptName%>?page=<%=intPage-1%>&visa=<%=korg%>"><< Föregående</A> &#0124;<%end if%>
<A href="<%=strScriptName%>?page=<%=intPage+1%>&visa=<%=korg%>">Nästa >></A>

tänkte sedan att nästa inte skulle visas om det inte fans några fler inlägg att visa. Hur gör man detta?

ett sätt vore ju att räkna antal inlägg med

sidor = "select count(*) from meddelanden where fran = '" & session("member") & "' and franv = 'visa'"

dela sidor med intPageSize och göra det till en variabel, typ antalsidor.

Och sedan göra så att om intpage inte är mindre eller lika med antalsidor så visas inte nästa länken. visst d skulle kunna funka men kag får inte till koden att dela sidor med intpagesize

nån som kan hjälpa mig med den ?

tackar änu en gång!

------------------
*brölar ljudligt*

Medlem sedan aug. 20011 087 inlägg
#16

a just fan ja sidor blir ju = select count(*) from meddelanden where fran = '" & session("member") & "' and franv = 'visa'

d va ju inte det jag ville ha utan hur många inlägg den fick fram, hur fixar man det? :o)

*tabbar mig hela tiden*

------------------
*brölar ljudligt*

Medlem sedan dec. 200012 464 inlägg
#17
numberOfPages = (recset.recordCount -1)/intPageSize + 1

------------------
essentitia preter non sans multiplicandum

Medlem sedan mars 20002 836 inlägg
#18
If CLng(intPage) <= RecSet.PageCount Then
Response.Write "<A href.....

cya,
PatrikB

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

[Redigerat av PatrikB den 30 jan 2002]

Medlem sedan aug. 20011 087 inlägg
#19

patrik b din kon myskar sig rejält..

fel

Körningsfel i Microsoft VBScript fel '800a000d' 

Inkompatibla typer: 'CLng' 

/StajlLinks 1.0/messbox.asp, rad 109

------------------
*brölar ljudligt*

Medlem sedan mars 20002 836 inlägg
#20

vad har intPage för värde?

cya,
PatrikB

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

268 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)