webForumDet fria alternativet

Problem med paging

22 svar · 470 visningar · startad av Qimen

QimenMedlem sedan juni 20015 009 inlägg
#1

Hej

Har fått problem med ett paging script som inte vill funka numera då jag använder mysql istället för access.

<%
sida = TRIM( Request( "sida" ) )
	If sida = "" Then sida = 1

RecSet.PageSize = 10
RecSet.AbsolutePage = sida

Do until RecSet.EOF OR rowCount = RecSet.PageSize
	rowCount = rowCount + 1

color = color+1

	If color mod 2 = 0 then
		bgcolor="#ffffff"
	Else
		bgcolor="#cccccc"	
	End If
%>

och sedan för sidnumreringen:

<%
If RecSet.PageCount > 1 Then 

For a = 1 to RecSet.PageCount
If a <> cINT( sida ) Then 
Response.Write "<a href='medlemmar.asp?sida="& a &"'>"& a &"</a>"
Else 
Response.Write "<b>"&a&"</b>"

End If 
Next
End If

Jag tror problemmet ligger vid RecSet.AbsolutePage = sida
Hur kan jag lösa detta?

SebbeMedlem sedan jan. 20032 285 inlägg
#2
sida = Trim(Request.QueryString("sida"))
sida = CInt(sida)

Det kanske gör något? :)

QimenMedlem sedan juni 20015 009 inlägg
#3

Var ska jag lägga in den/ersätta med?

SebbeMedlem sedan jan. 20032 285 inlägg
#4

Ersätt

sida = TRIM( Request( "sida" ) )

med det. :)

QimenMedlem sedan juni 20015 009 inlägg
#5

hmm :l
Inkompatibla typer: 'CInt'

SebbeMedlem sedan jan. 20032 285 inlägg
#6

Det här då?

sida = Trim(Request.QueryString("sida"))
If IsNumeric(sida) Then
  sida = CInt(sida)
Else
  sida = 1
End If
QimenMedlem sedan juni 20015 009 inlägg
#7

Hmmm men alltså problemmet kvarstår ju vid:
RecSet.AbsolutePage = sida
Där den får problem.
Objektet eller providern kan inte utföra den begärda åtgärden.

SebbeMedlem sedan jan. 20032 285 inlägg
#8

Hur öppnar du ditt recordset?

QimenMedlem sedan juni 20015 009 inlägg
#9

RecSet.Open SQL, Connect, 3,3 ?

SebbeMedlem sedan jan. 20032 285 inlägg
#10

Jag tror nog att det går bättre med

RecSet.Open SQL, Connect, 1, 3

:)

QimenMedlem sedan juni 20015 009 inlägg
#11

hmm nu får jag inget fel, och dem visar så många som jag ställt in men jag får inte upp sidnumreringen?

SebbeMedlem sedan jan. 20032 285 inlägg
#12

Kör med

sida = TRIM( Request( "sida" ) )
	If sida = "" Then sida = 1

istället för min kod, så ska det nog gå bra. :)

LarsGMedlem sedan dec. 200012 464 inlägg
#13
recset.cursorLocation = 3 ' adUseClient
RecSet.Open SQL, Connect, 3,3
QimenMedlem sedan juni 20015 009 inlägg
#14

LarsG skrev:

recset.cursorLocation = 3 ' adUseClient
RecSet.Open SQL, Connect, 3,3

--> Dataprovidern eller annan tjänst returnerade en E_FAIL-status.
/spel/secure/medlemmar.asp, line 120

rad 120:

If RecSet.PageCount > 1 Then
LarsGMedlem sedan dec. 200012 464 inlägg
#15

Jaha, då vet jag inte. har aldrig set det meddelandet förut.

Kan du inte skriva om alltihop med hjälp av limit?

QimenMedlem sedan juni 20015 009 inlägg
#16

Ajdå:OO :r
Vet inte hur jag ska skriva om det då.

mikulMedlem sedan aug. 20013 824 inlägg
#17

.AbsolutPage funkar väll inte äns mot MySQL, eller har jag fel?
Använd SQL-funktionen limit. ;)

mikulMedlem sedan aug. 20013 824 inlägg
#18

Detta borde funka ganska bra...

postPerSida = 10
if not Isnumeric(request.querystring("page")) Or request.querystring("page") = "" Then
	sida = 1
else
	sida = cInt(request.querystring("page"))
end if

set connect = server.createObject("ADODB.Connection")
connect.open "Driver=MySql;server=***;user=***;pwd=***;database=***"

Query = "Select * From tbl limit " & (sida - 1) * postpersida & ", " & postpersida
set rs = connect.execute(query)

while not rs.eof
	response.write rs("fld") & "<br>"
	rs.movenext
wend

set rs = connect.execute("Select Count(*) from tbl")
antalposter = rs(0)
rs.close : set rs = nothing

response.write "<br>"
For i = 1 to cint(antalposter-posterpersida) step posterpersida
	if not i = sida Then
		response.write "<a href=""?page=" & i & """>" & i & "</a> "
	else
		response.write " [" & i & "] "
	end if
next
PatrikBMedlem sedan mars 20002 836 inlägg
#19

Jo då, AbsolutePage, PageCount, RecordCount borde funka med .CursorLocation = 3 (dvs ett client-side recordset) mot MySQL.

Har du provat att lägga .AbsolutePage efter att du öppnat recordsetet?

Limit paging blir segare och segare ju fler poster som finns i databasen och ju längre "bort i pagingen" man kommer.

cya,
PatrikB

PatrikBMedlem sedan mars 20002 836 inlägg
#20

En annan sak. Vilken provider används? MyODBC eller MySQL Provider?

cya,
PatrikB

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