検索結果のページング処理でどうしてもつまづいてしまいます。

問題点としては、検索結果の1ページ目は正常に動作するのですが、2ページ目以降はどのページも全件表示されてしまうという点です。
どうしたら次ページでも絞込み検索の内容がわたせますか??
~省略~
<FORM ACTION="test.asp" METHOD="POST">
<SELECT name="KUBUN">
<option value="">全てのデータ</option>
<option value="あ">あ</option>
<option value="い">い</option>
</SELECT>
<INPUT TYPE="submit" VALUE="検索する">
</FORM>
~省略~
<%
iPageSize = CInt(Request.QueryString("pageSize"))
If iPageSize = 0 Then
iPageSize = 100
End If
iPage = CInt(Request.QueryString("page"))
If iPage = 0 Then
iPage = 1 ' 初期値は 1
End If
Session("iPage") = iPage
%>
~省略~
<%
Sub showPageNumber()
s = "&action=" & Server.URLEncode(sAction) & "&string=" & Server.URLEncode(sString) %>
Total: <%= iRecordCount %>  
<% If iPage > 1 Then %>
<A HREF="<%= Request.ServerVariables("SCRIPT_NAME") %>?page=<%= iPage - 1 %>">前の<%= iPageSize %>件</A> 
<% End If %>
<%= (iPage - 1 ) * iPageSize + 1 %>-<%= iPage * iPageSize %> 
<% If iPage < iPageCount Then %>
<A HREF="<%= Request.ServerVariables("SCRIPT_NAME") %>?page=<%= iPage + 1 %>">次の<%= iPageSize %>件</A>
<% End If %>

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2014/10/21 22:31:01
  • 終了:2014/10/28 22:35:04

回答(1件)

id:a-kuma3 No.1

a-kuma3回答回数4367ベストアンサー獲得回数18032014/10/21 23:45:33

ASP ってことで、良いんですよね。
FORM タグの METHOD 属性が POST のときは、Request.Form でパラメータを取得する。
Request.QueryString でパラメータを取得するには、METHOD 属性は GET になってる必要があります。


追記です。

こんな感じになるんじゃないでしょうか。

<FORM ACTION="test.asp" METHOD="GET">
    ...
<%
iPageSize = CInt(Request.QueryString("pageSize"))
If iPageSize = 0 Then
    iPageSize = 100
End If
iPage = CInt(Request.QueryString("page"))
If iPage = 0 Then
    iPage = 1 ' 初期値は 1
End If

もしくは、こう。

<FORM ACTION="test.asp" METHOD="POST">
    ...
<%
iPageSize = CInt(Request.Form("pageSize"))
If iPageSize = 0 Then
    iPageSize = 100
End If
iPage = CInt(Request.Form("page"))
If iPage = 0 Then
    iPage = 1 ' 初期値は 1
End If

他2件のコメントを見る
id:TransFreeBSD

"前""次"のリンクにKUBUNがわたってないんじゃ?
この場合、リンクでやってますからPOSTは使わない方が良いと思います。

2014/10/23 21:52:57
id:TransFreeBSD
<A HREF="<%= Request.ServerVariables("SCRIPT_NAME") %>?KUBUN=<% Server.URLEncode(「KUBUNの入ってる変数」) %>&page=<%= iPage - 1 %>">

かな?
ASPとかよく分かりませんのでServer.URLEncodeの使い方はテキトーです。
KUBUNは多分DBへのクエリで使ってると思いますので変数に入ってるんじゃないでしょうか。
KUBUNが空の場合にどうなるのか/すべきかは分かりません。

2014/10/23 22:37:14
id:winona1029

a-kuma3さんの言われる通り、上手く検索結果後の値渡しが上手くいっていないみたいです。
検索結果は、思った通り表示しますが、次のページで検索前の状態に戻ります。
どのようにすればよろしいでしょうか?
ソースは下記の通りです。

'*** 1ページに表示する商品数を取得する
iPageSize = CInt(Request.QueryString("pageSize"))
If iPageSize = 0 Then
iPageSize = 100
End If

'*** 表示するページ値を取得する
iPage = CInt(Request.QueryString("page"))
If iPage = 0 Then
iPage = 1
End If
Session("iPage") = iPage

%>
~SQL文省略~
<% Else
iRecordCount = rs.RecordCount
If iRecordCount <> -1 Then
iPageCount = rs.PageCount
If 1 > iPage Then iPage = 1
If iPage > iPageCount Then iPage = iPageCount

rs.AbsolutePage = iPage
Call showPageNumber()
%>

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません