Avatar billede thomasmyg Nybegynder
15. august 2007 - 23:50 Der er 51 kommentarer og
2 løsninger

10 varelinjer pr. side

Hvordan laver jeg et script smo kun viser 10 varelinjer pr. side, så hvis der fx. er 32 vare der skal vises i en varegruppe så er der 4 sider???
Avatar billede w13 Novice
16. august 2007 - 00:00 #1
Så skal du bruge paging. Noget à la:

nPage = Request("page")
If isNumeric(nPage) = False Or nPage < 1 Then
  nPage = 1
End If

strSQL = "SELECT * FROM [tabel]"
rs.Open strSQL, strDSN, 1

If Not (rs.BOF Or rs.EOF) Then
  rs.PageSize = 20
  rs.AbsolutePage = nPage
  nRecCount = rs.PageSize
  nPageCount = rs.PageCount

  Do While Not rs.EOF And nRecCount > 0

    Response.Write rs("id")

    count = count + 1
    nRecCount = nRecCount - 1
  rs.MoveNext
  Loop

End If

rs.Close
Set rs = Nothing

If NOT nPageCount = 0 AND NOT nPageCount = 1 Then

  Response.Write "Side " & nPage & " af " & nPageCount & "<br />"
  Response.Write "Gå til side "
For nNum = 1 To nPageCount
Response.Write "<a href=""?page=" & nNum & """>" & nNum & "</a>"
Next

If Clng(nPage) > 1 Then
Response.Write "<a href=""?page=" & nPage - 1 & """>&lt;&lt;</a>"
End If

If Clng(nPage) < Clng(nPageCount) Then
Response.Write "<a href=""?page=" & nPage + 1 & """>&gt;&gt;</a>"
End If

End If
Avatar billede thomasmyg Nybegynder
16. august 2007 - 00:08 #2
hvor skal jeg sætte det ind?
Avatar billede w13 Novice
16. august 2007 - 01:06 #3
Jaeh, det skal vel tilpasset med det script, der nu henter fra din database.
Avatar billede thomasmyg Nybegynder
16. august 2007 - 01:16 #4
og den ser sådan her ud lige nu

<%
sql = "SELECT * FROM glasvare WHERE varegruppeID = "& Request.Querystring ("id") &" Order by ID Desc"
set Record = rs.Execute(sql)
%>

<table border="0" cellpadding="20px" width="729px">
    <% do %>
    <tr>
        <td align="center" width="223px"><img src="billeder/varebilleder/<%=Record("billednavn")%>_small.jpg" alt="<%=Record("ID")%>" /></td>
        <td width="433px"><p class="vare"><%=Record("varebeskrivelse")%><br />Billednummer <%=Record("billedID")%><br /><i><%=Record("mængdepris") %></i><br /><br /><a href="default.asp?side=bestilling">Bestilling</a></p></td>
        <td align="center" width="233px"><p class="vare">
        <%
        if Record("pris") = 0 then
            Response.Write "Kontakt for tilbud"
        else
            Response.Write "Kr. "&Record("pris")&",- pr. stk."
        end if
        %></p></td>
    </tr>
    <%
    Record.MoveNext
    loop while not Record.EOF
    %>
</table>
Avatar billede w13 Novice
16. august 2007 - 01:24 #5
muligvis:

<%nPage = Request("page")
If isNumeric(nPage) = False Or nPage < 1 Then nPage = 1

sql = "SELECT * FROM glasvare WHERE varegruppeID = "&Request.Querystring ("id") &" Order by ID Desc"
rs.Open strSQL, strDSN, 1%>

<table border="0" cellpadding="20px" width="729px">
    <%Record.PageSize = 20
  Record.AbsolutePage = nPage
  nRecCount = Record.PageSize
  nPageCount = Record.PageCount
    Do While Not Record.EOF And nRecCount>0%>
    <tr>
        <td align="center" width="223px"><img src="billeder/varebilleder/<%=Record("billednavn")%>_small.jpg" alt="<%=Record("ID")%>" /></td>
        <td width="433px"><p class="vare"><%=Record("varebeskrivelse")%><br />Billednummer <%=Record("billedID")%><br /><i><%=Record("mængdepris") %></i><br /><br /><a href="default.asp?side=bestilling">Bestilling</a></p></td>
        <td align="center" width="233px"><p class="vare">
        <%
        if Record("pris") = 0 then
            Response.Write "Kontakt for tilbud"
        else
            Response.Write "Kr. "&Record("pris")&",- pr. stk."
        end if
        %></p></td>
    </tr>
    <%
  nRecCount = nRecCount - 1
    Record.MoveNext
    loop
    Record.Close
    Set Record = Nothing%>
</table>

<%If Not nPageCount=0 AND NOT nPageCount = 1 Then

  Response.Write "Side " & nPage & " af " & nPageCount & "<br />"
  Response.Write "Gå til side "
  For nNum = 1 To nPageCount
    Response.Write "<a href=""?page=" & nNum & """>" & nNum & "</a>"
  Next

  If Clng(nPage) > 1 Then Response.Write "<a href=""?page=" & nPage - 1 & """>&lt;&lt;</a>"

  If Clng(nPage) < Clng(nPageCount) Then Response.Write "<a href=""?page=" & nPage + 1 & """>&gt;&gt;</a>"

