元の三流解説は、
三流君ASP:ページ単位の表示にチャレンジしてみた
↑を見て、笑ってやってください。
ブログに過去のソースコードをアップして、ブログの検索機能で利用してます(利用予定です)
※古くさいコードが多いです・・・
ソースコード
<%@LANGUAGE=VBScript%> <% '頭でページのパラメータをチェックする nPAGE = Cint("0" & Request.QueryString("page")) If nPAGE = 0 Then 'パラメータ無しなら強引に1ページにする nPAGE = 1 End IF %> <html> <head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis"> <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW"> <title>20行単位でページ送りするテストプログラム</title> </head> <body> <h1>20行単位でページ送りするテストプログラム</h1> test082-1.asp?page=99とページ番号を受け取り、該当ページを表示する<br> 単純にループで空読みしてみました(オイオイ手抜きか?)<br> 前ページ・次ページのリンクも作ってみました。 <hr> <% 'テストで開始時刻の表示 Response.Write "開始:" & Now() & "<hr><br>" '範囲のチェックを行う If nPAGE < 50 Then '50以下の時リンクを作る 'リンクを表示する、先頭ページのチェックpage=1だけは行う Response.Write "<b>" & nPAGE & "ページ</b> 表示中 -- " If nPAGE <> 1 Then '1ページ以外かチェックする Response.Write "[<a Href='test082-1.asp?page=" & (nPAGE - 1) & "'>" Response.Write "前ページへ</a>]" Else Response.Write "[前ページへ]" '押せないリンクじゃないけど、そのまま文字表示 End IF '次ページは手抜きで+1を必ず表示する '(最終ページのチェックぐらいしろよコラ)すみません手抜きで・・・ Response.Write "[<a Href='test082-1.asp?page=" & (nPAGE + 1) & "'>" Response.Write "次ページへ</a>]" Response.Write "<br>" End If 'ADO DB Connection オブジェクトを作成 Set db=Server.CreateObject("ADODB.Connection") db.Provider = "Microsoft.Jet.OLEDB.4.0" '接続DBの位置を渡し、DBオープン strDB = "cnt_etc.mdb" db.ConnectionString = Server.MapPath(strDB) db.open 'データベースをオープンする 'お約束のレコードセットの作成 テーブル名logから全項目(*)を指定 'ORDER BY WriteTime DESC で書き込み時刻の降順にする Set rs = db.Execute("Select * From log ORDER BY WriteTime DESC") 'データの頭だし 芸無く空読みする nCNT = 1 'EOFまでループ or データが(nPAGE-1)*20まで空読み Do While rs.EOF = False And nCNT <= (nPAGE-1) * 20 '.EOFがFalseで件数以下 '次のレコードにポインタを移動する(何もしてないのに・・・(笑)) rs.MoveNext 'これを忘れると悲惨なことに、、、 'カウンタを増やす nCNT = nCNT + 1 Loop 'データの表示をテーブルで行う Response.Write "<TABLE Border='1'>" '見出しをバカっぽく、そのまま書き込む Response.Write "<TR>" Response.Write "<TH>NO.</TH>" Response.Write "<TH>日付</TH>" Response.Write "<TH>来てもらった場所</TH>" Response.Write "<TH>リンク元</TH>" Response.Write "</TR>" 'EOFまでループ or nPAGE*20 件まで Do While rs.EOF = False And nCNT <= (nPAGE*20) '.EOFがFalseで30以下の間 Response.Write "<TR>" '1行、1レコードの内容を表示する Response.Write "<TD>" & nCNT & "</TD>" 'カウンタ表示 Response.Write "<TD>" & rs.Fields.Item("WriteTime") & "</TD>" '時刻 '訪問場所の表示 Response.Write "<TD><A HREF='" & rs.Fields.Item("URL") & "'>" Response.Write rs.Fields.Item("URL") & "</A></TD>" 'リンク元の表示 Response.Write "<TD><A HREF='" & rs.Fields.Item("referrer") & "'>" If Left(rs.Fields.Item("referrer"), 15) = "http://www.ken3" Then Response.Write Mid(rs.Fields.Item("referrer"), 20, 30) & "</A>...</TD>" Else Response.Write Left(rs.Fields.Item("referrer"), 30) & "</A>...</TD>" End If Response.Write "</TR>" & Chr(13) & Chr(10) 'データ表示終了(行の終わり) '次のレコードにポインタを移動する rs.MoveNext 'これを忘れると悲惨なことに、、、 'カウンタを増やす nCNT = nCNT + 1 Loop Response.Write "</TABLE>" 'テーブルは終わりです '開いていたレコードセットを閉じる rs.Close 'データベースも閉じようよ db.Close 'お行儀よくオブジェクトも開放しましょう(通常は自動的に解放されるけど) Set db = Nothing 'テストで終了時刻の表示 Response.Write "<hr>終了:" & Now() & "<hr>" %> こんな感じで、20単位で1ページを単純に管理してみました。<br> えっ、手抜き処理が多いって?<br> </body> </html>
↑をテスト実行する→http://www.ken3.org/cgi-bin/test/test082-1.asp?page=5← 実行する
↑コードの三流解説は、
三流君ASP:ページ単位の表示にチャレンジしてみた
を見て、笑ってやってください。
ASPの解説 トップページは
三流君ASPで遊ぶ、失敗する
です。こちらもよろしく・・・