web-dev-qa-db-ja.com

未定義のインデックスエラーPHP

私はPHPで新しく、このエラーが発生しています:

Notice:未定義のインデックス:32行目の/var/www/test/modifyform.phpのproductid

Notice:未定義のインデックス:33行目の/var/www/test/modifyform.phpの名前

Notice:未定義のインデックス:34行目の/var/www/test/modifyform.phpの価格

Notice:未定義のインデックス:35行目の/var/www/test/modifyform.phpの説明

オンラインで解決策を見つけることができなかったので、誰かが助けてくれるかもしれません。

コードは次のとおりです。

<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST">
   <input type="hidden" name="rowID" value="<?php echo $rowID;?>">

   <p>
      Product ID:<br />
      <input type="text" name="productid" size="8" maxlength="8" value="<?php echo $productid;?>" />
   </p>

   <p>
      Name:<br />
      <input type="text" name="name" size="25" maxlength="25" value="<?php echo $name;?>" />
   </p>

   <p>
      Price:<br />
      <input type="text" name="price" size="6" maxlength="6" value="<?php echo $price;?>" />
   </p>

   <p>
      Description:<br />
      <textarea name="description" rows="5" cols="30">
      <?php echo $description;?></textarea>
   </p>

   <p>
      <input type="submit" name="submit" value="Submit!" />
   </p>
   </form>
   <?php
   if (isset($_POST['submit'])) {
      $rowID = $_POST['rowID'];
      $productid = $_POST['productid']; //this is line 32 and so on...
      $name = $_POST['name'];
      $price = $_POST['price'];
      $description = $_POST['description'];

}

その後(または少なくとも私がやろうとしていること)、MySQLでテーブルを更新します。私は本当に_$rowIDは定義されていますが、他の変数は定義されていません。

ご回答いただきありがとうございます。乾杯!

19
LPoblet

試してください:

<?php

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

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

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

?>
37
Adam

インデックス 'productid'がHTMLフォームにないようです。最初にHTML入力を調べます。例<input type="text" name="productid" value="">しかし、これは現在のエラーを処理しますPHP is rising。

  $rowID = isset($_POST['rowID']) ? $_POST['rowID'] : '';
  $productid = isset($_POST['productid']) ? $_POST['productid'] : '';
  $name = isset($_POST['name']) ? $_POST['name'] : '';
  $price = isset($_POST['price']) ? $_POST['price'] : '';
  $description = isset($_POST['description']) ? $_POST['description'] : '';
6
Robert Wilson

これは、フォームが投稿される前にPHPコードが実行されるためです。

これを回避するには、PHPコードを次のifステートメントでラップし、残りを処理します。各変数にifステートメントを設定する必要はありません。

       if(isset($_POST) && array_key_exists('name_of_your_submit_input',$_POST))
        {
             //process PHP Code
        }
        else
        {
             //do nothing
         }
2
Akshat Maltare

トライ

<?php

  $rowID=$productid=$name=$price=$description="";  

   if (isset($_POST['submit'])) {
      $rowID = $_POST['rowID'];
      $productid = $_POST['productid']; //this is line 32 and so on...
      $name = $_POST['name'];
      $price = $_POST['price'];
      $description = $_POST['description'];

}
2
sumish1985

ちょっとこれが起こっているのは、値を代入する前に値を表示しようとしているからです。値を入力してフォームを送信するだけで正しい出力が表示されます。

0
rohit sonawane

_<form>_を生成するとき、問題があるはずです。変数_$name_、_$price_は、NULLが_<input>_フィールドのechoにある場合、valueまたは空の文字列であることは間違いありません。空の入力フィールドはブラウザによって送信されないため、_$_POST_にはキーがありません。

とにかく、 isset() で確認できます。

以下を使用して変数をテストします。

if(isset($_POST['key'])) ? $variable=$_POST['key'] : $variable=NULL

NULLに設定した方がよいでしょう。

NULL値は、値のない変数を表します。

0
Dyin

Wampサーバーを使用している場合は、xamppサーバーを使用することをお勧めします。君は 。私は1分以内にこのエラーを受け取りましたが、(isset)functionを使用してこれを解決しました。そして、私はエラーを取得しません。その後、関数を削除(設定)しますが、エラーは表示されません。

ちなみに私はxamppサーバーを使用しています