End If
Avatar billede thomasmyg Nybegynder
16. august 2007 - 01:29 #6
Operation is not allowed when the object is open.

/varetest.asp, line 5

5) rs.Open strSQL, strDSN, 1%>
Avatar billede w13 Novice
16. august 2007 - 02:54 #7
Nå ja, den skal så være rs.Open strSQL, strDSN, 1
Avatar billede w13 Novice
16. august 2007 - 02:55 #8
Dammit, Record.Open naturligvis
Avatar billede keysersoze Ekspert
16. august 2007 - 09:59 #9
Det er nok herfra w13 også har sit - men giver det nu alligevel; http://activedeveloper.dk/articles/31/

Det vil være betydelig lettere først at få dette paging-script til at fungere - og så snart det fungerer så begynde at bygge dit eget ind i fremfor omvendt.
Avatar billede thomasmyg Nybegynder
16. august 2007 - 13:03 #10
Samme problem

ADODB.Recordset error '800a0e79'

Operation is not allowed when the object is open.

/varetest.asp, line 6

5) sql = "SELECT * FROM glasvare WHERE varegruppeID = "&Request.Querystring ("id") &" Order by ID Desc"
6) Record.Open strSQL, strDSN, 1
Avatar billede keysersoze Ekspert
16. august 2007 - 13:13 #11
du bliver nødt til at komme med noget mere kode.
Avatar billede thomasmyg Nybegynder
16. august 2007 - 14:03 #12
Jamen så får I det hele.


<%
nPage = Request("page")
If isNumeric(nPage) = False Or nPage < 1 Then nPage = 1

sql = "SELECT * FROM glasvare WHERE varegruppeID = "&Request.Querystring ("id") &" Order by ID Desc"
Record.Open strSQL, strDSN, 1
%>

<table border="0" cellpadding="20px" width="729px">
<%
Record.PageSize = 20
Record.AbsolutePage = nPage
nRecCount = Record.PageSize
nPageCount = Record.PageCount
    Do While Not Record.EOF And nRecCount>0
%>
    <tr>
        <td align="center" width="223px"><img src="billeder/varebilleder/<%=Record("billednavn")%>_small.jpg" alt="<%=Record("ID")%>" /></td>
        <td width="433px"><p class="vare"><%=Record("varebeskrivelse")%><br />Billednummer <%=Record("billedID")%><br /><i><%=Record("mængdepris") %></i><br /><br /><a href="default.asp?side=bestilling">Bestilling</a></p></td>
        <td align="center" width="233px"><p class="vare">
        <%
        if Record("pris") = 0 then
            Response.Write "Kontakt for tilbud"
        else
            Response.Write "Kr. "&Record("pris")&",- pr. stk."
        end if
        %></p></td>
    </tr>
<%
nRecCount = nRecCount - 1
Record.MoveNext
    loop
%>
</table>

