Hej...
Jeg har nu forgæves prøvet at lave en forrige næste funktion i min gæstebog... Så nu spørger jeg altså jeg: Er der nogen der ved, hvordan man laver sådan noget???
Den skal vise 5 "Inputs" på hver side....
/Mads
Jeg går ud fra at du har dine indlæg liggende i en database.
For at få det til at virke, skal du bruge paging. Det er langt den nemmeste måde at få det til at køre på.
Prøv at rode lidt med denne kode, så skulle du nok kunne få det til at virke. Det er en asp file fra en projekt jeg har lavet, så det er nogle ting, bla. database connection som du skal lave om. Jeg har forsøgt at skære overflødig kode fra, så der kun er det allermest nødvendige. Du kalder sådan set bare ShowListing() med en SQL sætning. Det er en generel kode som kan bruge til alle tabeller.
OpenConn, CloseConn er sub'er som åbner og lukker database forbindelse henholdsvis. DBConn er et objekt der indeholder ADODB.Connection objektet.
Men mon ikke du kan få noget ud af det, hvis du kigger lidt nærmere på det.
<%
Dim RecordSet
Dim RecordField
Dim RecordCount
Dim StrPageIndex
Dim IntPageIndex
Dim IntPageCount
Sub ShowListing(ASQL)
' Initialiser database forbindelse og dataset
OpenConn
Set RecordSet = Server.CreateObject("ADODB.recordset")
RecordSet.PageSize = 10 ' antal poster per side
RecordSet.CursorLocation = adUseClient
RecordSet.Open ASQL, DBConn, adOpenDynamic, adLockReadOnly
RecordCount = RecordSet.RecordCount
if not (RecordSet.BOF and RecordSet.EOF) then
Call InitializePaging
Response.write "<table>" & vbCrLF
Call WriteHeade
Call WriteRecords
Response.write "</table>" & vbCrLF
Call WriteFooter
end If
if not (RecordSet is nothing) then RecordSet.close
Set RecordSet = Nothing
CloseConn
End Sub
Sub InitializePaging()
StrPageIndex = "" & Request.QueryString("pg")
if IsNumeric(strPageIndex) then
IntPageIndex = CInt(strPageIndex)
IntPageCount = RecordSet.PageCount
if IntPageIndex < 1 then IntPageIndex = 1
if IntPageIndex > IntPageCount then IntPageIndex = IntPageCount
else
IntPageIndex = 1
IntPageCount = RecordSet.PageCount
end if
RecordSet.AbsolutePage = intPageIndex
end Sub
Sub WriteHeader
Dim SortURL
Dim QStr
Dim idx
%>
<thead style="background-color:gray;font-weight:bolder">
<%
for each RecordField in RecordSet.Fields
' Rebuild URL
SortURL = ""
QStr = ""
for each QStr in Request.QueryString
if QStr <> "sort" then SortURL = SortURL & Qstr & "=" & _
Request.QueryString(QStr) & "&"
next
QStr = SortURL & "sort=" & RecordField.Name
SortURL = Request.ServerVariables("URL") & "?" & QStr
%>
<th>
<a href="<%=SortURL%>" class="list"><%=RecordField.Name%></a>
</th>
<%
next
%>
</thead>
<%
End Sub
Sub WriteRecords
Dim idx
Dim Value
idx = 0
%>
<tbody>
<%
Do while not (RecordSet.eof or _
(RecordSet.AbsolutePage > IntPageIndex))
if (idx mod 2) = 0 then
%> <tr style="background-color:moccasin"> <%
else
%> <tr style="background-color:silver"> <%
end if
idx = idx + 1
for each RecordField in RecordSet.Fields
value = "" & trim(RecordField.Value)
if value = "" then value = " "
Response.Write " <td>" & value & "</td>" & vbCrLf
next
%>
</tr>
<%
RecordSet.MoveNext
Loop
%> <tbody><%
end sub
Sub WriteFooter()
Dim idx
Dim strPages
%>
<table>
<tr>
<td style="text-align:left">
<%
for idx = 1 to IntPageCount
strPages = (idx - 1) * 10 + 1 & "-" & _
FindSmallest( idx * 10, RecordCount) ' Husk at ændre siden til det rigtige navn
if (idx <> IntPageIndex) then Response.write "<a href=""default.asp?pg=" & idx% & """>"
Response.Write strPages
if (idx <> intPageIndex) then Response.Write "</a>"
response.Write " " & vbCrLf
next
%>
</td>
<td style="text-align:right">
<b>Side <%=intPageIndex%> / <%=IntPageCount%></b>
</td>
</tr>
</table>
<%
End Sub
Function FindSmallest(ItemA, ItemB)
if ItemA < ItemB then
FindSmallest = ItemA
else
FindSmallest = ItemB
end if
End Function
%>
--
Thomas Due
Software developer
udvikleren.dk - ASP redaktør
tdue@mail.dk
[Redigeret d. 19/12-03 00:04:42 af Thomas Due]