こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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();
}


}

?>

投稿日時 - 2011-09-30 12:47:29

QNo.7043303

すぐに回答ほしいです

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

基本的に 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'] : "";

投稿日時 - 2011-09-30 14:11:05

お礼

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();
}


}

?>

投稿日時 - 2011-10-01 15:48:08

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問