Avatar billede pokejohn Nybegynder
22. april 2005 - 16:37 Der 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
%>
Avatar billede pokejohn Nybegynder
22. april 2005 - 17:35 #1
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...
Avatar billede wilweb Nybegynder
22. april 2005 - 20:03 #2
Når du er igang med at søg efter en løsning så prøv at søge efter 'pageing'
Avatar billede wilweb Nybegynder
22. april 2005 - 20:05 #3
Prøv evt at se mit spm : http://eksperten.dk/spm/438400

Måske kan du bruge det!
Avatar billede pokejohn Nybegynder
22. april 2005 - 22:36 #4
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")
   
   
   
   
objRS.Open "produkt", MyConn, , , adCmdTable

%>
   
   
<html>
<head>
    <meta name="GENERATOR" Content="ASP Express 2.0">
    <title>produkter</title>
</head>
<body>

<table border="1">
<%
  If Not (objRS.BOF Or objRS.EOF) Then
  objRS.PageSize = 10
  objRS.AbsolutePage = intPage
  intRecCount = objRS.PageSize
  intPageCount = objRS.PageCount
%>
<tr>
<td>
<%
  Response.Write "<p><b>Side " & intPage & " af " & intPageCount & "</b></p>"
%>
</td>
</tr>
<%
  Do while not objRS.EOF And intRecCount > 0
  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>
<%
intRecCount = intRecCount - 1
End If
    objRS.MoveNext
Loop
End If
%>
<tr>
<td>
<%
Response.Write "<p>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 & ">&lt;&lt;</a>"
Else
  Response.Write "&lt;&lt;"
End If

Response.Write "&nbsp;"

If Clng(intPage) < Clng(intPageCount) Then
  Response.Write "<a href=paging.asp?page=" & intPage + 1 & ">&gt;&gt;</a> "
Else
  Response.Write "&gt;&gt;"
End If
%>
</td>
</tr>
</table>


</body>
</html>

<%

objRS.close
Set objRS = Nothing
MyConn.Close
Set MyConn = Nothing

%>

PS.. Jeg får denne fejl:

"
ADODB.Recordset error '800a0cb3'

Current Recordset does not support bookmarks. This may be a limitation of the provider or of the selected cursortype.

/lordpoke/index.asp, line 32
"

Newbie på dybt vand søger hjælp :S
Avatar billede wilweb Nybegynder
23. april 2005 - 00:31 #5
Det er fordi filen adovbs.inc mangler. Ser lige hvad jeg kan finde ud af...
Avatar billede wilweb Nybegynder
23. april 2005 - 00:35 #6
Avatar billede pokejohn Nybegynder
23. april 2005 - 00:35 #7
Jeg har filen adovbs.inc.. Jeg mener ikke at den burde have noget med det at gøre eller skal der ændres noget i den?
Avatar billede wilweb Nybegynder
23. april 2005 - 00:40 #8
brug den i linket den virker!
Avatar billede pokejohn Nybegynder
23. april 2005 - 00:40 #9
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")
   
   
   
   
objRS.Open "produkt", MyConn, , , adCmdTable

%>
   
   
<html>
<head>
    <meta name="GENERATOR" Content="ASP Express 2.0">
    <title>produkter</title>
</head>
<body>

<table border="1">

<%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
%>   

</table>






</body>
</html>

<%

objRS.close
Set objRS = Nothing
MyConn.Close
Set MyConn = Nothing

%>
Avatar billede pokejohn Nybegynder
23. april 2005 - 00:43 #10
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.
Avatar billede wilweb Nybegynder
23. april 2005 - 01:13 #11
'så skal du bare rette databasen ville jeg mene!
'Det er den fra artiklen...


<html><head>
<title>Paging af et recordset</title>
</head><body>

<%
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 Links"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("database/pageing.mdb")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
  rs.PageSize = 10
  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
    Response.Write rs("id") & "  -----  " & rs("nvn") & "  -----  " & rs("mdl") & "  -----  " & rs("pic") &  "  -----  " & rs("hp") & "<br>"
  intRecCount = intRecCount - 1
  rs.MoveNext
  Loop
End If
rs.Close
Set rs = Nothing

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 & ">&lt;&lt;</a>"
Else
  Response.Write "&lt;&lt;"
End If

Response.Write "&nbsp;"

If Clng(intPage) < Clng(intPageCount) Then
  Response.Write "<a href=paging.asp?page=" & intPage + 1 & ">&gt;&gt;</a> "
Else
  Response.Write "&gt;&gt;"
End If
%>

</body></html>
Avatar billede wilweb Nybegynder
23. april 2005 - 01:14 #12
Tabellen i databasen hedder 'Links'
Avatar billede pokejohn Nybegynder
23. april 2005 - 12:26 #13
Jo men problemet er når jeg sætter dette ind:

<%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
   
if rs("hp") = true then
%>
<tr>
    <td><% response.write rs("id")%></td>
    <td><% response.write rs("nvn")%></td>
    <td><% response.write rs("mdl")%></td>
    <td><img src="<% response.write rs("pic")%>"></td>
    <td><% response.write rs("hp")%></td>
</tr>

<%
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 & ">&lt;&lt;</a>"
Else
  Response.Write "&lt;&lt;"
End If

Response.Write "&nbsp;"

If Clng(intPage) < Clng(intPageCount) Then
  Response.Write "<a href=paging.asp?page=" & intPage + 1 & ">&gt;&gt;</a> "
Else
  Response.Write "&gt;&gt;"
End If
%>


</body></html>

Det virker også umiddelbart fint, men den kan ikke finde side to...
Avatar billede pokejohn Nybegynder
23. april 2005 - 12:27 #14
www.frip.dk/lordpoke

Der kan I se det in action! :D Eller i hvert fald delvist..
Avatar billede wilweb Nybegynder
23. april 2005 - 12:29 #15
hvad hedder din start side?
Avatar billede pokejohn Nybegynder
23. april 2005 - 13:22 #16
Aha...
paging.asp?page=
Burder være
index.asp?page=
:D
Avatar billede pokejohn Nybegynder
23. april 2005 - 13:23 #17
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?
Avatar billede pokejohn Nybegynder
23. april 2005 - 13:30 #18
Det er flot at jeg har siddet og prøvet at rette i alt det andet når det bare var den ene ting... Thumbs up Dennis!
Avatar billede pokejohn Nybegynder
23. april 2005 - 15:26 #19
Gizom, vil du have point? Så lav et svar...
Avatar billede wilweb Nybegynder
23. april 2005 - 19:17 #20
Undskylde jeg var lige en tur væk.
Godt, du fik det til at virke.
Avatar billede pokejohn Nybegynder
23. april 2005 - 20:30 #21
Tak for hjælpen...
Så må jeg lige oprette et nyt spørgesmål med det andet problem, for ellers kan jeg ikke så godt bruge paging.. :S
Avatar billede wilweb Nybegynder
23. april 2005 - 22:00 #22
Jeg ved desværre heller ikke hvor det går galt!
Avatar billede wilweb Nybegynder
23. april 2005 - 22:00 #23
takker iøvrigt for point
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