未定义的索引

时间:2015-03-13 07:46:48

标签: php indexing mysqli undefined

为什么我得到这个(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
            };

6 个答案:

答案 0 :(得分:1)

目前,在没有提交的情况下,$ _POST数组中不存在密钥'rating',因此通知。如果您想在提交后执行此操作,请更改订单:

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

答案 1 :(得分:1)

您没有发布评级变量

检查和设置值的好习惯是

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

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

在你的情况下,它首先是空的,因为你将使用GET方法访问页面,所以把它作为

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

答案 2 :(得分:0)

    Use 
    ini_set("display_errors","off"); 
in starting of php, notice will dismiss...

答案 3 :(得分:0)

这只是你得到的通知。 在顶部写这个

ini_set('display_errors','0');

它会起作用..

答案 4 :(得分:0)

注意:你必须检查变量isset和!empty。

试试这个:

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

答案 5 :(得分:0)

问题是页面IS在页面加载后立即运行脚本。但是,该脚本尚未包含输入字段中的信息。解决方案非常简单,只需两个简单的步骤:

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

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

2)将此代码放在php脚本的顶部,并将其替换为提交按钮的名称。放置在脚本顶部的代码会在表单尚未提交时停止运行脚本。

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

我希望这有助于您,并祝您完成项目。