<%
If Not nPageCount=0 AND NOT nPageCount = 1 Then

  Response.Write "Side " & nPage & " af " & nPageCount & "<br />"
  Response.Write "Gå til side "
  For nNum = 1 To nPageCount
    Response.Write "<a href=""?page=" & nNum & """>" & nNum & "</a>"
  Next

  If Clng(nPage) > 1 Then Response.Write "<a href=""?page=" & nPage - 1 & """>&lt;&lt;</a>"

  If Clng(nPage) < Clng(nPageCount) Then Response.Write "<a href=""?page=" & nPage + 1 & """>&gt;&gt;</a>"

End If
%>
Avatar billede keysersoze Ekspert
16. august 2007 - 16:06 #13
hvor definerer du Record, strSQL og strDSN?
Avatar billede thomasmyg Nybegynder
16. august 2007 - 20:19 #14
Record bliver defineret i min forbindelse som jeg includere på min default fil og der bliver min vare fil også includeret.

sql bliver defineret i varefilen.

strDSN bliver vist ikke defineret.
Avatar billede keysersoze Ekspert
16. august 2007 - 22:28 #15
sql definerer du ja - ikke strSQL, så du skal ændre navnet et af stederne.

Du skal sørge for at have det hele med - ellers vil det selvfølgelig ikke virke. Tag et ekstra kig på linket og få de manglende ting med.
Avatar billede thomasmyg Nybegynder
16. august 2007 - 22:40 #16
Behøver jeg srtDSN når jeg nu har en forbindelse til min database?
Avatar billede thomasmyg Nybegynder
17. august 2007 - 00:45 #17
Med lidt outside hjælpe er jeg kommet videre, men løbet ind i en ny fejl.
Når jeg prøver og gå videre til næste side får jeg denne her fejl.

Microsoft OLE DB Provider for SQL Server error '80040e10'

No value given for one or more required parameters.

/vare.asp, line 7

5) Set Record = Server.CreateObject("ADODB.RecordSet")
6) sql = "SELECT * FROM glasvare WHERE varegruppeID = "&Request.Querystring ("id") &" Order by ID Desc"
7) Record.Open sql, rs, 1
Avatar billede keysersoze Ekspert
17. august 2007 - 09:30 #18
du skal sørge for at føre alle nødvendige parametre med i dine frem/tilbage links
Avatar billede thomasmyg Nybegynder
17. august 2007 - 23:19 #19
og hvor gør jeg det?
Avatar billede thomasmyg Nybegynder
17. august 2007 - 23:42 #20
Det må være det her du mente jeg skulle rette i, ik'?

<%
If Not nPageCount=0 AND NOT nPageCount = 1 Then

  Response.Write "Side " & nPage & " af " & nPageCount & "<br />"
  Response.Write "Gå til side "
  For nNum = 1 To nPageCount
    Response.Write "<a href=default.asp?side=vare&ID"&Record("varegruppeID")&"?page=" & nNum & """>" & nNum & " </a>"
  Next

  If Clng(nPage) > 1 Then Response.Write "<a href=default.asp?side=vare&ID"&Record("varegruppeID")&"?page=" & nPage - 1 & """>&lt;&lt;</a>"

  If Clng(nPage) < Clng(nPageCount) Then Response.Write "<a href=default.asp?side=vare&ID"&Record("varegruppeID")&"?page=" & nPage + 1 & """>&gt;&gt;</a>"

End If
%>

Hvis det vare det jeg skulle rette i og det er rigtigt, så får jeg følgende fejl:

Microsoft OLE DB Provider for SQL Server error '80040e14'

Incorrect syntax near the keyword 'Order'.

/vare.asp, line 7

5) Set Record = Server.CreateObject("ADODB.RecordSet")
6) sql = "SELECT * FROM glasvare WHERE varegruppeID = "&Request.Querystring ("id") &" Order by ID Desc"
7) Record.Open sql, rs, 1
Avatar billede thomasmyg Nybegynder
18. august 2007 - 01:01 #21
har lige lagt mærke til at når jeg holder musen over linket til side 2 så ser det sådan her ud:

<a href=default.asp?side=vare&ID4?page=2">&gt;&gt;</a> der mangler altså et " tegn lige før default
Avatar billede thomasmyg Nybegynder
18. august 2007 - 17:02 #22
Er I vågnet op?
Avatar billede w13 Novice
18. august 2007 - 17:15 #23
Ja, det er en fejl:

