dポイントプレゼントキャンペーン実施中!

sea_clear_sky8です。

[環境]
Win98SE
PWS
[質問内容]
次のページ、前のページ、最初のページ、最後のページっていうのを作って
ページングさせたいのですが、
下記のように一つ一つにHIDDENNを作ると、全部のボタンが表示されている
場合にボタンをクリックすると下記SQLで、Commandオブジェクトのコマンドが設定されていませんとエラーが表示されます。

[SQL]
"select * from test_t " & _
"where name like '%" & Request("nm") & "%' " & _
"order by id " & _
"limit " & Request("page_num")*10 & ",10"

[最初のページ]
response.write "<input type=""Submit"" value=""最初のページ&gt""onclick=""myClick();"">"
response.write "<input type=""HIDDEN"" name=""page_num"" value=""&0&"">"

[次のページ]
response.write "<input type=""Submit"" value=""次の10件&gt""onclick=""myClick();"">"
response.write "<input type=""HIDDEN"" name=""page_num"" value=""" & request("page_num")+1 & """>"

[前のページ]
response.write "<input type=""Submit"" value=""前の10件&gt""onclick=""myClick();"">"
response.write "<input type=""HIDDEN"" name=""page_num"" value=""" & request("page_num")-1& """>"

[最後のページ]
response.write "<input type=""Submit"" value=""最後のページ&gt""onclick=""myClick();"">"
response.write "<input type=""HIDDEN"" name=""page_num"" value=""" &Abs(Int(-1*(AllCnt/10)))& """>"

エラーの原因は最初のページと最後のページのVALUEの部分のvalue=""&0&""、
value=""" &Abs(Int(-1*(AllCnt/10)))& """の部分の記入の仕方が
おかしいか、各ボタンごとにHIDDENを作成しているため、おかしいのでは
ないかと考えています。
HIDDENを一個にする方法はありますか、
いろいろ考えていますが、考えつかない状態です。
また、他に原因があればよろしくお願いします。
すいませんが、ご教授願います。
よろしくお願いします。

A 回答 (4件)

更新処理とページングの処理については



<script type="text/javascript">
<!--
  function myClick( num )
  {
    var pagenum = document.getElementById( "page_num" );
    if ( Math.abs( num ) == 1 ) {
      // 引数の絶対値が1なら 加減算
      pagenum.value = new Number(pagenum.value) + num;
    } else {
      // それ以外は即値として使用
     pagenum.value = num;
    }
    var frm = document.getElementById("myForm");
    // actionを自分自身に変更
    frm.action = "1.asp"
    frm.submit();
  }

  // 更新処理用
  function myKousin()
  {
    var frm = document.getElementById("myForm");
    // actionを自分自身に変更
    frm.action = "kousin.asp"
    frm.submit();
  }
//-->
</script>
としておいて 更新ボタンの出力を
response.write "<input type=""submit"" value=""更新"" onclick=""return myKousin();"" >"
とします

21件で 4ページ目を表示してしまう件に関しては
変数 nMaxやAllCnt が正しい値なのかをチェックしてみてください

nMax = Int(AllCnt/10) + (-1)*(((AllCnt/10)-Fix(AllCnt/10))>0)
といった具合にしてみてください
    • good
    • 0
この回答へのお礼

sea_clear_skyです。
何回も回答ありがとうございます。
無事正常に動作させることができました。
これもredfox63様のおかげです。
ASPに関連する質問にすべて回答して頂いてありがとうございました。
丁寧にわかりやすく教えて頂いてありがとうございます。
また、機会があれば、何卒よろしくお願いします。

お礼日時:2008/12/27 10:08

ページングの最終ページは端数の切り上げではなく端数の切捨てでいいのでしょう



nMax = Int( AllCnt / 10 )
としてみてください
    • good
    • 0

前の回答は寝ぼけていたようです m(__)m



フォームの出力をこのような具合にして
<form id="myForm" method="get">
<%
dim ss, nMax
ss = Request("page_num")
if ss = "" then ss = "0"
'Response.write( "ss : " & ss & "<br>"& vbcrlf)
ss = CInt(ss)
'allcnt = 100
nMax = abs(int(-1 * ( AllCnt/10 ) ) )
response.write "<input type=""submit"" value=""&lt;&lt; 最初"" onclick=""return myClick(0);"">" & vbcrlf
response.write "<input type=""submit"" value=""&lt; 前の10件"" onclick=""return myClick(-1);"""
if ss < 1 then
  ' 最初のページなら無効にする
  Response.write " disabled=""true"" "
