Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未定义索引:PHP脚本中的消息_Php_Html - Fatal编程技术网

未定义索引:PHP脚本中的消息

未定义索引:PHP脚本中的消息,php,html,Php,Html,我正在学习如何在网站上添加论坛部分的教程,用户可以在这里发表评论,然后使用PHP和MySQL编辑评论 将评论发布到DB中效果绝对不错,但是当我点击编辑时,$message=$\u POST['message']时,代码>不会打印出来,并且我收到了未定义索引:message的错误消息 请有人告诉我,我做得不对,因为消息的实际内容没有进入页面edit comments.php forum.php: <?php require 'header.php'; dat

我正在学习如何在网站上添加论坛部分的教程,用户可以在这里发表评论,然后使用
PHP
MySQL
编辑评论

将评论发布到DB中效果绝对不错,但是当我点击编辑时,
$message=$\u POST['message']时,代码>不会打印出来,并且我收到了
未定义索引:message
的错误消息

请有人告诉我,我做得不对,因为消息的实际内容没有进入页面
edit comments.php

forum.php:

 <?php
        require 'header.php';
        date_default_timezone_set('Europe/London');
        include 'comments.php';

    $studentID = $_SESSION['studentID'];    

    echo "<form method='POST' action='".setComments($conn)."'>
        <input type='hidden' name='studentID' value='".$studentID."'>
        <input type='hidden' name='date' value='".date('Y-m-d H:i:s')."'>
        <textarea class='cmtBox' name='message'></textarea>
        <br>
    <button class='btnCmtBox' type='submit' name='cmt-submit'>Comment</button>

        </textarea>
    </form> ";

    getComments($conn);
    ?>
<?php
    function setComments($conn) {
        if(isset($_POST['cmt-submit'])){
            $message = $_POST['message'];
            $date = $_POST['date'];
            $studentID = $_POST['studentID'];


            $sql = "INSERT INTO `comment` (`message`, `date`, `studentID`) VALUES ('$message', '$date', '$studentID') ";
            $result = $conn->query($sql);
            // $stmt = $conn->prepare ("INSERT INTO `comment` (`message`, `date`, `studentID`) VALUES (?, ?, ?) ");
            // $stmt->bind_param("iii", $comment, $date, $username);
            // $stmt->execute();
            // $result = $stmt->get_result();
        }
    }

    function getComments($conn) {
        $sql = "SELECT `comment`.`message`, `comment`.`date`, `student`.`studentID`, `student`.`username` FROM `comment` INNER JOIN `student` ON `comment`.`studentID` = `student`.`studentID`";
        $result = $conn->query($sql);
        while ($row = $result->fetch_assoc()) {
            echo "<div class='cmt-box'><p>";
                echo $row['studentID']."<br>";
                echo $row['username']."<br>";
                echo $row['date']."<br>";
                echo nl2br($row['message']);
            echo "</p>
                <form class='edit-form' method='POST' action='edit-comment.php'>
                    <input type='hidden' name='studentID' value='".$row['studentID']."'>
                    <input type='hidden' name='username' value='".$row['username']."'>
                    <input type='hidden' name='date' value='".$row['date']."'>
                    <input type='hidden' name='text' value='".$row['message']."'>
                    <button class='btnEditCmt'>Edit</button>
                </form>
            </div>";
        }
    }

    function editComments($conn) {
        if(isset($_POST['cmt-submit'])){
            $message = $_POST['message'];
            $date = $_POST['date'];
            $username = $_POST['username'];


            $sql = "INSERT INTO `comment` (`message`, `date`, `studentID`) VALUES ('$message', '$date', '$username') ";
            $result = $conn->query($sql);
        }
    }
?>
<?php
    require 'header.php';
    date_default_timezone_set('Europe/London');
    include 'comments.php';

$studentID = $_POST['studentID'];
$message = $_POST['message'];
$date = $_POST['date'];
$username = $_POST['username']; 

echo $studentID."<br>";
echo $message."<br>"; // This is line 42 that holds the error msg
echo $date."<br>";
echo $username."<br>";


echo "<form method='POST' action='".editComments($conn)."'>
<input type='hidden' name='studentID' value='".$studentID."'>
    <input type='hidden' name='username' value='".$username."'>
    <input type='hidden' name='date' value='".$date."'>
    <textarea class='cmtBox' name='message'>".$message."</textarea> <!-- Which means the post/message also does not pull through to here -->
    <br>
<button class='btnCmtBox' type='submit' name='cmt-submit'>Edit</button>

    </textarea>
</form> ";

?>

您已在comments.php的下一行中输入了
名称
=
文本
,而不是
消息

 <input type='hidden' name='text' value='".$row['message']."'>

正确的代码是

 <input type='hidden' name='message' value='".$row['message']."'>


在forum.php代码片段中,有两个结束标记。试着删除第二个,看看它是否解决了问题。你对什么是HTML表单操作有一个非常奇特的想法。它应该是一个url,而不是一段PHP代码。@YourCommonSense我确实觉得很奇怪,只是在网上学习了一个教程,来了解如何适应它。@GuillermoPhillips谢谢你指出,但仍然没有修复:)浏览器通常应该忽略不匹配的结束标记,但有匹配的开始和结束标记是一种很好的形式,它可以阻止奇怪的bug。顺便说一句,edit-comments.php也有同样的问题。奇怪的是,教程中的变量看起来很好,但是当我使用
$\u POST
进入新页面时,我是否可以保留该变量?@T.C我已经更新了我的答案谢谢你的鹰眼!!!真不敢相信@不客气。我不知道为什么有人否决了这个答案。