• 締切済み

エラー表示をするには

echo "<form action=$PHP_SELF method=POST>\n"; echo "<input type=hidden name=action value=regist>\n"; echo "<input type=submit value=登録>\n"; 登録ボタンを押すとリロード(?)されるのですが、 その前に入力された値のチェックを行いたいです。 チェックの部分はつくれたのですが、 登録ボタン押下 ↓ チェック ↓ OK      NG ↓       ↓ リロード    警告ダイアログ表示(javascriptのアラートのイメージ) このような流れのコードを作成できません。(知識不足・経験不足のため) どんな感じになるのでしょうか? また、サンプルなどはあるとありがたいのですが。

  • PHP
  • 回答数2
  • ありがとう数1

みんなの回答

回答No.2

送信の前にJavaScriptでチェックを行うんですよね。 フォームの仕様が示されていませんので、 例では「空白ではないかどうか」しか調べていませんが、 例えば「郵便番号など書式が正しい形式になっているかどうか」や 「必須のチェックボックスがチェックされているかどうか」など フォームの仕様によってはさまざまな記述が必要になります。 print <<<EOF <script> function validateForm(form) { if (form.name1.value == '') { alert('名前が記入されていません'); return false; } return true; } </script> <form action=$PHP_SELF" method=POST onSubmit="return validateForm(this)"> <input type=hidden name=action value=regist> 名前 <input type=text name=name1> <input type=submit value=登録> </form> EOF;

回答No.1

プログラムは式次第のことも差すように、既に流れが出来ているようですから、やり方をそのまま書いていけばOKです。下記のようなフローでいけば良いと思います。 <?php $alertstr ="";//アラート用変数 //登録ボタンが押されて変数があったらチェック if(isset($_POST["action"]) && $_POST["action"] == "regist"){ //チェックするスクリプトOKなら$check=TRUE、NGなら$check=FALSE if($check){ //チェックOKなので、リロード header("Location: {$PHP_SELF}"); }else{ //NGなのでアラート $alertstr = "<script> alert('アラート内容') </script>"; } } //ここから通常の表示 ?> <html> <head> <?php echo $alertstr; ?> </head> <body> ....フォーム等 </body> このような場合、無理してリロードしなくても良いと思いますけど。

hiromu0103
質問者

お礼

ありがとうございます。 ごめんなさい。 言っていることとやりたいことが違ってました。 チェックNGの時は  警告ダイアログ表示するだけ。  ブラウザの表示は何も変わらない。 ようにしたいです。 taketan_mydns_jpさんに提示して頂いたものだと チェックNGの時に  アラート表示  最初のページに戻る ようになってしまいます。 私のやりかたが違うのでしょうか?

