MySQL中的HTML与PHP的分离以及评论类的实现
在本文中,我们将介绍MySQL中HTML与PHP的分离以及如何在PHP中实现评论类功能。
阅读更多:MySQL 教程
MySQL中HTML与PHP的分离
HTML和PHP是在Web开发过程中最常用的两个技术。HTML用于前端展示,而PHP用于与后端数据库交互。将HTML和PHP分离的好处在于方便管理和防止代码混乱。
我们可以通过include或require函数将HTML文件和PHP文件进行分离。例如,我们有一个名为“index.php”的文件,我们可以将HTML文件“header.html”和“footer.html”分别包含到“index.php”中:
include "header.html";
// index页面的主要内容
include "footer.html";
这些HTML文件可以包含样式和脚本等文件,使代码更加有条理。
添加评论类
现在,让我们考虑如何在PHP中实现评论类。我们将使用MySQL作为后端数据库,因为它是最常见的数据库之一,并且易于使用。
创建数据库
首先,我们需要创建数据库以存储留言和评论。我们将创建一个名为“comments_db”的数据库,并在其中创建名为“comments”的表来存储评论。该表将包含以下字段:
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int(11) | 自增评论ID |
| name | varchar(50) | 评论者姓名 |
| varchar(50) | 评论者邮箱 | |
| message | text | 评论内容 |
| parent_id | int(11) | 父评论ID |
| created | datetime | 评论发布时间 |
| updated | datetime | 评论修改时间(可选) |
添加留言和评论
添加留言和评论的表单应该包括以下字段:姓名、电子邮件、评论内容和父评论ID。
当用户提交评论时,我们需要将评论信息插入到“comments”表中。如果用户正在回复另一个评论,则应将其父评论ID插入相应字段。
<?php
if (_SERVER['REQUEST_METHOD'] == 'POST') {name = _POST['name'];email = _POST['email'];message = _POST['message'];parent_id = _POST['parent_id'];
// 连接到数据库conn = mysqli_connect('localhost', 'username', 'password', 'comments_db');
// 检查连接是否成功
if (!conn) {
die('连接数据库失败: ' . mysqli_connect_error());
}
// 执行插入语句sql = "INSERT INTO comments (name, email, message, parent_id) VALUES ('name', 'email', 'message',parent_id)";
if (mysqli_query(conn,sql)) {
echo '评论已发布';
} else {
echo '评论发布失败: ' . mysqli_error(conn);
}
// 关闭数据库连接
mysqli_close(conn);
}
?>
显示留言和评论
我们可以使用以下查询语句从数据库中检索评论数据:
SELECT * FROM comments WHERE parent_id IS NULL
在这个例子中,我们只选择没有父评论的评论,即留言。我们可以通过在HTML中嵌套PHP代码来轻松地显示这些评论。例如:
<?php
// 连接到数据库
conn = mysqli_connect('localhost', 'username', 'password', 'comments_db');
// 检查连接是否成功
if (!conn) {
die('连接数据库失败: ' . mysqli_connect_error());
}
// 查询留言数据
result = mysqli_query(conn, "SELECT * FROM comments WHERE parent_id IS NULL");
// 显示每个留言的评论和回复
while (row = mysqli_fetch_assoc(result)) {
echo "<div class='comment'>";
echo "<span class='name'>" . row['name'] . "</span>";
echo "<span class='email'>" .row['email'] . "</span>";
echo "<span class='message'>" . row['message'] . "</span>";
// 显示回复parent_id = row['id'];reply_result = mysqli_query(conn, "SELECT * FROM comments WHERE parent_id =parent_id");
while (reply_row = mysqli_fetch_assoc(reply_result)) {
echo "<div class='reply'>";
echo "<span class='name'>" . reply_row['name'] . "</span>";
echo "<span class='email'>" .reply_row['email'] . "</span>";
echo "<span class='message'>" . reply_row['message'] . "</span>";
echo "</div>";
}
// 添加回复表单
echo "<form action='index.php' method='post'>";
echo "<input type='hidden' name='parent_id' value='" .row['id'] . "'>";
echo "<input type='text' name='name' placeholder='姓名'>";
echo "<input type='email' name='email' placeholder='电子邮件'>";
echo "<textarea name='message' placeholder='评论'></textarea>";
echo "<button type='submit'>回复</button>";
echo "</form>";
echo "</div>";
}
// 关闭数据库连接
mysqli_close($conn);
?>
当用户在回复表单中提交评论时,将会用与留言相同的方式将回复插入到“comments”表中,并增加相应的父评论ID。
总结
在本文中,我们介绍了在MySQL中HTML与PHP的分离,并演示了如何在PHP中实现评论类功能。使用这些技术,我们可以使代码更加有条理并增加网站的互动性。
极客教程