ASPプログラミング入門(二十):ADOコンポーネントの改ページプログラム


どのように記録を挿入し、どのように記録を表示するかを学んだはずです。今の簡単で完璧な文章システム、ニュースシステムと伝言システムは問題になりません。次に次の問題があります。情報の内容が不段に増えるにつれて、単独で一枚のページを通してすべての情報を表示するのは無理です。だから、解決の方法は改ページ技術を採用することです。1,rs.RecordCountは明らかにしています。RecordCountはデータベーステーブルの中の全部で何本の記録を表示するものです。また、表の中に全部で何行ありますか?改ページでよく使われるのは、全部でN編の文章などの合計情報が表示されます。2,rs.PageSizer.PageSizeは、つまり1ページの大きさであり、1枚のASPページが記録の本数を表示することができるという意味である。値は自分で定義しています。例えば、よく見るページごとにN編の文章を表示するなどです。3,rs.Absolute Pageとrs.pagecountは改ページに言及しています。rs.Absolute Pageに言及しないわけにはいきません。記録セットのAbsolute Page属性は、現在表示されているページ数を決定する役割を果たしています。その値は根拠があり、rs.PageSizeを指定した場合、rs.pagecountの情報値はrs.RecordCountとrs.PageSizeの割り付け結果である。例えば、総情報記録rs.RecordCountは全部で20条で、各ページの表示ストリップ数rs.PageSizeは5条に設定されています。ページ数rs.pagecount数は20/5=4ページで、rs.Absolution Pageは第1ページ、第2ページのみとなります。第4ページ。今と言えば、具体的なプログラムを作って調整してみます。引き続きshowwit.aspを以下のように修正します。
<!--啝とinclude file=「conn.asp」<%Set rs=Server.reate Object(「ADODB.Recordset」)sql=「Select*from cnarticle order by cn_id desc「rs.Open sql,conn,1%」<%page=request.querystring("page")'page値は受け取り値rs.PageSize=2'ページごとに記録数を表示します。AbsoluutePage=Page'は現在ページが受信したページ数%に等しいことを表示します。“&rs(”cn_content").rs.MoveNextnext%<%s.close Set rs=Nothingconn.close set conn=nothing%>HEREは、デバッグの前提として、データベース内のレコードは相対的に4つより大きくなります。このようなテストの効果は明らかです。そしてテストの方法はshowwit.aspの後に追加しますか?page=1かpage=2などは調整してホームページの表示効果を観察します。つまり、データベースの内容を表示するということです。
<%For i=1 to rs.PageSizif rs.EOF thenExit For end if reponse.write('
文章の内容は:&rs(「cn_」content「)rs.MoveNextnext%」という役割を果たしていますが、プログラムは2つの情報しか表示されないはずです。しかし、なぜ追加されましたかpage=1とpage=2は違った結果を表示しますか?…それは間違いなくRS.Absolute Pageの役割です。これをはっきりさせて、改ページの全体の構造が少し目鼻がついたことを信じます。
<!--啝とinclude file=「conn.asp」-「%Set rs=Server.reate Object(「ADODB.Recordset」)sql=「Select*from cnarticle」rs.Open sql,conn,1%file path=reest.servareableinfo""""""""""""%page=request.querystring""""""""""page値は受け取り値rsrsrs.PageSize=2'ページごとに記録数を表示します。if Not IsNumeric(page)then'は、page値がデジタルpage=panegeであるかどうかを判断します。大きい総ページ数rs.AbsoluutePage=rs.PageCount'は、現在の表示ページが最後のページelseif Pageに等しい場合は、Pageが0 rs.Absolution Page=1'以下であれば、現在の表示ページを設定すると、第1ページのelsers.Absolution Page=Page'がゼロより大きい場合は、現在のページが受信したページ数end freelsers.Absolute Page=1 end ifPage=rs.Absolute Paged%<%For=1 to rs.PageSize'を用いてfor nextサイクルで現在のページの記録を順次読み出します。if rs.EOF thenExit Foend freponse.write(タイトル:記事です。title").reponse.write(
文章の著者は「&rs(」cn_author").reponse.write(
文章の加入時間は「&rs(」cn_time").reponse.write(
文章の内容は「&rs(」です。content"))reponse.write("
""rs.MoveNext Next%"
1 ands.pagecount<>0 then%><!--現在のページ数が1より大きい場合、トップページと前ページの接続をいつでも表示するべきです。Page=<%=1%>「トップページ」[Page=<%=Page-1%>“>前のペルジ”<!--現在のページ数が1より大きく、総ページ数より小さい場合は、末尾ページと次ページとの接続が表示されます。Page=<%=page+1%>>>>「次のページ」[Page=<%=rs.PageCount%>「最後のページ」[次のページ]<%end if%>そうです。今のページ数は1です。最後のページと、最後のページと次のページの続きを表示します。Page=<%=Page+1%>>「次のページ」」[Page=<%=s=s=rs.PageCount%>“>最後のペルジ(/a])<%end if%><!--最終的に総合ページ数が1、0であれば、何の接続もできない--<%else%>[[[[[%=pagent]]]/<%=rs.PageCount]]]]][/共有[%====================================================="""""""""""""""""""""""""""""""""""""""""""""////////////////"""""///////////////////////////////共有共有====================================================================5 value=「%=page%」ページジュニア<%s.close Set rs=>Nothingconn=Nothings%の効果スペルを参照してください。http://www.cnbruce.com/database/の長いページコードは、本当に分かりにくいです。プラットフォームが引用されても、修正が必要です。最後に関数を作ることができます。次の呼び出しに便利です。
<%function pagination(pagecount、pagesize、page、reult count)    Dim query、a、x、temp    action=「http:/」&Request.ServerVarables(「HTTP_」HOST")&Request.ServerVarables("SCRIPT_"NAME")    query=Split(Request.ServerVarables)STRING","&")    For Each x In query     a=Split(x,「=」)     If StrComp(a(0)、「page」、vbTextCompare)<>0 The n     temp=temp&a(0)&“=”&a(1)&“&”     End If    次のテキスト        Response.Write(<document.location=>&action&temp&"Page='+this.page.value;return false;">")            if page<=1 then        Resonse.Write(「[トップページ][前ページ]」)    else                Response.Write('」)        Resonse.Write('前のペルジ=パージコントロールthen        Resose.Write(「次ページ」[後尾ページ])            else        Resonse.Write('次ペルジ「末尾ペルトレー/ペルジ」)    Reponse.Write(「転送」&「