Avatar billede nidyahou Praktikant
24. januar 2006 - 18:50 Der er 13 kommentarer og
1 løsning

paging med MySQL og ASP - hvordan?

hej. Når jeg åbenbart ikke kan brude ADODB.RecordSet - hvad må jeg så. Er der nogen der kan give en overskuelig kode som jeg kan bruge når jeg pager MySQL Databaser?

Jeg vil gerne have så jeg kan have en seperat fil der hedder connection.asp for overblikkets - tiden og pladsens skyld.
Avatar billede nielle Nybegynder
24. januar 2006 - 19:38 #1
===== liste.asp =====

<%
' Antal resultater pr. side.
antalPrSide = 20

' Udregn hvor mange resultater der er i alt.
sql = "SELECT count(*) AS antalIAlt FROM dinTabel";
Set rs = Conn.Execute(sql)
antalIAlt = rs("antalIAlt")

' Udregn hvor vi starter henne - offsettet.
offset = "" & Request.QueryString("offset")
If offset = "" Then offSet = "0"
offset = CInt(offset)

' Udtræk antalPrSide resultater - startende ved offset.
sql = "SELECT ditFelt1, ditFelt2 FROM dinTabel ORDER BY id ASC LIMIT " & offset & ", " & antalPrSide;
Set rs = Conn.Execute(sql)

' Udskriv dem.
Do While Not rs.Eof
    Response.Write "Dine data: " & rs("ditFelt1") & " " & rs("ditFelt2") & "<br>"
    rs.MoveNext
Loop

' Udskriv et Forrige-link hvis vi ikke er ved starten.
If offset > 0 Then
    Response.Write "<a href='liste.asp?offset=" & offset-antalPrSide & "'>Forrige</a>"
End If

' Udskrive et link for Side 1, 2, 3, ...
offsetTemp = 0
side = 1
Do While offset2<antalIAlt
    Response.Write "<a href='liste.asp?offset='" & offsetTemp & "'>" & side & "</a>"
    offsetTemp = offsetTemp + antalPrSide
    side = side + 1
Loop

' Udskriv et Næste-link hvis vi ikke er ved enden.
If offset+antalPrSide < antalIAlt Then
    Response.Write "<a href='liste.asp?offset=" & offset+antalPrSide & "'>Næste</a>"
End If
%>
Avatar billede nidyahou Praktikant
24. januar 2006 - 21:42 #2
sql = "SELECT count(*) AS antalIAlt FROM Nyheder";

Får fgejl der - den skriver expected end of statement. Hvad er galt?
Avatar billede nielle Nybegynder
24. januar 2006 - 21:52 #3
Fjern ;-tegnet - min fejl.
Avatar billede nielle Nybegynder
24. januar 2006 - 21:53 #4
... og det skal også fjernes fra enden af:

sql = "SELECT ditFelt1, ditFelt2 FROM dinTabel ORDER BY id ASC LIMIT " & offset & ", " & antalPrSide;
Avatar billede nidyahou Praktikant
24. januar 2006 - 21:54 #5
efter at have rettet forskellige fejl til får jeg "type mismacth line 85"... linie 85 indeholder:
Do While offset2<antalIAlt
Hvorfor mon =) ?
Avatar billede nielle Nybegynder
24. januar 2006 - 22:08 #6
Lidt underligt, men du kan prøve at ændre:

antalIAlt = rs("antalIAlt")

- til:

antalIAlt = CInt(rs("antalIAlt"))
Avatar billede nidyahou Praktikant
24. januar 2006 - 22:10 #7
der manglede naturligvis cint(antalIALT)

However - still problems. Koden ser nu sådan ud:

strSQL = "SELECT * FROM Nyheder Order by `Date` Desc"
%>
<!--#include file="../../Database/Connect.asp"-->
<%
' Antal resultater pr. side.
antalPrSide = 20

' Udregn hvor mange resultater der er i alt.
sql = "SELECT count(*) AS antalIAlt FROM Nyheder"
Set rs = Conn.Execute(sql)
antalIAlt = rs("antalIAlt")
antalIAlt = cint(antalIALT)

' Udregn hvor vi starter henne - offsettet.
offset = "" & Request.QueryString("offset")
If offset = "" Then offset = "0"
offset = CInt(offset)

' Udtræk antalPrSide resultater - startende ved offset.
sql = "SELECT * FROM Nyheder ORDER BY `Date` LIMIT " & offset & ", " & antalPrSide
Set rs = Conn.Execute(sql)

' Udskriv dem.
Do While Not rs.Eof
%>
<table width="460" border="1" bgcolor="#009933" bordercolor="#000000" class="news">
  <tr>
    <td width="209" bgcolor="#336600"><center><b><%=rs("Headline")%></b></center></td>
   
    <td width="185" bgcolor="#336600"><div align="right"><%=rs("Date")%></div></td>
  </tr>
  <tr>
    <td colspan="2">
        <table width="460" border="0" cellspacing="0" cellpadding="0" class="article"  bgcolor="#006600">
          <tr>
            <td>
                <center><%=rs("New")%></center></td>
          </tr>
          <tr>
            <td><div align="right"><i>/<%=rs("Writer")%></i></div></td>
          </tr>
          <% ' admin ability
        if Session.Contents("user") = "Danelund" then
        strID = rs("Id")%>
          <%="<a href='Delete.asp?id=" & strID & "'>Delete</a>"%>&nbsp;&nbsp;&nbsp;&nbsp;<%="<a href='Modify.asp?id=" & strID & "'>Modify</a>"%>
          <% end if %>
        </table>
      </td>
  </tr>
</table>
<p></p>
<%
rs.MoveNext
Loop

' Udskriv et Forrige-link hvis vi ikke er ved starten.
If offset > 0 Then
    Response.Write "<a href='liste.asp?offset=" & offset-antalPrSide & "'>Forrige</a>"
End If

' Udskrive et link for Side 1, 2, 3, ...
offsetTemp = 0
side = 1
Do While offset < antalIAlt
    Response.Write "<a href='liste.asp?offset='" & offsetTemp & "'>" & side & "</a>"
    offsetTemp = offsetTemp + antalPrSide
    side = side + 1
Loop

' Udskriv et Næste-link hvis vi ikke er ved enden.
If offset+antalPrSide < antalIAlt Then
    Response.Write "<a href='liste.asp?offset=" & offset+antalPrSide & "'>Næste</a>"
End If


Men jeg får scrip Timeout - den når aldrig at hente
Avatar billede nielle Nybegynder
24. januar 2006 - 22:27 #8
Sådan:

' Udskrive et link for Side 1, 2, 3, ...
offsetTemp = 0
side = 1
Do While offsetTemp < antalIAlt
    Response.Write "<a href='liste.asp?offset='" & offsetTemp & "'>" & side & "</a>"
    offsetTemp = offsetTemp + antalPrSide
    side = side + 1
Loop
Avatar billede nidyahou Praktikant
24. januar 2006 - 22:33 #9
nu kan jeg se dewn, men linket til siderne duer ikke... der står offset= og så ikke mere... Hvert fald når jeg klikker på 1 som er den eneste side der er... du kan vist godt droppe et svar med hvis du har en løsning på mit sidste problem... ellers kan du også bare droppe svar :)
Avatar billede nielle Nybegynder
24. januar 2006 - 22:36 #10
Peøv lige dette i stedet:

' Udskrive et link for Side 1, 2, 3, ...
offsetTemp = 0
side = 1
Do While offsetTemp < antalIAlt
    Response.Write "<a href='liste.asp?offset=" & offsetTemp & "'>" & side & "</a>"
    offsetTemp = offsetTemp + antalPrSide
    side = side + 1
Loop

Det er måske ikke lige til at se det, men der er et '-tegn mindre end i 24/01-2006 22:27:45. Og det gør nok en vis forskel. :^)
Avatar billede nidyahou Praktikant
24. januar 2006 - 22:42 #11
and amazingly that does the trick... works for me... muchas gricias compadre
Avatar billede nielle Nybegynder
24. januar 2006 - 22:42 #12
... og så får du et svar :^)
Avatar billede nidyahou Praktikant
24. januar 2006 - 23:26 #13
jeg var vist lige hurtig nok :P når jeg trykker siger den "offset=0" og så kommer der bare "siden kan ikke vises"... Det undrer mig, hvorfor mon?
Avatar billede nidyahou Praktikant
24. januar 2006 - 23:32 #14
jeg slår lige øverste etage til... idioten her havde jo glemt at ændre liste.asp til den aktuelle side... My God I Haven't slept much last night
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