2015-03-13 142 views
-1

为什么我得到这个(Undefined index:rating)错误?未定义索引

正如您所看到的,我已将“评级”写入表单中的名称。

$rating = $_POST['rating']; 


      $rate = "INSERT INTO cms_rating (rating, p_id) VALUE ('$rating', '$id')"; 

      if (isset($_POST['submit'])) { 
      $con->query($rate); 

      } else { 
      ?> 

      <form action="" method="post"> 
      <input type="radio" name="rating" value="1">* 
      <input type="radio" name="rating" value="2">** 
      <input type="radio" name="rating" value="3">*** 
      <input type="radio" name="rating" value="4">**** 
      <input type="radio" name="rating" value="5">***** 
      <input type="submit"> 
      </form> 

      <?php 
      }; 
+0

您是否得到了预期的结果,或者只显示错误? – 2015-03-13 07:48:13

+0

我得到的结果,它似乎工作,但为什么错误? – amater 2015-03-13 07:49:57

+0

@amater检查我的解决方案 – 2015-03-13 07:52:55

回答

1

现在,没有submiting,关键“评级”不存在于$ _POST阵列,因此通知。只要改变顺序,如果你想这个动作提交后:

if (isset($_POST['submit'])) { 
    $rating = mysql_real_escape_string($_POST['rating']); 
    $rate = "INSERT INTO cms_rating (rating, p_id) VALUE ('$rating', '$id')"; 

     $con->query($rate); 

     } else { 
     ?> 

     <form action="" method="post"> 
     <input type="radio" name="rating" value="1">* 
     <input type="radio" name="rating" value="2">** 
     <input type="radio" name="rating" value="3">*** 
     <input type="radio" name="rating" value="4">**** 
     <input type="radio" name="rating" value="5">***** 
     <input type="submit" name = "submit"> 
     </form> 

     <?php 
     }; 
0
Use 
    ini_set("display_errors","off"); 
in starting of php, notice will dismiss... 
+0

使用此只有在用户处于生产环境时才能进行配置,在开发环境中,显示错误是一种很好的做法。 – dvhh 2015-03-13 07:54:13

0

这只是你得到的通知。 在上面写这

ini_set('display_errors','0'); 

它会做的伎俩..

+0

仅当用户在生产环境中时才使用此配置,在开发环境中显示错误是一种好的做法 – dvhh 2015-03-13 07:54:29

1

你不张贴评级可变

一个很好的做法,检查和设置值是

$rating=0; 
if(isset($_POST['rating'])) 
    $rating = $_POST['rating']; 

如果它被设置,它将分配已发布的值,否则它将具有值0.

在您的情况下,它将首先是空的,因为您将使用GET方法访问该页面,因此将其设置为

if (isset($_POST['rating'])) { 
    //query and rest of the details here.. 
} 
0

注:你必须检查变量isset而空!

试试这个:

if(isset($_POST['rating']) && !empty($_POST['rating'])){ 
    $rating = $_POST['rating']; 
}else{ 
    $rating = '0'; 
} 

$rate = "INSERT INTO cms_rating (rating, p_id) VALUE ('$rating', '$id')"; 

if(isset($_POST['submit'])){ 
    $con->query($rate); 
} else { 

?> 
    <form action="" method="post"> 
     <input type="radio" name="rating" value="1">* 
     <input type="radio" name="rating" value="2">** 
     <input type="radio" name="rating" value="3">*** 
     <input type="radio" name="rating" value="4">**** 
     <input type="radio" name="rating" value="5">***** 
     <input type="submit"> 
    </form> 

<?php 
}; 
0

的问题是,该网页是只要页面加载运行该脚本。但是,该脚本还没有来自输入字段的信息。解决方案非常简单,只需两个简单的步骤:

1)在您的html中为您的提交按钮添加一个“name”属性。

<input type="submit" name="submit" value="Register"> 

2)把这段代码放在你的php脚本的顶部,并用你的提交按钮的名字替换它。代码放置在脚本的顶部时,如果表单尚未提交,代码将停止运行。

if(!isset($_POST['submit'])) 
{ 
    exit; 
} 

我希望这对您有帮助,并祝您在完成项目时顺利。