ページ送り を 使った ソースコードを紹介する表示色の説明:ASP VBScriptは <% 〜 %> キーワードはページ送り です。
<%@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>
| 商品:来月の予約関係を紹介(広告)
6月の人気
-
15日 FINAL FANTASY 25周年記念トランプ - おもちゃ ほか
-
14日 DCD ダイスオーDX オフィシャルバインダー3 ~特命!!ダイスオー潜入開始!!~ - おもちゃ ほか
-
10日 Beanie Boos ビーニー ブーズ ツンドラ シロクマ - おもちゃ ほか
-
08日 レゴ スター・ウォーズ R2-D2(TM) 10225 - おもちゃ ほか
-
07日 こえだちゃん アゲハちゃんのおしゃれフレンズ - おもちゃ ほか
-
06日 (仮)HDM創絶仮面ライダー 灼熱の炎と真紅の戦士編 1BOX (食玩) - おもちゃ ほか
-
02日 マスターワークコレクション No.115 1/20 フェラーリ F310B No.6 E.アーバイン 塗装済み完成品 21115 - おもちゃ ほか
-
01日 マジック:ザ・ギャザリング プレインチェイス 4種アソート 日本語版 BOX - おもちゃ ほか
続き(一覧)を見る
|