未定义的索引错误PHP $ _POST

时间:2018-04-02 01:21:54

标签: php html mysql forms xampp

我不是那么新的HTML,但我仍然是PHP的新手。现在我已经使用XAMPP创建了一个MySQL数据库,在其中我可以看到我的所有表(如预期的那样)。我有一个PHP脚本,显示我的一个表中的所有信息。该表中包含NULL个值,因为用户应该在其中输入信息,然后单击一个显示Update的按钮,并且它应该使用所述值更新我的数据库和表。 (如果上面的任何一个让你感到困惑,希望脚本之后写的内容会澄清它)。这是我的脚本:

注意:dbconnect.php脚本只包含我与数据库的连接

的index.php

<?php
require_once('dbconnect.php');
$query = "SELECT * FROM event_list";
$result = mysqli_query($conn, $query);
$count = mysqli_num_rows($result);
?>

<table width="auto" border="1" cellspacing="1" cellpadding="0">
    <form name="form1" method="post" action="results.php">
        <tr>
            <td>
                <table width="auto" border="1" cellspacing="1"     cellpadding="0">
                    <tr>
                        <td align="center"><strong>Event ID</strong></td>
                        <td align="center"><strong>Title</strong></td>
                        <td align="center"><strong>Topic</strong></td>
                        <td align="center"><strong>Description</strong></td>
                        <td align="center"><strong>Event Date</strong></td>
                        <td align="center"><strong>Speaker</strong></td>
                        <td align="center"><strong>Building</strong></td>
                        <td align="center"><strong>Room</strong></td>
                    </tr>

                    <?php                    
                        while($rows=mysqli_fetch_array($result)) {
                    ?>

                    <tr>
                        <?php
                            $id[]=$rows['event_id'];
                        ?>
                        <td align="center">
                            <?php echo $rows['event_id'];?>
                        </td>
                        <td align="center">
                            <input name="title[]" type="text" id="title" value="<?php echo $rows['title']; ?>">
                        </td>
                        <td align="center">
                            <?php echo $rows['topic_name']; ?>
                        </td>
                        <td align="center">
                            <?php echo $rows['topic_description']; ?>
                        </td>
                        <td align="center">
                            <input name="date[]" type="date" id="date" value="<?php echo $rows['event_date']; ?>">
                        </td>
                        <td align="center">
                            <input name="speaker[]" type="text" id="speaker" value="<?php echo $rows['speaker_name']; ?>">
                        </td>
                        <td align="center">
                            <input name="building[]" type="text" id="building" value="<?php echo $rows['building_name']; ?>">
                        </td>
                        <td align="center">
                            <input name="room[]" type="text" id="room" value="<?php echo $rows['room_name']; ?>">
                        </td>
                    </tr>

                    <?php
                        }
                    ?>

                    <tr>
                        <td colspan="8" align="center"><input type="submit" name="Update" value="UPDATE"></td>
                    </tr>
                </table>
            </td>
        </tr>
    </form>
</table>

results.php

index.php脚本要去的脚本

    

    <?php
    require_once('dbconnect.php');
    $query = "SELECT * FROM event_list";
    $result = mysqli_query($conn, $query);
    $count = mysqli_num_rows($result);

    if ($_SERVER["REQUEST_METHOD"] == "POST")
    {
        $id = $_POST['event_id']; <!-- variable -->
        $title2 = $_POST['title'];
        $date2 = $_POST['date'];
        $speaker2 = $_POST['speaker'];
        $building2 = $_POST['building'];
        $room2 = $_POST['room'];

        for($i=0;$i<$count;$i++) {
            echo "Title: ".$title2[$i]."<br>";
            $sql="UPDATE events SET title=$title2[$i], event_date='$date2[$i]', speaker_name='$speaker2[$i]', 
            building_name='$building2[$i]', room_name='$room2[$i]' 
            WHERE event_id='$id[$i]'"; <!-- error here -->
            $result1=mysqli_query($conn, $sql);
        }

    }
    ?>

        <table width="auto" border="1" cellspacing="1" cellpadding="0">
            <form name="form1" method="post" action="index.php">
                <tr>
                    <td>
                        <table width="auto" border="1" cellspacing="1" cellpadding="0">
                            <tr>
                                <td align="center"><strong>Event ID</strong></td>
                                <td align="center"><strong>Title</strong></td>
                                <td align="center"><strong>Topic</strong></td>
                                <td align="center"><strong>Description</strong></td>
                                <td align="center"><strong>Event Date</strong></td>
                                <td align="center"><strong>Speaker</strong></td>
                                <td align="center"><strong>Building</strong></td>
                                <td align="center"><strong>Room</strong></td>
                            </tr>

                            <?php                    
                                while($rows=mysqli_fetch_array($result)) {
                            ?>

                            <tr>
                                <td align="center">
                                    <?php echo $rows['event_id'];?>
                                </td>
                                <td align="center">
                                    <?php echo $rows['title']; ?>
                                </td>
                                <td align="center">
                                    <?php echo $rows['topic_name']; ?>
                                </td>
                                <td align="center">
                                    <?php echo $rows['topic_description']; ?>
                                </td>
                                <td align="center">
                                    <?php echo $rows['event_date']; ?>
                                </td>
                                <td align="center">
                                    <?php echo $rows['speaker_name']; ?>
                                </td>
                                <td align="center">
                                    <?php echo $rows['building_name']; ?>
                                </td>
                                <td align="center">
                                    <?php echo $rows['room_name']; ?>
                                </td>
                            </tr>

                            <?php
                                }
                            ?>

                            <tr>
                                <td colspan="8" align="center"><input type="submit" name="Return" value="Return"></td>
                            </tr>
                        </table>
                    </td>
                </tr>
            </form>
        </table>
    </body>
</html>

当我运行index.php脚本时,没有if(isset())的{​​{1}}变量周围放置$id,它告诉我它是results.php。但是,当我 DO Undefined Index置于其中时,它会告诉我在if(isset()) SQL语句中Update id中的WHERE子句是Undefined Variable

就像我之前说过的那样,我对PHP仍然很陌生,我真的可以使用一些帮助。我在这里(Stack)看了一下,发现了一个关于Undefined Index/Variable/Offset的“线索”,但这对我来说没有意义。

1 个答案:

答案 0 :(得分:-1)

在您提交表单时,似乎未发送event_id。如果您在表单中输出指定event_id的隐藏字段,则可以在提交表单时通过$_POST访问该字段:

<input name="event_id" type="hidden" id="event_id" value="<?php echo $rows['event_id']; ?>">

确保此行存在于表单内的某个位置,并且可以通过$_POST['event_id']在results.php中访问。