- ベストアンサー
PHPで別の子窓でメッセージを表示する方法
- PHPとMySQLを連携させた入力登録画面でDB上に該当がない場合、エラーメッセージを別の子窓でポップアップさせる方法について質問です。
- JavaScriputのアラートや子ウィンドウを表示させる方法を教えてください。
- 音が出るとなお良いです。急いでいるので、教えていただけると助かります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
このページのをそのままコピペされたでしょうか? 「教えてOK」では、行頭半角スペースが無視されて しまってプログラムが読みにくいので、全角スペースを 入れています。 コピペする時は、貼り付けたあと、行頭の全角スペースを タブか半角スペースに置き換えてください。 あと、下の方で diaplayError などなっていますが もちろん displayError のタイプミスです(苦笑) confirm は alert でも結構です。 あと、sos000 さんのプログラムですけど if ($read and $mem_no != '') { ?> ←★ PHP 部分を閉じないといけません ★ <SCRIPT language="JavaScript"> <!-- function hello(){ alert("メンバー番号を入力して下さい。"); } //--> </SCRIPT> <?php PHP 部分と HTML(JavaScript)部分をはっきり 区別しないと駄目です。 「PHP はサーバで解釈され、HTML はブラウザで解釈される」 を理解してもらわないと・・・ さらに、hello() 関数は上記の場合、定義したに すぎません。実行させるには、どこかで呼び出しが ないといけません。 なんでしたら、「目立たない」のはあきらめて JavaScript を使用しない方がいいのかもしれません。 そして PHP とは別に JavaScript の勉強をした後 PHP に戻ると、このあたりが分かるようになるかもしれないです。 ポイントは『プログラムでプログラムを出力している』 という雰囲気がつかめているかどうかです。 PHP で書かれたプログラムを実行することで JavaScript プログラムを生成しているんですね。
その他の回答 (1)
- togino
- ベストアンサー率75% (97/129)
あの・・・ 残念ながら sos000 さんは根本的な点をご理解されてないようです。 PHP はサーバで実行されるスクリプトでして JavaScript のようにクライアントで実行するもの ではありません。 だから、PHP にクライアント側を制御する命令は 一切ありません。 質問の内容を実現したい場合は PHP にて JavaScript を出力させれば結構です。 <?php function displayError($message) { ?> <script type="text/javascript"> <!-- confirm("<?php echo $message; ?>"); // --> </script> <?php } ?> <html> <head> <?php if($error){ diaplayError("会員コードが存在しません"); } ?> </head> <body> ... </body> </html>
補足
togino様 回答メッセージを頂きありがとうございます。さっそく頂いた例題で試してみたのですが、「Parse Error on line2」となってしまいました。そこで function displayError($message); と行の最後に「;」を追加してみたのですがダメでした(泣) 今回のプログラムではPHPプラグラムをHTML宣言の始まる前にいろいろと書き込んでいて、そこでDB接続から入力項目のチェックをしていて、その中にif文の記述があります。 このif文により入力エラー時にエラーメッセージを出力したいのが目的ですので、PHPの記述の中に紹介いただいたjavascriptが実行できれば良いと思うのですが、それが上手くいきません。 プログラム全体の流れとしては最初にPHP部分、それからHTML宣言文、フォーム、入力項目と続いております。 toginoさんの例からいきますと、ダイアログボックル「Ok/Ng」がでる、ということですよね? PHP内のif文中に直接JavaScriptが記述可能というように理解したのですが、実際にやってみても動きません。 大変お手数ですが、再度ご教授、あるいは例題の解説をしていただけないでしょうか? 例えば、下記記述で if ($read and $mem_no != '') { $system_message = "メンバー番号を入力して下さい。"; } と現在フォームのテキストフィールドへ出力しているメッセージが目立たないので、ダイアログボックスで目立つように表示させたいというのが目的です。 そこでこの記述をjavascriptで下記のようにしてみましたが、全く動きません。私が全くphp内でのjavascriptの基本が分かっていないのだと思います。 if ($read and $mem_no != '') { <SCRIPT language="JavaScript"> <!-- function hello(){ alert("メンバー番号を入力して下さい。"); } //--> </SCRIPT> } 大変お手数ですが、よろしくご教授下さい。
お礼
PHPの部分を閉じたら、うまくいきました!!! >>PHP 部分と HTML(JavaScript)部分をはっきり区別しないと駄目です。「PHP はサーバで解釈され、HTML はブラウザで解釈される」を理解してもらわないと・・・ 今振り返ってみるとtoginoさんのお言葉がよく分かります。といってもまだまだ勉強しなければいけませんが。。。 同じダイアログボックスが2回でてしまうので、きっとどっかでループしてるのかな、、、 とにかく「JavaScriptを記述する」ことは成功しました。本当に大きな前進です。 素早く的確な回答を、本当にありがとうございました!!!