<%
If Not nPageCount=0 AND NOT nPageCount = 1 Then

  Response.Write "Side " & nPage & " af " & nPageCount & "<br />"
  Response.Write "Gå til side "
  For nNum = 1 To nPageCount
    Response.Write "<a href=""default.asp?side=vare&ID"&Record("varegruppeID")&"?page=" & nNum & """>" & nNum & " </a>"
  Next

  If Clng(nPage) > 1 Then Response.Write "<a href=""default.asp?side=vare&ID"&Record("varegruppeID")&"?page=" & nPage - 1 & """>&lt;&lt;</a>"

  If Clng(nPage) < Clng(nPageCount) Then Response.Write "<a href=""default.asp?side=vare&ID"&Record("varegruppeID")&"?page=" & nPage + 1 & """>&gt;&gt;</a>"

End If
%>
Avatar billede thomasmyg Nybegynder
18. august 2007 - 17:24 #24
det problem har jeg selv løst det har jeg bare ikke skrevet, jeg er også mere intresseret i det andet problem som jeg skrev 17/08-2007 23:42:23
Avatar billede w13 Novice
18. august 2007 - 18:16 #25
Ja, du skriver ID"&Record("varegruppeID") og det skal være ID="&Record("varegruppeID")

altså mangler du et =
Avatar billede thomasmyg Nybegynder
19. august 2007 - 00:19 #26
Ja det var vel en af de der fejl man kan kalde for en dummert, men det løser ikke mit problem det giver derimod bare en anden fejl.

Microsoft OLE DB Provider for SQL Server error '80040e10'

No value given for one or more required parameters.
vare.asp, line 7

5) Set Record = Server.CreateObject("ADODB.RecordSet")
6) sql = "SELECT * FROM glasvare WHERE varegruppeID = "& Request.Querystring ("ID") &" Order by ID Desc"
7) Record.Open sql, rs, 1
Avatar billede w13 Novice
19. august 2007 - 03:03 #27
Bliver id overført i adresselinjen, når du ser fejlmeddelelsen?
Avatar billede thomasmyg Nybegynder
19. august 2007 - 10:22 #28
Ja det gør det

adresselinjen ser sådan her ud hvis jeg fx. vælger og gå til side 3
http://glassliberiet.hilsoe.local/default.asp?side=vare&ID=4?page=3
Avatar billede w13 Novice
19. august 2007 - 13:15 #29
Der var fejlen. Der skal ikke stå ID=4?page=3 men ID=4&page=3.
Avatar billede thomasmyg Nybegynder
20. august 2007 - 18:19 #30
ja det var det der skulle til, men når jeg kommer til sidste side får jeg denne her fejl:

Gå til side error '80020009'
/vare.asp, line 43
Avatar billede w13 Novice
20. august 2007 - 18:47 #31
Hvad er det for en linje, helt præcis?
Avatar billede w13 Novice
20. august 2007 - 19:02 #32
Ellers så prøv at udskrive nPageCount på den sidste side.
Avatar billede thomasmyg Nybegynder
20. august 2007 - 19:57 #33
43) Response.Write "<a href=default.asp?side=vare&ID="&Record("varegruppeID")&"&page=" & nNum & ">" & nNum & " </a>"

Hvor havde du tænkt dig jeg skulle udskrive nPageCount?
Avatar billede w13 Novice
21. august 2007 - 00:20 #34
Evt. lige før "Gå til"
Avatar billede thomasmyg Nybegynder
21. august 2007 - 18:51 #35
Der lige nu mulighed for at se fejlen på:

http://glassliberiet.hilsoe.dk/default.asp?side=vare&ID=4

linkt bliver lukket om 24 timer.
Avatar billede w13 Novice
21. august 2007 - 21:09 #36
Det må være denne, der er galt på den:
  For nNum = 1 To nPageCount
    Response.Write "<a href=""default.asp?side=vare&ID"&Record("varegruppeID")&"?page=" & nNum & """>" & nNum & " </a>"
  Next

Prøv at rette til:
  For nNum = 1 To nPageCount
    Response.Write "a"
  Next

Skriver den så a på sidste side eller er der stadig fejl?
Avatar billede thomasmyg Nybegynder
21. august 2007 - 21:15 #37
vil du ha jeg skal erstatte "<a href=""default.asp?side=vare&ID"&Record("varegruppeID")&"?page=" & nNum & """>" & nNum & " </a>" med "a"
Avatar billede thomasmyg Nybegynder
21. august 2007 - 21:17 #38
den skriver a i stedet for side tal, fx. er der 4 sider skriver den aaaa
Avatar billede w13 Novice
21. august 2007 - 21:42 #39
Ok, så er det en af variablerne i:
    Response.Write "<a href=""default.asp?side=vare&ID"&Record("varegruppeID")&"?page=" & nNum & """>" & nNum & " </a>"

Prøv at skrive:
    Response.Write "<a href=""default.asp?side=vare&ID"&Record("varegruppeID")&"?page=virker"">virker</a>"
Avatar billede thomasmyg Nybegynder
21. august 2007 - 21:48 #40
hvad vil du se med den stump kode?
Avatar billede w13 Novice
21. august 2007 - 21:50 #41
En af variablerne fucker på sidste side. Så nu ser vi, om det er nNum. Hvis koden skriver "virker" fire gange, så er det nNum, vi skal rette.
Avatar billede thomasmyg Nybegynder
21. august 2007 - 21:52 #42
kig selv, jeg forstår ikke hvad du vil.

http://glassliberiet.hilsoe.local/default.asp?side=vare&ID=4
Avatar billede thomasmyg Nybegynder
21. august 2007 - 21:53 #43
Avatar billede w13 Novice
21. august 2007 - 22:02 #44
http://glassliberiet.hilsoe.dk/default.asp?side=vare&ID=4&page=4 <-- giver stadig fejl. Ergo var det ikke nok at fjerne nNum-variablen.

