webForumDet fria alternativet

hjälp med att visa poster en och en

ASP

4 svar · 569 visningar · startad av Fredriksson

Medlem sedan nov. 2000319 inlägg
Frågan#1

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.

Nån som har tid/lust att hjälpa mig med detta?

Medlem sedan nov. 20017 144 inlägg
#2

Databas?

Medlem sedan nov. 2000319 inlägg
#3

MySQL.

Medlem sedan nov. 20014 054 inlägg
#4

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

Dvs. skapa en ny Navigate-metod.

Medlem sedan nov. 20017 144 inlägg
#5

En enkel sql gör ditt jobb:

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
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)