未定义索引: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我已经更新了我的答案谢谢你的鹰眼!!!真不敢相信@不客气。我不知道为什么有人否决了这个答案。