Så prøver vi:

    Response.Write "<a href=""default.asp?side=vare&ID=4&page=" & nNum & """>" & nNum & " </a>"

Burde virke!
Avatar billede thomasmyg Nybegynder
21. august 2007 - 22:10 #45
ikke helt

http://glassliberiet.hilsoe.dk/default.asp?side=vare&ID=8

kig på denne side og klik dig videre til side 2
Avatar billede thomasmyg Nybegynder
23. august 2007 - 23:05 #46
Har du opgivet og hjælpe mig eller tager du bare en tænke pause?
Avatar billede w13 Novice
24. august 2007 - 02:06 #47
Jeg ved ikke helt.. Jeg kan ikke lige greje den.. Vi fjerner Response.Write-linjen og den virker. Vi fjerner variablerne i linjen og den virker ikke..
Avatar billede keysersoze Ekspert
25. august 2007 - 15:49 #48
er det response.writen der er linie 45?
Avatar billede thomasmyg Nybegynder
25. august 2007 - 16:43 #49
Response.Write "<a href=""default.asp?side=vare&ID="&Record("varegruppeID")&"&page=" & nNum & """>" & nNum & " </a>"
Avatar billede thomasmyg Nybegynder
25. august 2007 - 18:08 #50
Der er noget jeg ikke forstår ved nRecCount
Hvis I lige kigger på http://glassliberiet.hilsoe.dk/default.asp?side=vare&ID=8 og går videre til side 2.

På side 1 er nRecCount = 0 men på side 2 er den = 4, er der ikke noget galt.

Det under mig bare da der i løkke er denne her linje >> nRecCount = nRecCount - 1
<< som trækker 1 fra nRecCount for hver gang løkken er blevet kørt igennem.
Avatar billede keysersoze Ekspert
25. august 2007 - 19:28 #51
På sidste side er Record-objektet eof (det bliver du når dit loop er kørt til ende) og du kan derfor ikke hive data fra det igen. Det letteste vil derfor være hvis du hiver ID fra din querystring i stedet for fra databasen.
Avatar billede thomasmyg Nybegynder
25. august 2007 - 19:38 #52
Ja sørme så, det virker.
w13 du må også gerne ligge et svar.

hele min kode ser nu sådan her ud:

<%
nPage = Request("page")
If isNumeric(nPage) = False Or nPage < 1 Then nPage = 1

Set Record = Server.CreateObject("ADODB.RecordSet")
sql = "SELECT * FROM glasvare WHERE varegruppeID="&Request.Querystring ("ID")&" Order by ID Desc"
Record.Open sql, rs, 1
%>

<table border="0" cellpadding="20px" width="729px">
<%
Record.PageSize = 5
Record.AbsolutePage = nPage
nRecCount = Record.PageSize
nPageCount = Record.PageCount
    Do While Not Record.EOF And nRecCount>0
%>
    <tr>
        <td align="center" width="223px"><img src="billeder/varebilleder/<%=Record("billednavn")%>_small.jpg" alt="<%=Record("ID")%>" /></td>
        <td width="433px"><p class="vare"><%=Record("varebeskrivelse")%><br />Billednummer <%=Record("billedID")%><br /><i><%=Record("mængdepris") %></i><br /><br /><a href="default.asp?side=bestilling">Bestilling</a></p></td>
        <td align="center" width="233px"><p class="vare">
        <%
        if Record("pris") = 0 then
            Response.Write "Kontakt for tilbud"
        else
            Response.Write "Kr. "&Record("pris")&",- pr. stk."
        end if
        %></p></td>
    </tr>
<%
nRecCount = nRecCount - 1
Record.MoveNext
    loop
%>
</table>

<%
If Not nPageCount=0 AND NOT nPageCount = 1 Then

  Response.Write "Side " & nPage & " af " & nPageCount & " "
  Response.Write "<center>Gå til side "
  If Clng(nPage) > 1 Then Response.Write "<a href=default.asp?side=vare&ID="&Request.Querystring ("ID")&"&page=" & nPage - 1 & ">&lt;&lt;&nbsp</a>"
  For nNum = 1 To nPageCount
    Response.Write "<a href=default.asp?side=vare&ID="&Request.Querystring ("ID")&"&page=" & nNum & ">" & nNum & " </a>"
  Next

  If Clng(nPage) < Clng(nPageCount) Then Response.Write "<a href=default.asp?side=vare&ID="&Request.Querystring ("ID")&"&page=" & nPage + 1 & ">&nbsp&gt;&gt;</a></center>"

End If
%>
Avatar billede w13 Novice
25. august 2007 - 23:52 #53
Godt at det virker! :)
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