関連するQ&A

  • 特定の文字が文字化けします

    こんにちは。 とても困ってます。 例えば、phpで echo "<P><FORM ACTION=\"main.php\">"; echo "<METHOD=POST>"; echo "<INPUT TYPE=HIDDEN NAME=res VALUE=\str_request\">"; echo "<INPUT TYPE=HIDDEN NAME=action VALUE=post>"; echo "<TEXTAREA NAME=\"str\" ROWS=\"8\" COLS=\"50\"></TEXTAREA>"; echo "<INPUT TYPE=\"submit\" VALUE=\"send">"; echo "</METHOD></FORM></P>"; と記述して「send」ボタンを押下して文字列をPOSTした場合、 受け取った文字($str)の特定の文字が文字化けします。 特定の文字とは、「る」「れ」「ろ」などです。 どなたか原因がわかる方いらっしゃらないでしょうか?

    • 締切済み
    • PHP
  • 確認画面で表示される商品名にリンクをつけるには!?

    よくショッピングカートとかで表示される確認画面で商品名は表示されるのですがこれをクリックして新しい画面(***.html)が出るようにするにはどうすればよいのでしょうか?よろしくお願いいたします。 ちなみに現在は下記のような感じになっています。 <form method=post action="../cart.asp"> <input type=hidden name="action" value="regist"> <input type=hidden name="goods" value"商品名"> <input type=hidden name="unit" value="100"> <input type=submit value="カゴへ"> </form>

    • ベストアンサー
    • CGI
  • CGIプログラムでのボタン表示のさせかた

    print "<form action=\"$script\" method=\"POST\" target=\"_blank\">\n"; print "<input type=hidden name=mode value=note>\n"; print "<input type=hidden name=job value=blank>\n"; print "<input type=submit value="説明表'>"</form>\n"; print "<form action=\"$home\" method=\"POST\" target=\"_blank\">\n"; print "<input type=hidden name=mode value=_top>\n"; print "<input type=hidden name=job value=blank>\n"; print "<input type=submit value='トップ'></form>\n"; というCGIプログラムの文章があるのですが、 上記の記述で実行すると、 「説明表」ボタンと、「トップ」ボタンが縦に並んで表示されてしまいます。 これを、横に表示させるようにするには、 どのように変更すばいいのでしょうか? 参考になるかわかりませんが、「説明表」をクリックして表示される文章は、 他のCGIプログラムの中に記述されています。

    • ベストアンサー
    • CGI
  • postのタイムラグ

    以下のソースでPOSTの値が取れないときがあるので困っています。 具体的にはページを表示してから30秒程度待ってからの クリックじゃないとPOSTの値が取れません。 GETの場合はページ表示後すぐにボタンをクリックしても大丈夫でした。 原因が分からず途方に暮れています。 お知恵をお貸しください。 PHP Version 5.2.3 <?php $P_data = $_POST["pg"]; print("POST=>".$P_data."<BR>"); $G_data = $_GET["pg"]; print("GET=>".$G_data."<BR>"); print <<< DOC_END <html> <head> </head> <body> DOC_END; echo"<form action=test.php method=post>"; echo"<input type=hidden name=pg value=1>"; echo"<input type=submit value=あ>"; echo"</form>"; echo"<form action=test.php method=post>"; echo"<input type=hidden name=pg value=2>"; echo"<input type=submit value=い>"; echo"</form>"; echo"<form action=test.php>"; echo"<input type=hidden name=pg value=3>"; echo"<input type=submit value=う>"; echo"</form>"; echo"<form action=test.php>"; echo"<input type=hidden name=pg value=4>"; echo"<input type=submit value=え>"; echo"</form>"; print <<< END </body> </html> END; ?>

    • 締切済み
    • PHP
  • フォームタグについて

    二つのフォームタグを一つのボタンで送信したいのですが、可能でしょうか? <form action="http://aaa/" method="post"> <input type="hidden" name="comment" value="テキスト "/> <input type="hidden" name="mode" value="com_w" /> <input type="hidden" name="no" value="1" /> <input type="submit" value="登録" /></form> <form action="http://bbb/" method="post"> <input type="hidden" name="comment" value="テキスト "/> <input type="hidden" name="mode" value="com_w" /> <input type="hidden" name="no" value="2" /> <input type="submit" value="登録" /></form> 同じデータをもっているフォームですが、送信するページが別々になっています。 この二つのフォームを一つの送信ボタンで送信できますでしょうか? 色々と調べましたがわかりません。 よろしくお願いいたします。

  • 新規登録を常に表示させる事はできますでしょうか。

    フリーのPHPの更新履歴を使わせていただいてます。先日ご質問しまして解決したのですが、また分からない事が・・すみません。 管理画面で通常は「新規登録」ボタン。編集ボタンを押すと「編集登録」「キャンセル」ボタンが表示されます。 //-------------------------------------------- if (!$delete_sw){ if ($fix){$button_name = "編集登録";}else{$button_name = "新規登録";} echo " <input name='Submit_data' type='submit' value='".$button_name."'>"."\n"; if ($fix){ echo " <input name='cancel' type='submit' value='キャンセル'>"."\n"; echo " <input name='fix' type='hidden' value='true'>"."\n"; echo " <input name='radio' type='hidden' value='".$radio."'>"."\n"; } //------------------------------------------------ 編集のとき「新規登録」ボタンも表示させて「編集登録」「新規登録」のどちらでも選べるようにしたいのですが「編集登録」「新規登録」の表示は出来ても、どちらのボタンを押しても「新規登録」されてしまったりします。下のこの辺りも設定が必要でしょうか? // データの登録/////////////// function regist_data_r1(){ global $fix,$radio,$page_r1; if ($fix && $radio){ //編集登録 fix_data_r1(); $fix = ""; }else{ //新規登録 new_data_r1(); $page_r1 = ""; } } ///////////////////// 初心者で分かり辛いご質問ですみません。宜しくお願い致します。 スクリプトはこちらのものを使わせていただいてます。 http://www.hot-dining.com/free_cgi/webturn-plus.php

    • 締切済み
    • PHP
  • SESSIONを使用したユーザ登録を作成しています。

    SESSIONを使用したユーザ登録を作成しています。 フォーム→確認ページ→登録完了という流れのページを作成しています。 ソースは下記のとおりになります。(文字数制限のため、ソースを省略しています。) フォームページ /* form.php */ <?php session_start(); ?> <html> <body> <form action="confirm.php" method="POST"> 名前:<input type="text" name="name" value="<?php echo $_SESSION["name"]; ?>" > <input type="hidden" name="regist" value="<?php echo $regist; ?>" /> <input type="submit" name="confirm" value="確認"> </form> </body> </html> 確認ページ /* confirm.php */ <?php session_start(); $regist = $_POST["regist"]; ?> <html> <body> 名前:<?php echo $name; ?> <form action="complete.php" method="post"> <input type="hidden" name="regist" value="<?php echo $regist; ?>" /> <input type="submit" name="submit" value="登録" /> </form> </body> </html> 登録完了ページ /* complete.php */ <?php session_start(); $regist = $_POST["regist"]; $link = DBNAMEなどの設定 $name = htmlspecialchars($_POST["name"]); $query = "INSERT INTO `user` (`name`) VALUES('$name')"; $result = mysql_query($query, $link); if ($result) { $msg = '登録しました。'; } else { $msg = '登録に失敗しました。'; } ?> <html> <body> <?php echo $msg; ?> </body> </html> としています。 ご質問なのですが、フォーム画面にて名前を入力して、確認画面では名前が表示されるのですが、登録完了では空の値になってデータベースに登録されてしまいます。 たぶん確認画面から登録完了画面への受け渡しができていないのはわかるのですが、記述方法がわかりません。 PHPは初心者のため、おわかりの方がいらっしゃいましたら、ご教授いただけないでしょうか? 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • 文字の表示色を変えたい

    いつも、ありがとうございます。 下の記述で、<他社より安い場合は・・・>の文字を 青くしたいのですが、いろいろとやっても、 青文字になってくれません。 500 Internal Server Error になってしまいます。 どうやれば、青文字になりますか? **********記述文************************ print "<table>\n"; print "<tr>\n"; print "<td>\n"; print "<form action=\"$script\" method=\"POST\" target=\"_blank\">\n"; print "<input type=hidden name=mode value=note>\n"; print "<input type=hidden name=job value=blank>\n"; print "<input type=submit value=ご 利 用 方 法></form>\n"; print "</td><td>\n"; print "<form action=\"$home\" method=\"POST\" target=\"_self\">\n"; print "<input type=hidden name=mode value=_top>\n"; print "<input type=hidden name=job value=blank>\n"; print "<input type=submit value='ト ッ プ へ 戻 る'>\n"; print "</form></td></tr></table> <他社より安い場合は、ご相談ください。>

    • ベストアンサー
    • CGI
  • ショッピングカートの送信ボタンを画像にするには!?

    ショッピングカート自体はちゃんと機能しているのですが、送信ボタンを画像にするのにはどうすればよいのでしょうか。よろしくお願いします。 ちなみに今の設定はこんな感じになってます。 <form method=post action="cart.asp"> <input type=hidden name="action" value="regist"> 商品A <input type=hidden name="goods" value="商品A"> 単価 1,000円 <input type=hidden name="unit" value="1000"> 購入数 <input type=text name="amount" value="0" size=3>個<br> 備考 <input type=text name="rem" value="" size=20> <input type=submit value="カゴへ"> </form> これをxxx.jpgという画像のボタンにしたいのですが…

  • 送信した文字を繰り返し表示

    PHPかなり初心者です。 1.テキストフィールドに適当な言葉「xxx」を入力し、送信。(form.html) <form action="regist.php" method="post"> <input type="text" name="name" size="30" value=""><br> <input type="submit" value="送信"> </form> 2.送信内容「xxx」を表示。(regist.php) <?php echo $_POST["name"] ?> ここまではいいのですが、 3.regist.phpにボタンを設置し、ボタンをクリックすると再び「xxx」を表示させる。 ボタンを押すかぎり、永遠に「xxx」を表示させるということをしたいのですが、できまなくて困っています。 ※一度このような動きをするサイトを見たことがあるのですが、URLがわからず。。。 現段階では、ボタンに同ページへのリンク(regist.php)を貼っていますが、クリックすると「xxx」は消えてしまします。 <?php echo $_POST["name"] ?> <a href="regist.php">ボタン</a> 送信内容が引き継げていなのだろうとは思うのですが わからず、、参考スクリプトもあれば助かります。よろしくおねがいします。

    • 締切済み
    • PHP

専門家に質問してみよう