1

私はPHPが初めてです... about.phpファイル(ハイパーリンクを介してindex.phpファイルにリンクしています)内でこの単純なコードを試してみてください:

<form action ="about.php" method="POST">
<ul>
    <li>
        <label for="name"> Enter your name please:</label>
        <input type="text" name="name"/>

    </li>   
    <li>
        <label for="comments" rows="20"> Enter your comments :</label>
        <textarea id="comments" name="comments" rows="5" cols="38">
            <?php 

                $name = $_POST["name"];

                if (!empty($name)) {
                echo "Your name is ".$name."and you like ny site!";
                } else {
                echo "Please enter your name";
                }


                ?> 
        </textarea> 
    </li>   
    <li>
        <input type="submit" />
    </li>   
</ul>   

次のエラーが表示されます。


Notice : 未定義のインデックス: name in D:\xampp\htdocs\stathis1\about\about.php71
あなたの名前を入力してください

4

4 に答える 4

1

$_POST["name"]が設定されていないため、その通知が表示されます。したがって、最初に存在するかどうかをテストしてから、$name変数に割り当てるか、設定されていない場合は空の文字列を割り当てる必要があります。

あなたになら変えられる

$name = $_POST["name"];

$name = isset($_POST["name"])?$_POST["name"]:'';

于 2013-03-12T22:20:20.037 に答える
1

インデックスが定義されていない場合、 isset() 関数は通知をトリガーしないため、 empty() の代わりに isset() を使用します。

于 2013-03-12T22:21:02.767 に答える
1

$_POST['name']まだ提出/設定されていないためです。if ステートメントまたは三項演算子のいずれかを使用する必要があります。

if (isset($_POST['name'])) {
    $name = $_POST['name'];

    if (!empty($name)) {
        echo 'Your name is ' . $name . ' and you like ny site!';
    } else {
        echo 'Please enter your name';
    }
}

または、より短い方法:

$name = isset($_POST['name']) ? $_POST['name'] : '';
于 2013-03-12T22:21:57.913 に答える
0

PHP 部分を開始した直後に、コードを囲む if 文を追加して、「名前」が存在する場合にのみ実行されるようにします。

if(isset($_POST["name"]))

このような:

<?php 
    if(isset($_POST["name"])){
        $name = $_POST["name"];

        if (!empty($name)) {
            echo "Your name is ".$name."and you like ny site!";
        } else {
            echo "Please enter your name";
        }
    } else {
        echo "Please enter your name";
    }
?> 
于 2013-03-12T22:22:01.797 に答える