Avatar billede mekaniker Nybegynder
28. november 2001 - 13:11 Der er 10 kommentarer og
1 løsning

Paging og Request.Querystring

Jeg har en asp-side som lister filmkatekorier op, som ser sådan ud:
<%
Set myConn = Server.CreateObject(\"ADODB.Connection\")
myConn.Open \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"Film.mdb\")

strSQL = \"SELECT * FROM Varegrupper\"
set rs = myconn.execute(strSQL)

Do
    Id = rs(\"Id\")
    Varegruppe = rs(\"Varegruppe\")
    Varegruppebeskrivelse = rs(\"Varegruppebeskrivelse\")

    Gruppelink = \"<a href=paging.asp?Id=\" & rs(\"Id\") & \">\" & Varegruppe & \"</a>\"

    Response.Write \"<li>\" & Gruppelink & \"</li>\"

rs.MoveNext
Loop While Not rs.EOF
myconn.Close
Set myconn = Nothing
%>

Denne har jeg så prøvet at kombinere med denne paging til selve filmene, men her går selvfølgelig noget galt når man trykke på linket til næste side.
Dette sker selvfølgelig da Request.Querystring ikke får nogen værdi.

\"paging.asp\" :
<!-- #include file=\"adovbs.inc\" -->
<%
  \' Først finder vi ud af hvad vores paging side er på nu
  Page = Trim(Request(\"page\"))
  If Page = \"\" Then Page = 1

  \' Standard DSNless connection til databasen db.mdb
  Set Con = Server.CreateObject(\"ADODB.Connection\")
  DBPath = \"DBQ=\" & server.mappath(\"Film.mdb\")
  Con.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; \" & DBPath

  \' Vores SQL-forespørgsel vi ønsker paget
  Sql = \"SELECT * FROM Film where Varegruppe_id=\" & Request.Querystring(\"Id\")

  \' Så begynder det sjove - her sætter vi vores recordset op...
  \' Jeg vil ikke gennemgå alt hvad recordsetkoden gør.
  \' Kig evt. i en dokumentation hvis du ikke helt er med på hvad der er hvad... :-)
  Set rs = Server.CreateObject(\"ADODB.Recordset\")
  rs.CursorType = adOpenStatic

  \' Hvor mange records vil have på hver side... her er den sat til 10
  rs.PageSize = 10
  rs.Open(Sql), Con

  \' Her laver jeg et lille trick der gør at hvis ens forespørgsel er tom,
  \' så får man ikke en fejl
  If Not rs.EOF Then
    rs.AbsolutePage = cINT(Page)
    rowCount = 0
  End If
%>
<html>
<head>
    <title>Film</title>
<%
\' her laver vi en løkke der henter vores records ud
While Not rs.EOF and rowCount < rs.PageSize
  Response.write rs(\"tittel\")
  Response.write \"<br>\"
  rowCount = rowCount + 1
  rs.Movenext
Wend

If rs.PageCount <> 1 Then
  For i = 1 to rs.PageCount
    response.write \"<a href=\"\"paging.asp?page=\" & i & \"\"\">\"& i &\"</a>\"
  Next
End If
%>
</body>
</html>

Er der nogle eksperter, som kan omskrive dette så det kommer til at virke...??

En anden ting er disse link til de næste sider, kan man lave dem således: <<prev. 1 2 3 next>>.
Sådan som det virker nu står der bar 123, og så er der streg under dem alle.
Jeg ville gerne have det sådan at der ikke var streg under den side man er på.
Avatar billede carpediem Nybegynder
28. november 2001 - 13:22 #1
If rs.PageCount <> 1 Then
  For i = 1 to rs.PageCount
    If i = page Then
      Response.Write i
    Else
      response.write \"<a href=\"\"paging.asp?page=\" & i & \"\"\">\"& i &\"</a>\"
    End If
  Next
End If
Avatar billede nute Nybegynder
28. november 2001 - 13:25 #2
carpediem >> du mangler å sende over søkeparameteret..

prøv å bytt ut denne:

If rs.PageCount <> 1 Then
  For i = 1 to rs.PageCount
    response.write \"<a href=\"\"paging.asp?page=\" & i & \"\"\">\"& i &\"</a>\"
  Next
End If

med denne:

If rs.PageCount <> 1 Then
  For i = 1 to rs.PageCount
    if( i = CInt( Page ) ) then
      response.write \"<b>\" & i & \"</b>
    else
      response.write \"<a href=\"\"paging.asp?page=\" & i & \"&Id=\" & Request.Querystring(\"Id\") & \"\"\">\"& i &\"</a>\"
    end if
  Next
End If

/nute
Avatar billede nordclc Nybegynder
28. november 2001 - 13:26 #3
Avatar billede mekaniker Nybegynder
28. november 2001 - 13:52 #4
>>Nute, du klarer sku\' altid problemerne.

Kan man få et lille mellemrum ind i mellem siderne numrene, så det ikke er en lang understregning...??
Kan man også lave det med <<prev. og next>>

på forhånd tak

//Mekaniker

Avatar billede nute Nybegynder
28. november 2001 - 13:55 #5

if( CInt( Page ) > 1 ) then
  response.write \"<a href=\"\"paging.asp?page=\" & ( CInt(page) - 1 )& \"&Id=\" & Request.Querystring(\"Id\") & \"\"\"><< Previous</a>&nbsp;\"
end if
If rs.PageCount <> 1 Then
  For i = 1 to rs.PageCount
    if( i = CInt( Page ) ) then
      response.write \"<b>\" & i & \"</b>
    else
      response.write \"<a href=\"\"paging.asp?page=\" & i & \"&Id=\" & Request.Querystring(\"Id\") & \"\"\">\"& i &\"</a>&nbsp;\"
    end if
  Next
End If

if( CInt( Page ) < rs.PageCount ) then
  response.write \"<a href=\"\"paging.asp?page=\" & ( CInt(page) + 1 )& \"&Id=\" & Request.Querystring(\"Id\") & \"\"\">Next >></a>&nbsp;\"
end if
Avatar billede mekaniker Nybegynder
28. november 2001 - 14:32 #6
Hej nute
Nu når du er så sej.
Kan du så også lave denne som jeg kan have stående i toppen af tabellen.

Viser X til X af ialt X.

Du skal nok få nogle flere point.

TAK

//Mekaniker
Avatar billede nute Nybegynder
28. november 2001 - 14:41 #7
hmm...sej og sej...det kommer vel an på øyet som ser ;-)

du kan jo legge dette i toppen...

<%
tmpFrom  = ( ( CInt( Page ) - 1 ) * 10 )+1
tmpTo    = Page * rs.PageSize
tmpTotal = rs.PageSize * rs.RecordCount
response.write \"Viser \" & tmpFrom & \" til \" & tmpTo & \" av ialt \" & tmpTotal & \"<br>\"
%>
Avatar billede mekaniker Nybegynder
28. november 2001 - 15:00 #8
Hej Nute
Jeg er ked af at sige det, men det virker altså ikke.
Jeg har i øjeblikket kun 5 poster i min db
hvis jeg laver det sådan at den kun viser 2 ad gangen, står der \"viser 1 til 2 af ialt 10\"
Hvis jeg så trykker på next, skriver den \"Viser 11 til 4 av ialt 10\"

//Mekaniker
Avatar billede nute Nybegynder
28. november 2001 - 16:06 #9
hehe...det var vel for mye forlangt å få det til å fungere allerede på første forsøk ?! ;-)

denne linje:

tmpFrom  = ( ( CInt( Page ) - 1 ) * 10 )+1

skal iallefall være:

tmpFrom  = ( ( CInt( Page ) - 1 ) * rs.PageSize ) + 1

og denne linje:

tmpTotal = rs.PageSize * rs.RecordCount

skal jo bare være:

tmpTotal = rs.RecordCount

hjelper det deg litt nærmere løsningen ?





Avatar billede mekaniker Nybegynder
28. november 2001 - 17:34 #10
Hej Nute
Det virker stadig ikke helt.
Jeg har i øjeblikket kun 5 poster i min db.

hvis jeg laver det sådan at den kun viser 2 ad gangen, står der \"viser 1 til 2 af ialt 5\"

Hvis jeg så trykker på next, skriver den \"Viser 3 til 4 av ialt 5\"

Hvis jeg så trykker på next igen, skriver den \"Viser 5 til 6 av ialt 5\"

//Mekaniker 
Avatar billede nute Nybegynder
28. november 2001 - 17:40 #11
oki...så prøv å bytt denne linje:

tmpTo    = Page * rs.PageSize

med:

if( (Page * rs.PageSize) >= rs.RecordCount ) then
  tmpTo = rs.RecordCount
else
  tmpTo    = Page * rs.PageSize
end if
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester