Behöver lite hjälp då jag inte är speciellt inne på ASP.
Vill åstadkomma följande:
En lista som visar samtliga poster i en tabell.
(Ja det är ju lätt. Det fixar jag t o m själv)
När man sedan klickar på en post så ska den posten visas. Här ska man också kunna välja nästa/föregående post och då hoppa fram och tillbaka mellan posterna. Finns det ingen nästa eller förgående post ska den länken så klart inte synas.
Sök på Paging, bör finnas ett antal sätt här på forumet! Själv har jag en klass skriven för ändamålet där man kastar in en array med posterna om man gör lite modifikationer. Kanske kan vara något att utgå ifrån, eller så inte! :)
Navigation.asp
<%
Class Navigation
Private m_Perpage
Public Property Get Perpage()
Perpage = m_Perpage
End Property
Public Property Let Perpage(p_Data)
m_Perpage = p_Data
End Property
Private m_Rows
Public Property Get Rows()
Rows = m_Rows
End Property
Public Property Let Rows(p_Data)
m_Rows = p_Data
End Property
Private m_Querystring
Public Property Get Querystring()
Querystring = m_Querystring
End Property
Public Property Let Querystring(p_Data)
if p_Data <> "" Then
m_Querystring = "&" & p_Data
Else
m_Querystring = ""
End if
End Property
Private m_IsMultidimensional
Public Property Get IsMultidimensional()
IsMultidimensional = m_IsMultidimensional
End Property
Public Property Let IsMultidimensional(p_Data)
m_IsMultidimensional = p_Data
End Property
Public Function Pagefrom()
Dim SelectedPage
SelectedPage = Request.QueryString("p")
if Not IsNumeric(SelectedPage) Or SelectedPage = "" Then
SelectedPage = 1
End if
if Not isNumeric(SelectedPage) Then SelectedPage = 1
Pagefrom = (SelectedPage - 1) * Me.Perpage
End Function
Public Function Pageto()
if Pagefrom + (Me.Perpage - 1) >= UBound(Me.Rows,2) Then
Pageto = UBound(Me.Rows,2)
Else
Pageto = Pagefrom + (Me.Perpage - 1)
End if
End Function
Public Sub Display
Dim SelectedPage
SelectedPage = Request.QueryString("p")
if Not IsNumeric(SelectedPage) Or SelectedPage = "" Then
SelectedPage = 1
End if
Dim iPages, iPosts
if Me.IsMultidimensional = True Then
iPages = Cint(UBound(Me.Rows,2)/Me.Perpage) + 1
iPosts = UBound(Me.Rows,2)
Else
iPages = Cint(UBound(Me.Rows)/Me.Perpage) + 1
iPosts = UBound(Me.Rows)
End if
Response.Write Navigate(SelectedPage, iPosts, Me.Perpage, iPages)
End Sub
Private Function Navigate(intPage, intTotalPosts, intPostsPerPage, intPages)
Dim Nav
'// Navigering - Siffror
If intTotalPosts > intPostsPerPage Then
For n = 1 To intPages
If Cint(intPage) = Cint(n) Then
Nav = Nav & "<strong>"& n &"</strong> "
Else
Nav = Nav & "<a href=""" & Request.ServerVariables("SCRIPT_NAME") & "?p="& n &"" & Me.Querystring & """>"& n &"</a> "
End If
If CInt(n) = Cint(intPages) Then Exit For
Next
End If
Navigate = Nav
End Function
End Class
%>
Använda sig av paging klassen.
Dim objNavigation
Set objNavigation = New Navigation
' Poster per sida
objNavigation.Perpage = 25
' Om arrayn som skicks in är multidimensionell.
objNavigation.IsMultidimensional = True
' Rows är en multidimensionell array med posterna.
objNavigation.Rows = Rows
For i = objNavigation.Pagefrom To objNavigation.Pageto
Response.Write Rows(0,i) & "<br />"
Next
' Visa en display av sidorna
objNavigation.Display()
Klassen måste givetvis ändras lite grann om man vill ha endast
<< föregående post | nästa post >>
select o.*, (select min(id) from tbl where id > o.id) prevPost,(select max(id) from tbl where id<o.id) nextPost
from tbl o where o.id = 5
Detta hämtar det du vill ha ifrån posten 5 och lägger föregående och nästkommande id i slutet.
Finns inga id:n så får du ett null-värde vilket du sedan kan kolla med isnull i applikationslagret/koden.
:)
262 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e