Avatar billede krel Nybegynder
22. februar 2008 - 15:06 Der er 13 kommentarer og
1 løsning

hent 12 poster lav forrige/næste knap

Hey derude Jeg tror jeg ikke kan se skoven for bare træer...

Det er sikkert helt lige til, men hvordan laver jeg en funktion på min asp-side der gør at når jeg henter fra databasen hentes 12 poster hvorefter der oprettes en forrige / næste knapper til de næste 12 poster

selvføllige skal man ikke kunne trykke forrige på første side og det samme med næste på sidste side...

jeg har selv lavet noget med nogle if-sætninger* og det virker også fint på den side hvor der vises info om folk, men på en side der skal fungere som brugtsalg hvor der ændres i data i databasen ville det været rart med et 'selvtænkende' forrige/næste side system

her har jeg mit db'kald og mine if sætninger som må ku laves på et smartere måde:
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("../../fpdb/databasen.mdb")
if request.querystring("vis") < 1 then
Set rs=Conn.Execute("select * from [medarbejder] where id <= 12 order by id asc")
strprev = "<font color='#999999'>forrige</font>"
strnext = "<a href='?la="&request.querystring("la")&"&vis="&(request.querystring("vis")+1)&"'>næste</a>"
end if
if request.querystring("vis") = 1 then
Set rs=Conn.Execute("select * from [medarbejder] where 13 <= id and id <= 24 order by id asc")
strprev = "<a href='?la="&request.querystring("la")&"&vis="&(request.querystring("vis")-1)&"'>forrige</a>"
strnext = "<a href='?la="&request.querystring("la")&"&vis="&(request.querystring("vis")+1)&"'>næste</a>"
end if
if request.querystring("vis") > 1 then
Set rs=Conn.Execute("select * from [medarbejder] where 25 <= id and id <= 36 order by id asc")
strprev = "<a href='?la="&request.querystring("la")&"&vis="&(request.querystring("vis")-1)&"'>forrige</a>"
strnext = "<font color='#999999'>næste</font>"
end if
%>

?
mvh.
Kristian
Avatar billede Spotgun Seniormester
22. februar 2008 - 16:32 #1
Der er en glimrende artikel om emnet her, incl. kode-eksempler:
http://activedeveloper.dk/articles/31/
Avatar billede krel Nybegynder
22. februar 2008 - 18:50 #2
alletiders artikkel og særdeles brugbar.. får ingen af de fejl folk poster i kommentaren... nu har jeg omskrivet lidt så det til passer til mit brug (måske derfor der er bøvl med det) men jeg har et lille problem...

jeg skal kun have vist 12 poster pr. side her vises alle MEN efter at have hivet 4 (fire) poser ud af db'en springes en over, så hives 4 mere ud og en spriges over osv osv..

eks.
1, 2, 3, 4
6, 7, 8, 9
osv osv osv

?Hjælp!
Avatar billede Spotgun Seniormester
22. februar 2008 - 18:59 #3
Smide noget kode herind, ellers er det lidt svært at finde fejlen :)
Avatar billede krel Nybegynder
22. februar 2008 - 19:05 #4
hehe self.

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

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM medarbejder"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("../fpdb/firmanavn.mdb")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
rs.PageSize = 12
rs.AbsolutePage = intPage
intRecCount = rs.PageSize
intPageCount = rs.PageCount
Response.Write "<table width='403px' style='height:100%' id='text' cellspacing='0' cellpadding='0'>"
Do While Not rs.EOF And intRecCount > 0
Response.Write "<tr><td height='15px' width='100px' align='left' valign='top'><img border='0' src='../grafik/site/firmanavn/medarbejdere/"&rs("img")&".png' width='100px' height='100px' alt=''><p><font style='text-transform:capitalize'>"&rs("navn")&"</p><p><span style='font-size: 9px'>"&rs(""&request.querystring("la")&"_titel")&"</span></p></font><p>"&rs("tlf")&"<p><span style='font-size: 9px'><a href='mailto:"&rs("mail")&"'>"&rs("mail")&"</a></span></a></p></td>"&rs.MoveNext&""
Response.Write "<td height='15px' width='100px' align='left'></td>"
Response.Write "<td height='15px' width='100px' align='left' valign='top'><img border='0' src='../grafik/site/firmanavn/medarbejdere/"&rs("img")&".png' width='100px' height='100px' alt=''><p><font style='text-transform:capitalize'>"&rs("navn")&"</p><p><span style='font-size: 9px'>"&rs(""&request.querystring("la")&"_titel")&"</span></p></font><p>"&rs("tlf")&"<p><span style='font-size: 9px'><a href='mailto:"&rs("mail")&"'>"&rs("mail")&"</a></span></a></p></td>"&rs.MoveNext&""
Response.Write "<td height='15px' width='100px' align='left'></td>"
Response.Write "<td height='15px' width='100px' align='left' valign='top'><img border='0' src='../grafik/site/firmanavn/medarbejdere/"&rs("img")&".png' width='100px' height='100px' alt=''><p><font style='text-transform:capitalize'>"&rs("navn")&"</p><p><span style='font-size: 9px'>"&rs(""&request.querystring("la")&"_titel")&"</span></p></font><p>"&rs("tlf")&"<p><span style='font-size: 9px'><a href='mailto:"&rs("mail")&"'>"&rs("mail")&"</a></span></a></p></td>"&rs.MoveNext&""
Response.Write "<td height='15px' width='100px' align='left'></td>"
Response.Write "<td height='15px' width='100px' align='left' valign='top'><img border='0' src='../grafik/site/firmanavn/medarbejdere/"&rs("img")&".png' width='100px' height='100px' alt=''><p><font style='text-transform:capitalize'>"&rs("navn")&"</p><p><span style='font-size: 9px'>"&rs(""&request.querystring("la")&"_titel")&"</span></p></font><p>"&rs("tlf")&"<p><span style='font-size: 9px'><a href='mailto:"&rs("mail")&"'>"&rs("mail")&"</a></span></a></p></td></tr>"&rs.MoveNext&""
intRecCount = intRecCount - 1
rs.MoveNext
Loop
Response.Write "</tr>"
End If
rs.Close
Set rs = Nothing

Response.Write "<p>"
If Clng(intPage) > 1 Then
Response.Write "<a href=bladre.asp?la="&request.querystring("la")&"&page=" & intPage - 1 & ">forrige</a>"
Else
Response.Write "forrige"
End If

Response.Write "&nbsp;"

If Clng(intPage) < Clng(intPageCount) Then
Response.Write "<a href=bladre.asp?la="&request.querystring("la")&"&page=" & intPage + 1 & ">næste</a> "
Else
Response.Write "<font color='#999999'>næste</font>"
End If
%>
Avatar billede Spotgun Seniormester
22. februar 2008 - 19:12 #5
Det ser ud til at du har en rs.MoveNext for meget lige inden "Loop".
Avatar billede Spotgun Seniormester
22. februar 2008 - 19:15 #6
Hvordan opfører siden sig i øvrigt, hvis der ikke er 12 poster at vise?
Du tvinger jo siden til at gå 4 poster frem, pr. gennemgang af dit loop. Hvad nu hvis den er nået til slutningen af databasen, og kun kan gå 2 poster frem?
Avatar billede krel Nybegynder
22. februar 2008 - 19:23 #7
ja har et antal poser der går op i 4...
Avatar billede krel Nybegynder
22. februar 2008 - 19:24 #8
^^
det hjalp at fjerne det rs.movenext, men der vises stadig flere end 12 poster
Avatar billede krel Nybegynder
22. februar 2008 - 19:26 #9
^^^^
mht til det med posterne findes der fuktioner eller skal jeg skrive en anden kode for at den stopper efter slutning hvis du ikke der er antal poster som 4 går op i
Avatar billede Spotgun Seniormester
22. februar 2008 - 19:30 #10
Du skal selvfølgelig huske at tælle intRecCount ned 1 gang. pr. RS.MoveNext, så skulle det passe med de 12 posts.

Mht. det andet, så finder jeg lige en hurtig løsning.
Avatar billede krel Nybegynder
22. februar 2008 - 19:32 #11
hmm tror måske jeg selv kan se horofr, men har ingen ide om hvordan man koder sig ud af det..

i org, script hentes date fra db'en således:
strSQL = "SELECT LinkURL FROM Links"
jeg henter jo ikke fra et specifikt felt men bare alt (*)fra db'en dvs. når siden hentes igen efter at have skiftet side hentes det vel bare fra post et i dben igen?

Der bliver 3 sider i alt med 12 på hver (36 poster)
på side 1 vises alle poster (36)
på side 2 vises 24 poster og
på side 3 vises 12 poster...
Avatar billede krel Nybegynder
22. februar 2008 - 19:32 #12
arh... samme tid c",) så havde jeg ikke helt ret alligevel..
Avatar billede Spotgun Seniormester
22. februar 2008 - 19:55 #13
Her er lidt hurtigt pseudokode. Er ikke testet, men det burde tage højde for at antal posts ikke passer, og til sidst generere resten af dit tabeldesign, så det passer med strukturen. Håber det er til at forstå, da jeg desværre bliver nødt til at smutte for i dag.

    itemsPerRow = 4
    itemRowCount = 1
   
    Do While Not rs.EOF And intRecCount > 0
       
        If itemRowCount = 1 Then
            ' Skriv <tr>
                ElseIf itemRowCount = itemsPerRow Then
                        ' Skriv </tr>
        End If
       
        ' Skriv <td> db post information </td>

        RS.MoveNext
        intRecCount = intRecCount - 1
        itemRowCount = itemRowCount + 1

    Loop
   
    If itemRowCount <> itemsPerRow Then
        For a = itemRowCount To itemsPerRow
            ' Skriv manglende <td></td>
        Next   
        ' Skriv manglende </tr>
    End If
Avatar billede krel Nybegynder
23. februar 2008 - 18:31 #14
hmm har rodet lidt med det og får bare en hel blank side... :(
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