Avatar billede buthead Nybegynder
10. maj 2004 - 20:53 Der er 7 kommentarer

Visning af varer

Hej Experter.

Jeg har postet dette spørgsmål en gang før inden serveren crashede forrrige weekend. Jeg nåede desværre ikke at få et tilfredsstillende svar. Håber der stadig er nogle der kan hjælpe.
Jeg har et problem med at få vist nogle varer hentet fra en asp database på den rigtige måde.
Funktionen skal vælge varer fra databasen alt efter hvilken kategori brugeren ahr valgt og herefter vise fire varer pr side og regne ud hvor mange sider det hele vil fylde. Dette skal bruges til at udskrive en form for sidetæller på siden som illustrerer overfor brugeren hvor mange sider der er at navigere i. Navigationen mellem de forskellige sider foregår således v. hj. af dette sideindex.

Jeg har følgende kode, som ser ud til at gøre noget rigtigt og så alligevel ikke. Der bliver altid udskrevet 4 varer på siden uanset hvilken side man er på. Og hvis man så til gengæld har 5 varer i en vises kun de 4 første og der indikeres ikke en side 2.

Hvad går der galt?


<%@language="vbscript"%>
<!--#include file="conn.asp"-->

<%
set rs=server.createobject("ADODB.recordset")

aktuelSide=0
aktuelSide=request.Querystring("aktuelSide")

varerprSide = 4
startPunkt = ((aktuelSide-1)*varerprSide)+1

If startPunkt < 4 Then
    startPunkt = 4
End If

strSQL = "SELECT TOP "&varerprSide&" * from (SELECT TOP "&startpunkt&" * FROM vare where kategoriid="&dkategoriid&" ORDER by vareid DESC) ORDER by vareid ASC"

x=0

rs.open strSQL,conn

do while not rs.eof AND not rs.eof

!!! Her er en større definition af udskriften af varerne i som er fjernet !!!       

rs.movenext
loop

rs.close

' sidetal:
strSQL = "SELECT count(*) AS antal FROM vare WHERE kategoriid = "&dkategoriid
rs.open strSQL,conn

antalVarer = rs("antal")
antalSider = CLng(antalVarer/varerprSide)

If antalSider > 1 Then
udskrivSider = ""
   
    For i = 1 to antalSider
        if i = aktuelSide Then
        udskrivSider = udskrivSider & "<img src='grafik/tal/"&i&"_aktiv.gif' border='0'>"
    Else
            udskrivSider = udskrivSider & "<a href='vis.asp?aktuelSide="&i&"&kategoriid="&dkategoriid&"'><img src='grafik/tal/"&i&".gif' border='0'></a>"
    End If
    Next
End If

rs.close
set rs=nothing
conn.close
set conn=nothing



%>
Avatar billede ldanielsen Nybegynder
10. maj 2004 - 21:11 #1
Du skulle bruge ADO's egen Paging,

rs.PageSize = 4
rs.ActualPage = aktuelSide
rs.open strSQL,conn
for i = 0 to 4
    Response.write (<hvad du nu vil>)
next
Avatar billede ldanielsen Nybegynder
10. maj 2004 - 21:14 #2
sorry:
rs.open strSQL,conn
rs.PageSize = 4
rs.AbsolutePage= aktuelSide

for i = 0 to 4
    Response.write (<hvad du nu vil>)
next

noget i den stil, ikke testet
Avatar billede ldanielsen Nybegynder
10. maj 2004 - 21:15 #3
Avatar billede buthead Nybegynder
10. maj 2004 - 21:37 #4
Sorry får følgende besked:

ADODB.Recordset error '800a0cb3'

Current Recordset does not support bookmarks. This may be a limitation of the provider or of the selected cursortype.
Avatar billede ldanielsen Nybegynder
10. maj 2004 - 22:56 #5
ok

Prøv at skrive
rs.open strSQL,conn,3,1

i stedet for blot

rs.open strSQL,conn

Det skulle give en cursortype der virker.
Avatar billede ldanielsen Nybegynder
10. maj 2004 - 22:58 #6
Når det virker kan du lave sideoversigten med:

for i = 0 to rs.PageCount

next
Avatar billede ldanielsen Nybegynder
10. maj 2004 - 22:59 #7
for i = 1 to rs.PageCount

next

skal det vist være?!
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