を 使った ソースコードを紹介する表示色の説明:ASP VBScriptは <% 〜 %> キーワードは です。
<%@LANGUAGE=VBScript%>
<% '頭でページのパラメータをチェックする
nPAGE = Cint("0" & Request.QueryString("page"))
If nPAGE = 0 Then 'パラメータ無しなら強引に1ページにする
nPAGE = 1
End IF
%>
<html>
<head>
<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>
| 最近発売の雑誌を紹介する
科学や技術の雑誌です。
- 農業と経済 2008年 06月号
- 省エネルギー 2008年 05月号
- 設備と管理 2008年 06月号
- 電気計算 2008年 06月号
- 電気店 2008年 06月号
- 電気評論 2008年 05月号
- 電気と工事 2008年 06月号
- 電設技術 2008年 05月号
- 固体物理 2008年 04月号
|