• ベストアンサー

PHPのページング機能で、実際のページ数以上の数字を入力した時にエラー文をポップアップ表示させたい。

PHPでページング機能を作ることが出来たのですが、 テキスト・タイプのフォームを下記のようにすると、 <input type="text" size="5" name="page" value=""> フィールドの中に表示したいページの数字を入力して フォームを送信するとそのページへ移動するという仕組みで、 ここまでは問題なく出来たのですが、 実際のページ数以上の数字を入力した時に エラー文をポップアップ表示させたいのです。 例えば、実際1ページしかないのに、フィールドの中に2を入力して 送信すると、エラー文が出てくるという感じです。 送信ボタンにOnClickなどでJavaScriptを呼び出すようにし、 入力されたページ番号が適正かどうかのチェックを行い、 適正であればそのまま送信処理、不正であればアラートを出す という仕組みなのは大体分かりますが、 余りJavaScriptに詳しくないので、 どんなコードを作成すれば良いのか分かりません。 何方か、サンプルコードなど教えて頂けたら大変助かります。 お手数をおかけしますが、どうぞ宜しく御願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

#1の方のとは全然違いますが こんな感じでいけるんじゃないかと思います・・・・・ <html> <head> <script type="text/javascript"> MaxPage=<? echo $maxPage; ?>; function check(){ obj=document.forms[0].elements["page"]; if(obj.value==""){ alert("数字を入力してください!!"); return false; }else if(isNaN(obj.value)){ alert("数字を入力してください!!"); return false; }else if(obj.value<=0||obj.value>MaxPage){ alert("1から"+MaxPage+"までの整数を入力して下さい"); return false; }else{ return true } } </script> </head> <body> <form action="<?=$_SERVER['PHP_SELF'] ?>" method="get" onsubmit="return check()"> <input type="text" size="5" name="page" value="" /> <input type="image" src="images/go.jpg" alt="送信" /> </form> </body> </html> .

edokko-x
質問者

お礼

arenani_sorenaniさま、 早速御回答して頂きどうも有難うございます。 arenani_sorenaniさまの教えて頂いたスクリプトで 問題が解決致しました。 また何かありましたらその時はどうぞ宜しく御願い致します。 どうも有難うございました。

その他の回答 (2)

noname#84373
noname#84373
回答No.3

ごめん!でかけなきゃならなくて・・・ <input type="image" value="submit" src="images/go.jpg" onClick="chk()?true:false"> じゃ飛べないかもよ? chk()でおOKならその中で飛ばしては? document.formname.submit(); formname はフォームの名前、省略されてるみたいだけどね。 ごめん!本当に時間が無い!

edokko-x
質問者

お礼

_pipi_さま、 お忙しい中又御回答して頂きどうも有り難うございます。 お蔭様で問題が解決致しました。 又機会がありましたらその時はどうぞ宜しく御願い致します。 どうも有難うございました。

noname#84373
noname#84373
回答No.1

<html> <body> <form action="test1.html"> <input type="text" size="5" name="page" value="" onChange=" var v=this.value; if(!v.match(/^\d$/))alert('不正な文字'); if(v<0 || 5<v) alert('範囲外です'); "><br /> <input type="submit" value="go" onClick="chk()?true:false"> </form> <script> function chk(){ v=document.getElementsByName('page')[0].value; if(v.match(/^\d$/) && 0<v && v<6) return true; alert('不正な値です'); return false; } </script> </body> </html>

edokko-x
質問者

補足

_pipi_さま、早速の御回答どうも有難うございます。 下記のようにスクリプトの中にPHPコードをいれたのですが、 例えば、そこには1ページしかページ数がないとして、 2以上の数字を入れて送信ボタンをクリックすると 「範囲外です」というアラート・メッセージを出すのは成功したのですが、 同じ数字「1」や「0」の数字、空文字、などを入れて送信ボタンを押すと、 「不正な値です」というアラート・メッセージを出してから ページがリロードします。 そのメッセージを出した後、何故だか、2以上のどんな数字を入れても 同じ「不正な値です」というアラート・メッセージを出してから ページがリロード(その数字のページを表示しようとする)してます。 スクリプトの中にあるPHPコードの $maxPage は その表示されてるページの総ページ数です。 お忙しい中すみません、 お手数ですが、教えて頂けると大変助かります。 宜しく御願いします。 <form action="<?=$_SERVER['PHP_SELF'] ?>" method="get"> <input type="text" size="5" name="page" value="" onChange=" var v=this.value; if(!v.match(/^\d$/))alert('不正な文字'); if(v<0 || <? echo $maxPage; ?><v) alert('範囲外です');"> <input type="image" value="submit" src="images/go.jpg" onClick="chk()?true:false"> </form> <script> function chk(){ v=document.getElementsByName('page')[0].value; if(v.match(/^\d$/) && 0<v && v<<? echo $maxPage; ?>) return true; alert('Invalid'); return false; } </script>

関連するQ&A

  • 入力エラー文に表示する最大入力文字数について

    DBを使ったwebアプリを制作しています。 例えば、名前を入力する欄でDBのカラムサイズが256だった場合、 その入力フォームのテキストフィールドでは ・maxlengthを256を指定 ・入力値が256バイト以上なら入力エラーにする。 と考えられ、入力エラー文には 「氏名は全角128文字(半角256文字)以内で入力して下さい」 のように出すことが想定できます。 ユーザが不特定多数だった場合、エラー文に堂々とDBのカラムサイズを 表示させることに躊躇しているのですが、最近のWebアプリのインターフェースではどうしているのでしょうか? 周りに誰も相談できる人がいなくて、困っています。。。 宜しくお願い致します。

    • ベストアンサー
    • HTML
  • 4桁の数字以外を入力したらエラーを表示したいです

    if文とwhile(for)文の範囲の課題で4桁の数字を入力してどうこうというプログラムを作っています。 課題には書かれていませんが、4桁の数字以外を入力したときにエラーを表示させるにはどんな方法がありますか? 10000以下をはじけばいいんじゃないかと思ったのですが、これだと「0001」などもはじかれてしまうようでして、アルファベットや記号が含まれるものも同時にはじきたいのですが、何か良い方法がわかる方いましいたら、ぜひ解説をお願いします。 なお課題では、理解していれば習っていない関数も使っていいと書かれていました。こんな関数を使ってみては?というものがあれば教えていただけるとうれしいです。

  • エラー表示(ポップアップ)が出ないようにしたい

     時々下記のような「エラー表示」が出てきて困ります、終わりにエラー報告を送信するかしないかを決定するボタンがありますが、いずれを押しても現在読んでいるページは消えてしまいますので全く困ります。  なお、内容は「問題が発生したため、microsoft innternet explorer を終了します。作業中であった場合は、その情報は失われた可能性があります。」となっています。  以上宜しく御願いします。  

  • phpで入力ホームエラーメッセージ表示について

    php エラーメッセージ表示について ホームページの入力ホームエラーメッセージ表示のコードを書いています。 コードは <?php function validation($data) { $error = array(); // 名前のバリエーション if ( empty($data['your_name']) ) { $error[] = " 「名前」を入力してください。"; } //フリガナのバリエーション if( empty($data['hurigana']) ) { $error[] = " 「フリガナ」を入力してください。"; } なのですが、写真の入力欄にある、クレジットカードの選択についてもエラーメッセージを表示したいのですが、どういうコードを書いたら良いでしょうか?教えてください。 例えばクレジットカードと銀行振り込みを選択できるのですが、どちらかを選択しない場合に、「決済方法を選択してください」のようにメッセージを表示させたいです。

    • 締切済み
    • PHP
  • 特定の数字が入力されたらエラー表示をだしたい

    windows7でoffice2010を使っています。 エクセルの表で、F3もしくはG3に”4”か”7”か”8”が入力されるか 空白の場合H3に「エラー」と表示させたいです。 (1.2.3.6が入力された場合は無視) 数字がとびとびのせいか、うまくいきません。 どうしたらいいでしょうか。

  • ポップアップメニューを使ったページでIEのエラーが

    ポップアップメニューをつかったページを、JavaScriptで作ったのですが、表示動作ともにIEで正常におこなわれるのですが、IE終了時にアプリケーションエラーで「"0x041c5f6c"の命令が"0x041c5f6c"のメモリを参照しました。メモリが"read"になることはできませんでした」と表示されてしまうのですが、原因はなんでしょうか?お分かりになる方がいらっしゃいましたら教えてください。

  • テキストフォームで数字が3桁以上または以下の入力があったらエラーをする処理。

    こんにちわ。テキストフォームに入力した数字が3桁以上または以下だったらエラー画面になるという処理を考えています。3桁いがいはだめという処理はどうすればいいんでしょうか?記述の仕方を教えてください。よろしくお願いします。

    • ベストアンサー
    • Perl
  • ACCESSフォームで複数パターンのフィールドの移動

    ACCESS2007を使っています。 データ入力のフォームを作成しています、高度なことをやりたいと思い、本を買ったりしてしらべましたが、難しくてわからないので質問させてください。 フィールドAに3桁のコードを入力してENTERを押すと、クエリBが実行されてフィールドCにコードに対応した文字が入力されます。(この仕組みはフィールドに更新後処理にマクロをしこみ実行できました)これに加えて、 フィールドAにコード外の数字”9”を入力してENTERを押すと、フィールドDにカーソルが移動し 同じく、フィールドAに何も入力しないNULLの状態でENTERを押すと、フィールドEにカーソルが移動する仕組みをつくりたいのですがどこにどのようにしたらよいかが全くわかりません。 ご教示くださるようお願いいたします

  • charを使わずに4桁の数字以外を入力したらエラーを表示したいです

    http://oshiete1.goo.ne.jp/qa4515709.html 上記の質問の続きとなります。 C言語で4桁の数字を入力させ、4桁の数字以外が入力されたらエラーを表示し、 4桁の数字が入力されたら、各位の数についていくつかの計算を行いたいです。 回答者の方のアドバイスから、文字列として入力し、字数をstrlenで、各桁の数をisdigitで判別するという方法を教えていただき、 4桁の数字以外が入力されたらエラーを表示することはできましたが、そうすると今度は計算がうまくいかなくなってしまいました。 例えば文字列としてscanf("%s",a);のようにして「1234」という文字列を入力し、これを「1234」という数値として扱うことはできませんか? または、strlen,isdigitを使わずに数値が4桁の整数であるかどうかを判別することはできませんか? もし良い方法をご存知の方いましたら、解説をお願いします。

  • PHPで入力した内容をMYSQLに登録するとエラーが表示。

    PHPで入力した内容をMYSQLに登録するとエラーが表示。 PHP側のフォームにパソコンと入力しMYSQL側に登録すると、 DB Error unknown errorと表示されていますが、 MYSQLのデータベースの中を確認すると、パソコンと登録されています。 PHPとMYSQLはsjisで設定します。 このエラーの回避は出来るのでしょうか?ご教授お願いします。

    • 締切済み
    • PHP

専門家に質問してみよう