PHPフォームでエラーが発生する

このQ&Aのポイント
  • PHPのフォームでエラーが発生し、Undefined indexエラーメッセージが表示される
  • 特定の商品を選択しなかった場合に発生するエラーメッセージを回避したい
  • エラーメッセージを回避する方法を教えてください
回答を見る
  • ベストアンサー

PHPのフォームでエラーが出ます

どなたかお力添えをお願いします。 【全体の流れ】 step1.php ラジオボタンで、商品を3種類選択する template.php 選択した商品名を表示し、金額を計算して表示する step2.php 「template.php」を表示し、規約に同意する step3.php 個人情報入力画面へ ・ ・ ・ という流れでフォームを作っていますが、step1.phpでつまずいています(涙)。 step1.phpのコード(html部分は省略してます)は以下のとおりです。 商品を3つ選んだ場合は、問題なく実行できるのですが、1つ、または2つ選択 した場合、画面上部に Notice: Undefined index: plan in C:\xampp\htdocs\step1_1.php on line 10 Notice: Undefined index: uq in C:\xampp\htdocs\step1_1.php on line 11 などとエラーメッセージが出ます。 ほかは正常に動いています。このメッセージを出なくさせる方法をぜひ、教えてください! よろしくお願いいたします。 <?php session_start(); $error = ""; if(isset($_POST["submit"])==TRUE){ $_SESSION["product1"]=$_POST["product1"]; $_SESSION["product2"]=$_POST["product2"]; $_SESSION["product3"]=$_POST["product3"]; $choice1 = $_SESSION["product1"]; $choice2 = $_SESSION["product2"]; $choice3= $_SESSION["product3"]; //未入力チェック if($choice1== null){ $error .="端末を選択してください<br />"; } if($choice2== null){ $error .="プランを選択してください<br />"; } if($choice3== null){ $error .="UQ Wi-Fiサービスの利用有無を選択してください<br />"; } if($error == null){ $url = "step2.php"; header("Location: ".$url); exit(); } } ?>

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

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

  • ベストアンサー
  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.1

基本的に Notice ってのは、エラーってほどのエラーでもないかなと思います。 動作には支障はないけど、直したほうがいいよ。ってエラーです。 ただ、最近のXAMPPとかでも デフォルトは Notice も表示するようになってるので、今後は上品な書き方しなきゃいけないのかなと思ってます。 スクリプトごとに、Notice を出したくないだけなら、↓を書けばいいです。 error_reporting(E_ALL ^ E_NOTICE); 根本的に出したくないなら、php.ini をいじってください。 [PHP] error_reporting = E_ALL & ~E_NOTICE display_errors = On ↑ をせずに、Noticeを出さないのが、正攻法だと思いますが、Undefined index って何だっけ状態です。 ググったら分かりました。 http://fa3-064.dokidoki.ne.jp/note9.html plan も uq も isset で確認すればいいって事ですかね。 上記、サイトのをパクってみるとこんな感じです。 $plan = isset($_POST['plan']) ? $_POST['plan'] : ""; $uq = isset($_POST['uq']) ? $_POST['uq'] : "";

geitan
質問者

お礼

bm hiro様 回答、ありがとうございましたっ!! 書いていただいたコードを参考に・・・ セッションを使いたかったので、 セッション変数にPOSTの値を代入して、 それをまた変数に代入して、、、と2段階にしたら できました! 大変助かりました。ありがとうございましたっ!!! ちなみに、こんな感じのコードになりました(^^)↓     $_SESSION["product1"] = ""; if(isset($_POST["product1"])) $_SESSION["product1"] = $_POST["product1"]; $_SESSION["product2"] = ""; if(isset($_POST["product2"])) $_SESSION["product2"] = $_POST["product2"]; $_SESSION["product3"] = ""; if(isset($_POST["product3"])) $_SESSION["product3"] = $_POST["product3"]; if(isset($_POST["submit"])==TRUE){ $select1= $_SESSION["product1"]; $select2= $_SESSION["product2"]; $select3 = $_SESSION["product3"]; //未入力チェック if($select1 == null){ $error .="端末を選択してください<br />"; } if($select2 == null){ $error .="プランを選択してください<br />"; } if($select3 == null){ $error .="UQ Wi-Fiサービスの利用有無を選択してください<br />"; } if($error == null){ $url = "step2.php"; header("Location: ".$url); exit(); } } ?>

関連するQ&A

  • PHPでエラーが出る

    PHPでNotice: Undefined indexとエラーが出ます。 <?php $data1=$_POST["data1"]; echo $data1; ?> でエラーが出ます。  @$_POSTでやるとエラーは消えるのですが、これでは解決してないので他のやりかたを教えてください。

    • ベストアンサー
    • PHP
  • PHPの変数未定義エラー

    <p>PHPのテストです。</p> <p> <?php print $name.'さん<br />'; ?> </p> と入れてみましたが僕の場合は ------------------------------------------------------------------------ PHPのテストです。 Notice: Undefined variable: name in C:\Program Files\Apache\Apache24\htdocs\sample3-1.php on line 17 さん ------------------------------------------------------------------------- となってしまいました。$name = NULL;をあらかじめ入れておけばこのページのように ------------------------------------------------------------------------- PHPのテストです。 さん ------------------------------------------------------------------------ となってくれます。この違いはバージョンなどの違いでしょうか?

    • ベストアンサー
    • PHP
  • PHP文法エラーについて

    恐れ入ります。 下記PHP文法で、ブラウザに次のエラーが表示されます。「Notice: Undefined variable: _FORM in C:\xampp\htdocs\Step2Kadai\input.php on line 3」 該当PHP命令文は下記です。 <?php session_start(); $_SESSION['address'] = $_FORM['address']; ?> <!DOCTYPE html> <html> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>MF-02 input</title> <meta charset="utf-8"> </head> <body> <h1>MF-02 input</h1> <form action="mf_form.php" method="post"> <p>アドレス: <input type="email" name="address"> <input type="submit" value="送信"></p> </form> </form> </body> </html> 以上。エラーメッセージのline 3は、$_SESSION['address'] = $_FORM['address']; のところです。 ご指摘をよろしくお願い致します。

    • ベストアンサー
    • PHP
  • PHP初心者です。何処がエラーなのかさっぱり解りません。

    超初心者です。 PHPの勉強を始めたばかりで、いきなりつまずいています。 下記の表示になりエラーになっているのですが、何処がエラーなのか意味が解りません。 Parse error: syntax error, unexpected $end in C:\xampp\htdocs\phplesson\03\login.php on line 31 どなたか教えてください。 よろしくお願いします。 ----------------- <?php session_start(); $error_message = ""; //ログインボタンが押されたかを判定 if (isset($_POST["login"])) { if ($_POST["member_name"] == "php" && $_POST["password"] == "password") { //ログインが成功した証拠をセッションに保持 $_SESSION["login_name"] = $_POST["member_name"]; //管理者専用画面へWebブラウザをリダイレクトさせる $login_url = "http://{$_SERVER["HTTP_HOST"]}/phplesson/03/anq_result.php"; header("Location: {$login_url}"); exit; } $error_message ="メンバー名かパスワードを間違えています。"; } ?> <html> <body> <?php if ($error_message) { print '<font color="red">' .$error_message. '</font>'; } ?> <form action="/phplesson/03/login.php" method="post"> メンバー名:<input type="text" name="member_name" value="" /><br /> パスワード:<input type="password" name="password" value="" /><br /> <input type="submit" name="login" value="ログイン" /> </form> </body> </html>

    • ベストアンサー
    • PHP
  • PHP5.2.2について

    はじめまして、こんばんは。 PHPを触り始めて間もない者ですが、困り果てて投函させて頂くことにいたしました。 先日、OS(WinXPsp2)を再インストールした際、PHP(5.2.2)、Apache(2.0.59)、MySQL(4.1.22)を以前利用していたものより新しいバージョンをインストールしたのですが、以前作成したスクリプトを表示させたところ、これまで何ら問題ないところでエラーが出てきて、その対処が分からずご指導いただければ・・と思っております。 index.php <?php session_start(); require_once("./auth.php");  ・  ・ auth.php <?php session_start();//Notice: A session had already been started - ignoring session_start() $mail = $_POST['mail'];//Notice: Undefined index: mail $passwd = $_POST['passwd'];//★ if($mail != "" || $passwd != ""){  ・  ・ 上記、コメントの箇所にエラーが出てしまうのですが、これまでは同じソースでも問題がなかったための質問です。説明不足名ところがあるかとは思いますが、上記エラーはインストール時の設定が間違っているのか?それともバージョンによるものなのか?(その場合は対処法など・・)を知りたく投函させていただきました。 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • JavascirptかPHPでコメントフォーム

    http://qitailang.small.jp/webtech/commentbox/commentform.html このサイトのコメントフォームを使おうと思っているのですが 行き詰っています。 アパッチのhtdocsの直下にフォルダを置き、 フォルダ名をcommentform_modifiedとしてその下にsample.htmlを置き さらにその下に commentform commentform.php commentform.js commentform.css commentfiles としました。今の所パーミッションというのは触っていません。 元々このサイトとは違う練習用のPHPファイルはうまくいっています。ただ今回、 http://localhost/commentform_modified/sample.htmlとして実行した所PHPのエラーが出ています。 Notice: Use of undefined constant file - assumed 'file' in C:\Program Files\Apache\Apache24\htdocs\commentform_modified\commentform\commentform.php on line 17 Notice: Use of undefined constant cmd - assumed 'cmd' in C:\Program Files\Apache\Apache24\htdocs\commentform_modified\commentform\commentform.php on line 21 Notice: Undefined index: cmd in C:\Program Files\Apache\Apache24\htdocs\commentform_modified\commentform\commentform.php on line 21 Notice: Use of undefined constant cmd - assumed 'cmd' in C:\Program Files\Apache\Apache24\htdocs\commentform_modified\commentform\commentform.php on line 57 Notice: Undefined index: cmd in C:\Program Files\Apache\Apache24\htdocs\commentform_modified\commentform\commentform.php on line 57 まず17行目から21行目辺りですが $commentdir = 'http://localhost/commentform_modified/commentform'; /*--------------------------------------------*/ $Comment = array(); if (!is_dir($commentdir)) mkdir($commentdir); if ($_REQUEST[file] && is_file("$commentdir/$_REQUEST[file].dat")) { $a=1; $Comment = file("$commentdir/$_REQUEST[file].dat"); } if ($_REQUEST[cmd] == 'commentRegist') { としています。 57行目は } elseif ($_REQUEST[cmd] == 'delete') { となっています。 双方とも何がいけないんでしょうか?

    • ベストアンサー
    • PHP
  • php フォーム入力のあと同じページ内に移行

    <?php session_start(); $error_message = ""; if(isset($_POST["login"])) { if($_POST["user_name"] == "webtan" && $_POST["password"] == "webtan_pass") { $_SESSION["user_name"] = $_POST["user_name"]; $login_success_url = "login_success.php"; header("Location: {$login_success_url}"); exit; } $error_message = "※ID、もしくはパスワードが間違っています。<br> もう一度入力して下さい。"; } ?> ① $login_success_url = "login_success.php"; ② $error_message = "※ID、もしくはパスワードが間違っています。<br> もう一度入力して下さい。"; 同ページ内でのPOSTの受け渡しをしたいのですが、どうしたら良いでしょうか?

    • 締切済み
    • PHP
  • PHP初心者です。エラーが出て困っております。

    ※下記がスクリプトです。((エラーは最下部にございます。) <?php require('../dbconnect.php'); session_start(); if (!empty($_POST)) { // エラー確認 if (isset($_POST['name']) == '') { $error['name'] = 'blank'; } if (isset($_POST['mail1']) == '') { $error['mail1'] = 'blank'; ..........省略 } } // 重複アカウントチェック if (isset($_POST['mail1'])) { if (empty($error)) ; $sql = sprintf('SELECT COUNT(*) AS cnt FROM ○○ WHERE mail1="%s"', mysql_real_escape_string($_POST['mail1']) ); $record = mysql_query($sql) or die(mysql_error()); $table = mysql_fetch_assoc($record); if ($table['cnt'] > 0) { $error['mail1'] = 'duplicate'; } } if (empty($error)) { // 画像をアップロードする $upfile = date('YmdHis') . $_FILES['upfile']['name']; move_uploaded_file($_FILES['upfile']['tmp_name'], '../member_picture/' . $upfile); $_SESSION['join'] = $_POST; $_SESSION['join']['upfile'] = $upfile; header('Location: check.php'); } } // 書き直し if (isset($_REQUEST['action']) == ('rewrite')) { $_POST = $_SESSION['join']; $error['rewite'] = true; } ?> <html.....省略 <body> <h1>会員登録</h1> <div id="content"> <p>記入ください。</p> <form action="" method="post" enctype="multipart/form-data"> <dl> <dt>ニックネーム<span class="required">必須</span></dt> <dd> <input type="text" name="name" size="35" maxlength="255" value="<?php if (isset($_POST['name'])) {echo htmlspecialchars($_POST['name'],ENT_QUOTES, 'UTF-8'); } ?>" /> <?php if (!isset($error['name'])) {$error['name']="blank";} if ($error['name'] == 'blank'): ?> <p class="error">* ニックネーム</p> <?php endif; ?> </dd>................続く ※エラーは、 Notice Undefined index: name in....... です。 どうすれば上記エラーが消えますでしょうか? また、その際はどこをどのように直せばよろしいでしょうか。 お手数をおかけ致しますが、お力をお貸しいただければ嬉しく思います。 お願い致します。

    • ベストアンサー
    • PHP
  • php5のフォーム

    サーバーの仕様が変わってフォームが動かなくなって困っています。 現在のフォームはphp4で、仕様はphp5にしか対応しなくなったということです。 古いコードが使われているからだとは思いますが、 全くの初心者の私には何をどう書き換えたらいいのかさっぱりで、質問に至った次第であります。 現在の状況を説明しますと、フォームに内容を入力して、 エラー画面、確認画面まではしっかり動くのですが、 ”この内容で送信する”ボタンで 問い合わせフォーム真っ白になってしまいます。 ソースは以下です。 ・mail.php========================= <? include_once "func.php"; include_once "mail.pear.php"; class MainClass{ function MainClass(){ switch( $_REQUEST['type'] ){ case "step1": if( $this->Chk_Input() ){ $_REQUEST['act'] = ""; break; } break; //メール送信 case "step2": // 管理者にメール送信 $msg = "お問い合わせフォームより以下の内容が送信されました。\n\n" ."内容をご確認の上、ご担当者様へご連絡をお願いいたします。\n\n\n" ."お名前 : ".$_POST['name']."\n" ."メールアドレス : ".$_POST['mail_ad']."\n" ."お問い合わせ内容 : ".$_POST['other']."\n"; new MailSendByMTA( "**@**.jp" , "**@**.jp" , "【お問い合わせ内容】" , $msg , "" , 0 ); // 登録者にメール送信 $msg = "".$_POST['name']." 様\n\n" ."このたびは「お問い合わせ」をいただき、誠にありがとうございます。\n" ."お問い合わせ内容をご確認ください。弊社スタッフより改めてご連絡いたします。\n\n" ."お名前 : ".$_POST['name']."\n" ."メールアドレス : ".$_POST['mail_ad']."\n" ."お問い合わせ内容 : ".$_POST['other']."\n\n\n\n" ."(株)******\n\n" ."〒111-1111 **県**市****123-456\n" ."電話:000-000-0000 FAX:000-000-0000\n"; new MailSendByMTA( "**@**.jp" , $_POST['mail_ad'] ,"【お問い合わせ内容】" , $msg , "" , 0 ); pageJump( $_SERVER['PHP_SELF']."?act=step2" ); break; } switch( $_REQUEST['act'] ){ case "step1": include_once "review.html.php"; break; case "step2": include_once "thanks.html.php"; break; default: include_once "form.html.php"; } } function Chk_Input(){ if( chkErr_Func( $_POST['name'],0 ) ){ $this->errTxt .= "お名前を入力して下さい。<BR>"; } if( chkErr_Func( $_POST['mail_ad'],0 ) ){ $this->errTxt .= "メールアドレスを入力してください。<BR>"; } else{ if( chkErr_Func( $_POST['mail_ad'],3 ) ){ $this->errTxt .= "メールアドレスに誤りがないかご確認下さい。<BR>"; } else{ if( $_POST['mail_ad'] != $_POST['mail_ad2'] ){ $this->errTxt .= "メールアドレス入力確認の内容がメールアドレスの内容と異なっています。<BR>"; } } } if( chkErr_Func( $_POST['other'],0 ) ){ $this->errTxt .= "お問い合わせ内容を入力してください。<BR>"; } return ( $this->errTxt != "" ) ? true : false; } } new MainClass(); ?> 長々とすいませんが、ご教授ください。 お願い致します。

    • 締切済み
    • PHP
  • PHPでUndefined variableエラー

    PHPでUndefined variableエラーが発生します: <b>Notice</b>: Undefined variable: result in <b>/opt/lampp/htdocs/samples/chapter3/3-2/gen_defined_vars.php</b> on line <b>58</b><br /> どうやって直せばいいのか教えてください。 58行目がおかしいと出ていますが、$resultが未定義なので54行目のことだと思います。 ちなみに 9ー12行目は自分で直しました。お願いします。 1 <html> 2 <head> 3 <title>環境変数コード生成フォーム</title> 4 </head> 5 <body> 6 <?php 7 // 選択リストの値を取得 8 $name = "param"; 9 if ( isset($_POST[$name]) ) { 10 $selected_value = $_POST[$name]; 11 } 12 //$selected_value = isset($_POST[$name]) ? $_POST[$name] : ""; 13 14 // 定義済み変数を取得 15 $array = get_defined_vars(); 16 17 // 配列から選択リストを作成する関数 18 // パラメータ:配列/選択リスト名/選択値 19 function disp_list($array, $name, $selected_value = "") { 20 echo "<select name=\"" . $name . "\">"; 21 while (list($value, $text) = each($array)) { 22 echo "<option "; 23 if ($selected_value == $value) { 24 echo " selected "; 25 } 26 echo " value=\"".$value."\">" . $value . "</option>"; 27 } 28 echo "</select>"; 29 } 30 31 // 入力内容を処理する 32 $temp = "<?php echo \$_SERVER[\"%s\"] ?>"; 33 if (isset($_POST["param"])) { 34 $param = $_POST["param"]; 35 $result = sprintf($temp, $param); 36 } 37 else { 38 $param = ""; 39 } 40 41 ?> 42 <form method="POST" action="<?php echo $_SERVER["PHP_SELF"]?>"> 43 <table cellpadding="10"> 44 <tr> 45 <td>環境変数を選択:<br /> 46 <?php echo disp_list($array["_SERVER"], $name, $selected_value); ?> 47 <input type="submit" value="作成" name="sub1"> 48 </td> 49 </tr> 50 <tr> 51 </tr> 52 <tr> 53 <td>作成されたコード:<br /> 54 <textarea name="ta1" rows="3" cols="40"><?php echo $result ?></textarea> 55 </td> 56 </tr> 57 </table> 58 </form> 59 </body> 60 </html>

    • ベストアンサー
    • PHP