Seitenweise Navigation mit ASP
Markus
- asp.net
0 Robert Lacroix0 Markus0 Robert Lacroix0 Stefan Falz0 Markus
0 Janko Wellmeier
Hallo,
ich habe ein Problem bei der Erstellung eines ASP-Scriptes für eine Seitenweise Navigation wie bei Suchmaschinen.
Zwar habe ich mir das Beispiel von Jörg Krause geholt, doch irgendwie funktioniert das nicht.
Kann mir jemand helfen so eine Navigation zu erstellen, bzw. die von Jörg Krause zu ändern, das sie geht.
Danke
Moin Markus,
wo kommen denn die Daten her ? Aus einer Datenbank vermutlich, dann kannst du einfach nen Counter einfügen, der immer Datensatz für Datensatz nach vorne geht(rs.Movenext) und bei einer bestimmten Anzahl aufört, dann kannst du via Querystring die ID festlegen, bei der die nächste Seite anfangen soll anzuzeigen.
Robert.
Hallo Robert,
danke für die Hilfe, doch leider bin ich noch ein unerfahrener ASPler *lächel*
Könntest Du mir vielleicht ein kleines Beispiel angeben, wäre nett.
Danke
Markus
Moin Markus,
wo kommen denn die Daten her ? Aus einer Datenbank vermutlich, dann kannst du einfach nen Counter einfügen, der immer Datensatz für Datensatz nach vorne geht(rs.Movenext) und bei einer bestimmten Anzahl aufört, dann kannst du via Querystring die ID festlegen, bei der die nächste Seite anfangen soll anzuzeigen.
Robert.
Sorry Markus,
also die Sachen kommen aus ner Datenbank ?
Dann sieht das wahrscheinlich so aus:
SQL = "SELECT * FROM Content ORDER BY ID Where StartID > " & Request.Querystring("startid")
rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL, Application("conn"), 3, 3
Counter = 0
Do While Counter < 30 AND rs.EOF = false
Response.Write(rs.Fields("Inhalt"))
Counter = Counter + 1
ID = rs.Fields("ID")
rs.Movenext
Loop
Nextstartid = ID
rs.Close
Dann is der link auf den nächsten Teil test.asp?startid=" & Nextstartid
Hope that helps, Robert.
SQL = "SELECT * FROM Content ORDER BY ID Where StartID > " & Request.Querystring("startid")
Hallo,
obiges Beispiel hat nur einen Haken, andere Sortierung oder nicht
aufeinanderfolgende IS's und schon haperts.
Probier doch mal das hier:
<%
SQL = "..."
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.PageSize = 10 ' Oder die gewünschte Anzahl der Sätze
objRS.Open SQL, conn, 3, 3
If Not objRS.EOF Then
PageCount = objRS.PageCount ' Anzahl der Seiten gesamt ermitteln
If PageCount < PageNumber Then
PageNumber = 1
End if
objRS.AbsolutePage = PageNumber ' Aktuelle Seite wird mit URL übergeben
Do While Not objRS.EOF And intCounter < objRS.PageSize
...
objRS.MoveNext
intCounter = intCounter + 1
Loop
End if
objRS.Close
Set objRS = Nothing
%>
Tschau, Stefan
Erstmal vielen Dank für die ganzen Antworten.
Hier ist mal mein Script. Ich glaube das Problem liegt im Request.Form - Als erstes lese ich Daten aus einem Formular aus und danach rufe ich das Script selbst wieder auf und da denke ich mal liegt das Problem.
<PRE>
<!--#INCLUDE VIRTUAL="../../inc/ADOVBS.INC" -->
<%
' zuerst wird festgestellt, in welche Richtung geblättert wird
' beim ersten Aufruf der Seite sind alle Parameter NULL
query = Request.QueryString("MOVE")
IF query = "next" THEN
Session("CurrentPage")=Session("CurrentPage")+1
END IF
IF query = "prev" THEN
Session("CurrentPage")=Session("CurrentPage")-1
END IF
IF query <> "" AND NOT query = "prev" AND NOT query = "next" THEN
Session("CurrentPage") = CINT(query)
END IF
' Beim ersten Mal Startwert der Seitenzähler auf 1 setzen
IF Session("CurrentPage")="" THEN
Session("CurrentPage")= 1
END IF
Set Conn=Server.CreateObject("ADODB.Connection")
Set RS=Server.CreateObject("ADODB.RecordSet")
Conn.Open "web_kunden"
RS.Open "SELECT * FROM BC_Auslesen where K_Name LIKE '" + Request.Form("K_Name") + "%%' ORDER BY K_Name", Conn, adopenstatic
howmanyrecs=RS.recordcount
RS.PageSize = 30
RS.AbsolutePage = Session("CurrentPage")
DIM zeile
zeile = 0
%>
<BR><BR>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="570">
<TR>
<TD WIDTH="70"></TD>
<TD WIDTH="500">
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="500">
<TR>
<TD WIDTH="270" BGCOLOR="#004080"> <FONT SIZE="2" FACE="ARIAL" CLASS="font9" COLOR="#FFFFFF"><B>Suchergebnis</B></FONT></TD>
<TD WIDTH="55"><IMG SRC="../../images/fv_bw.gif"></TD>
<TD WIDTH="175" ALIGN="RIGHT"><FONT SIZE="2" FACE="ARIAL" CLASS="font9">[ <A HREF="s_bcard_suchen.idc">neue Suche</A> ]</FONT></TD>
</TR>
<TR><TD COLSPAN="3" BGCOLOR="#004080"></TD></TR>
</TABLE>
<BR>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="1" WIDTH="500">
<%
IF howmanyrecs = 0 THEN
response.write "<TR><TD ALIGN=CENTER><BR><FONT SIZE=2 FACE=ARIAL CLASS=font9>"
response.write "Es wurden <B>" & howmanyrecs & " Datensätze "
IF Request.Form("A_ID") <> 0 THEN
response.write "in Ihrem Adressbuch"
ELSE
END IF
response.write "</B> gefunden</FONT><TD><TR>"
ELSE
END IF
%>
<%
WHILE NOT RS.EOF AND zeile < RS.PageSize
%>
<TR BGCOLOR="#EFEFEF">
<TD WIDTH="250"><FONT SIZE="2" FACE="ARIAL" CLASS="font9"><A HREF="s_bcard_eintrag.idc?K_ID=<%=RS("K_ID")%>&KL_ID=<%=Request.Form("KL_ID")%>&IP=<% = Request.ServerVariables("REMOTE_ADDR")%>"><B><%=RS("K_Name")%></B> <%=RS("K_Vorname")%> <%=RS("K_Titel")%></A></FONT></TD>
<TD WIDTH="250" ALIGN="RIGHT"><FONT SIZE="2" FACE="ARIAL" CLASS="font9"><A HREF="s_bcard_eintrag.idc?K_ID=<%=RS("K_ID")%>&IP=<% = Request.ServerVariables("REMOTE_ADDR")%>"><%=RS("K_LKZ")%> - <%=RS("K_PLZ")%> <%=RS("K_Ort")%></A></FONT></TD>
</TR>
<TR>
<TD></TD>
<TD ALIGN="RIGHT" BGCOLOR="#EFEFEF"><FONT SIZE="2" FACE="ARIAL" CLASS="font9"><A HREF="s_bcard_eintrag.idc?K_ID=<%=RS("K_ID")%>&IP=<% = Request.ServerVariables("REMOTE_ADDR")%>"><%=RS("K_Unternehmen")%></A></FONT></TD>
</TR>
<TR><TD COLSPAN="2" HEIGHT="10"></TD></TR>
<%
RS.MoveNext
zeile = zeile + 1
WEND
%>
</TABLE>
<BR>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="1" WIDTH="500">
<TR>
<TD ALIGN="CENTER"><FONT SIZE="1" FACE="ARIAL" CLASS="font8">
<!-- Navigationsinstrumente erzeugen -->
<%
IF Session("CurrentPage") > 1 THEN
%>
<A HREF="testsuchen.asp?MOVE=prev"> [Zurück] </A>
<%
END IF
FOR i = 1 TO RS.PageCount
IF RS.AbsolutePage <> i THEN
%>
<A HREF="testsuchen.asp?MOVE=<% =i %>"> <% =i %> </A>
<% ELSE %>
<B><% = i %></B>
<%
END IF
NEXT
IF Session("CurrentPage") < RS.PageCount THEN
%>
<A HREF="testsuchen.asp?MOVE=next"> [Weiter] </A></FONT></TD>
</TR>
</TABLE>
</TD></TR>
</TABLE>
<%
END IF
RS.Close
set RS=nothing
Conn.Close
%>
</PRE>
Hi!
Eine andere Möglichkeit wäre noch das RecordSet-Attribut PageCount.
Da Du Dich jedoch noch nicht so auskennst, wäre das vielleicht ein wenig zu kompliziert für den Anfang.
Solltest Du trotzdem Lust haben Dich da tiefer einzuarbeiten, wäre Dir dieser Link vielleicht ganz hilfreich:
http://www.learnasp.com/learn/dbtablepaged.asp
Falls dazu noch kleinere Fragen auflaufen, kannst Du mich auch per Email anschreiben (ich helfe dann soweit ich es kann) oder eben hier nochmal posten.
mfg
JankoW
P.S.: Es gibt eigentlich keinen großen Unterschied zu Roberts Lösung. Die hier sieht nachher vielleivht etwas eleganter aus, das ist alles