26

我是 PHP 新手,我收到了这个错误:

注意:未定义的索引:第 32 行 /var/www/test/modifyform.php 中的 productid

注意:未定义的索引:第 33 行 /var/www/test/modifyform.php 中的名称

注意:未定义的索引:第 34 行 /var/www/test/modifyform.php 中的价格

注意:未定义索引:第 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定义了其他变量而没有定义。

感谢您花时间回答我。干杯!

4

9 回答 9

50

尝试:

<?php

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

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

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

?>
于 2012-05-16T07:06:46.023 回答
6

显然,您的 html 表单中缺少索引“productid”。首先检查您的 html 输入。例如<input type="text" name="productid" value=""> ,但这将处理 PHP 正在引发的当前错误。

  $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'] : '';
于 2012-05-16T07:14:38.750 回答
3

发生这种情况是因为您的 PHP 代码在表单发布之前被执行。

为了避免这种情况,将您的 PHP 代码包装在后面的 if 语句中,它将处理其余部分,无需为每个变量设置 if 语句

       if(isset($_POST) && array_key_exists('name_of_your_submit_input',$_POST))
        {
             //process PHP Code
        }
        else
        {
             //do nothing
         }
于 2016-11-28T18:27:48.527 回答
2

尝试

<?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'];

}
于 2014-11-04T06:18:36.767 回答
0

当您生成<form>. 我敢打赌$name,当您进入字段时,变量$priceNULL或空字符串。浏览器不会发送空输入字段,因此不会有它们的键。echovalue<input>$_POST

无论如何,您可以使用isset().

测试变量如下:

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

你最好把它设置为NULL,因为

NULL 值表示没有值的变量。

于 2012-05-16T07:14:32.270 回答
0

嘿,这是因为你试图在分配它之前显示值你只需填写值并提交表单它将显示正确的输出或者你可以在表单标签下面编写你的 php 代码它将运行没有任何错误

于 2013-12-18T09:24:56.340 回答
-1

如果您使用的是 wamp 服务器,那么我建议您使用 xampp 服务器。你 。我在不到一分钟的时间内收到了这个错误,但我通过使用 (isset) 函数解决了这个问题。我没有错误。之后我删除(isset)功能,我没有看到任何错误。

顺便说一句,我正在使用 xampp 服务器

于 2015-07-23T15:32:24.450 回答
-2

此错误有时发生在方法属性(有效的传递方法)错误选项:method="get" 但由 $Fname = $_POST["name"]; 调用 或者

       method="post" but  called by  $Fname = $_GET["name"];

更多信息请访问http://www.doordie.co.in/index.php

于 2014-05-29T11:57:18.250 回答
-3

要消除此错误,您应该在您的 html 表单中执行以下操作enctype

<form  enctype="multipart/form-data">

以下是该错误的原因,即如果您从 enctype 中的 form-data 开始,那么您应该从 multipart 开始:

<form enctype="form-data/multipart">
于 2014-08-02T07:30:45.603 回答