end if
response.write ">" & vbcrlf
response.write "<input type=""submit"" value=""次の10件 &gt;"" onclick=""return myClick(1);"""
if ss > nMax -1 then
  ' 最終ページなら無効にする
  Response.write "disabled=""true"" "
end if
response.write ">" & vbcrlf
response.write "<input type=""submit"" value=""最後 &gt;&gt;"" onclick=""return myClick("
response.write nMax
response.write ");"">" & vbcrlf
response.write "<input type=""hidden"" name=""page_num"" value=""" & _
ss & """>" & vbcrlf
%>
</form>

スクリプト側を
<script type="text/javascript">
<!--
  function myClick( num )
  {
    var pagenum = document.getElementById( "page_num" );
    if ( Math.abs( num ) == 1 ) {
      // 引数の絶対値が1なら 加減算
      pagenum.value = new Number(pagenum.value) + num;
    } else {
      // それ以外は即値として使用
     pagenum.value = num;
    }
    document.getElementById("myForm").submit();
  }
//-->
</script>
といった具合でどうでしょう
    • good
    • 0
この回答へのお礼

sea_clear_sky8です。
忙しいところ回答ありがとうございます。
ページ動作で、データベースに21件データがあります。
21件なら3ページが最後のページですなのですが、
最後のページへのボタンを押すと4ページ目になり、データの項目だけ
表示されています。
どう直していいか、わからない状態です。
それと、<Form>にACTIONで更新処理のASPを指定しているのですが、
更新処理のASPを指定すると最初、次へ、前へ、最後へのページで
更新処理をして、ページングができません。
最初、次へ、前へ、最後へのボタンの<INPUT TYPE="Button"に変更しても
Formで更新処理を指定すると、ページングができません。

[フォーム指定]
response.write "<form id=""myForm"" method=""get"" action=""kousin.asp"">"

最初、次へ、前へ、最後へのボタンは教えて頂いたようにしています。
更新ボタンは次のようにしています。
response.write "<input type=""submit"" value=""更新"">"
忙しいところすいません、時間のあるときでいいので、
よろしくお願いします。

お礼日時:2008/12/26 21:20

HIDDENフィールドは2つでいいように思います


1つは移動先の判断用
次ページなら1、前ページなら-1、最初なら0、最後なら999といった具合にしておく
1つは現在のページを記憶しておくために使用

Response.Write("<input type=""hiddin"" name=""NextPage"" value=""0"">")
Response.write("<input type=""hidden"" name=""NowPage"" value=""" & Request("page_num") & """>" )

[最初][前の10件][次の10件][最後]
などのリンク(またはボタン)のonclickでNextPageの値を変更します
<a onclick="return myClick(0);">[最初]</a>
<a onclick="return myClick(-1);">[前の10件]</a>
<a onclick="return myClick(1);">[次の10件]</a>
<a onclick="return myClick(999);">[最後]</a>

<script type="text/javascript">
<!--
  function myClick( num )
  {
    var objPageNum = document.getElementById("PageNum");
    objPageNum.value = num;
    document.getelementById("myForm").Submit();
  }
//-->
</script>
といった具合でどうでしょう ・・・
    • good
    • 0
この回答へのお礼

sea_clear_sky8です。
回答ありがとうございます。
下記のように変更しましたが、正常に動作しない状態です。
また、HIDDENのNEXTPAGEをどう使用するのかわかりません。
[変更]
次のページ、前のページはpage_numの値を+1,-1しなくてよろしいでしょうか?

function myClick(num)
{
var frm = document.getElementById("page_num");
if(num==1){
frm.value = frm.value + 1
}
else(num==-1){
frm.value = frm.value -1
}
else{
frm.value = num
}
frm.action ="bunkatsu1.ASP"; 
frm.method= "get"
frm.getElementById("myForm").submit();
}

response.write "<input type=""Submit"" value=""最初&gt""onclick=""myClick(0);"">"
response.write "<input type=""Submit"" value=""前の10件&gt""onclick=""myClick(-1);"">"
response.write "<input type=""Submit"" value=""次の10件&gt""onclick=""myClick(1);"">"
response.write "<input type=""Submit"" value=""最後&gt""onclick=""myClick(999);"">"

何故か上記の次へ、前へ、最初へ、最後へのボタンを押すと
FORMで指定した更新処理のページへSUBMITします。
以前みたいにJAVASCRIPTからページ移動できなくなっています。
忙しいところすいませんが、よろしくお願いします。
仕事の都合で、この時間帯の返信になりますが、よろしくお願いします。
以上です。

お礼日時:2008/12/25 21:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!