22. april 2005 - 16:37Der er
22 kommentarer og 1 løsning
Automatisk "sideskift"
Jeg er ved at lave en side hvor der bliver hentet nogle informationen fra en access database, og det har jeg da også fået lavet, med lidt hjælp fra bl.a. bøger og tuts, men har to problemer som jeg ikke lige kan finde en løsning på. Den ene er at jeg i stedet for at alle poster bare bliver listet på en lang række gerne ville have at der kun bliver vist f.eks. fem poster pr. side, og der så er en næste/forrige knap. Nogen der kan hjælpe..?
Her er den kode jeg har til at vise informationerne fra database, jeg vil så gerne have at den ikke bare looper til den er færdig, men viser et bestemt antal poster pr. side:
<%Do while not objRS.EOF If objRS("hp") = true then %> <tr> <td><% response.write objRS("id")%></td> <td><% response.write objRS("nvn")%></td> <td><% response.write objRS("mdl")%></td> <td><img src="<% response.write objRS("pic")%>"></td> <td><% response.write objRS("hp")%></td> </tr> <% End If objRS.MoveNext Loop %>
Danmark vil mindske afhængigheden af globale techgiganter, men det kræver mere end politiske formuleringer og strategier, understreger PROSA’s formand Niels Bertelsen.
Nå... fandt måske noget selv! Det må jeg hellere lige prøve.. Men hvis nogen har en mere eller mindre færdig kode, som de vil bytte for nogle point, så er I stadig velkomne..
Google er min ven, men man skal være sikker på at man spørger ham om det rigtige, ellers giver han nogle ret ubrugelige svar...
Det var det jeg fandt ud af at det hed ;-) Lidt nemmere at finde det, når man har ordet for det... Jeg kan dog ikke få det til at virke.. Har prøvet lidt forskelligt, men er ret ny inden for ASP, så fejlen ligger nok i mine skills - eller mangel på samme.
Jeg prøvede nemlig at copy/paste fra en side samt rette lidt i det, men det er ikke alt hvad der står som jeg kender funktionen af eller kan gennemskue... Derfor kan der sagtens være noget som står forkert, slet ikke burde være der eller noget som burde være der og ikke står der..
Jeg har prøvet lidt forskelligt, og endte med at have rodet det her sammen, som sagt med lidt fra internettet samt lidt panik forsøg fra egen side.. Hvor langt ved siden af er det? Koden:
<!--#include file="adovbs.inc"--> <% intPage = Request("page") If isNumeric(intPage) = False Or intPage < 1 Then intPage = 1 End If
Dim Myconn, objRS Set MyConn = Server.CreateObject("ADODB.Connection") Myconn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0; Data Source=" & server.MapPath("test.mdb") & ";" Set objRS = Server.CreateObject("ADODB.Recordset")
Har læst "artiklen", og prøvet at lege med det... Det var faktisk det jeg startede ud med i overstående kode, men da jeg så skulle sætte mit eget ind gik det galt, så jeg prøvede at ændre på nogle ting, og flytte lidt rundt...
Hvordan skal jeg klone koden i artiklen med min kode?
<!--#include file="adovbs.inc"--> <%
Dim Myconn, objRS Set MyConn = Server.CreateObject("ADODB.Connection") Myconn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0; Data Source=" & server.MapPath("test.mdb") & ";" Set objRS = Server.CreateObject("ADODB.Recordset")
Har måske nok lavet en eller anden fejl et eller andet sted eller sat noget forkert sammen, så derfor virkede det ikke... Da jeg jo som sagt er rimelig ny inden for ASP kunne jeg ikke lige finde nogle fejl, og prøvede mig lidt frem, og kom frem til det I kan se ovenfor.
<%Do while not objRS.EOF If objRS("hp") = true then %> <tr> <td><% response.write objRS("id")%></td> <td><% response.write objRS("nvn")%></td> <td><% response.write objRS("mdl")%></td> <td><img src="<% response.write objRS("pic")%>"></td> <td><% response.write objRS("hp")%></td> </tr> <% End If
Så vil den lige pludselig ikke vise side to.. Det virker hvis jeg bare copy/paster koden fra artiklen, jo, men jeg vil gerne have at den kun viser posten når "hp" = true...
Mit første forsøg gav denne kode:
<html><head> <title>Paging af et recordset</title> </head><body>
<table border="1"> <% intPage = Request("page") If isNumeric(intPage) = False Or intPage < 1 Then intPage = 1 End If
Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT id, nvn, mdl, pic, hp FROM produkt" strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("test.mdb") rs.Open strSQL, strDSN, 1 If Not (rs.BOF Or rs.EOF) Then rs.PageSize = 5 rs.AbsolutePage = intPage intRecCount = rs.PageSize intPageCount = rs.PageCount Response.Write "<p><b>Side " & intPage & " af " & intPageCount & "</b></p>" Do While Not rs.EOF And intRecCount > 0
<% End If intRecCount = intRecCount - 1 rs.MoveNext Loop End If rs.Close Set rs = Nothing %> </table> <% Response.Write "<p>Gå til side " For intNum = 1 To intPageCount Response.Write "<a href=paging.asp?page=" & intNum & ">" & intNum & "</a> " Next
Response.Write "<p>" If Clng(intPage) > 1 Then Response.Write "<a href=paging.asp?page=" & intPage - 1 & "><<</a>" Else Response.Write "<<" End If
Response.Write " "
If Clng(intPage) < Clng(intPageCount) Then Response.Write "<a href=paging.asp?page=" & intPage + 1 & ">>></a> " Else Response.Write ">>" End If %>
</body></html>
Det virker også umiddelbart fint, men den kan ikke finde side to...
Et andet problem.. Den tager godt nok fem poster pr. side, men den tæller dem med som den ikke viser.. Det vil sige at den viser kun fire på den første side da den ene er false... Kan man ikke lave så alle dem der er false, ikke bliver talt med?
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.