🏆作者简介,黑夜开发者,全栈领域新星创作者✌,2023年6月csdn上海赛道top4。多年电商行业从业经验,对系统架构,数据分析处理等大规模应用场景有丰富经验。
🏆本文已收录于PHP专栏:PHP进阶实战教程。
🏆另有专栏PHP入门基础教程,希望各位大佬多多支持❤️。
文章目录
- 一、简介
- 二、系统设计
- 2.1 数据库设计
- 2.2 HTML页面设计
- 2.2.1 留言列表页面(index.html)
- 2.2.2 添加留言页面(add.html)
- 2.3 PHP代码编写
- 2.3.1 新增留言(add.php)
- 2.3.2 编辑留言(edit.php)
- 2.3.3 删除留言(delete.php)
- 2.3.4 查询留言(select_messages.php):
- 三、总结
一、简介
留言板是一个常见的Web应用程序,它允许用户在网站上发布留言,并可以对已发布的留言进行查看、编辑和删除操作。本文将使用PHP语言实现一个基本的留言板功能。
二、系统设计
首先,我们需要设计数据库表来存储留言信息,然后编写HTML页面展示留言列表以及提交留言的表单,最后使用PHP处理前端提交的请求,并与数据库进行交互。
2.1 数据库设计
我们将使用MySQL数据库来存储留言信息。假设我们需要存储的留言信息包括:id、姓名、邮箱、主题、内容和创建时间。
首先,创建一个名为guestbook
的数据库,然后在该数据库中创建名为messages
的数据表,表结构如下:
CREATE TABLE `messages` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`subject` varchar(255) NOT NULL,
`content` text NOT NULL,
`created_at` datetime NOT NULL DEFAULT current_timestamp(),
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
2.2 HTML页面设计
我们需要编写两个HTML页面,一个用于展示留言列表,另一个用于提交新的留言。
2.2.1 留言列表页面(index.html)
<!DOCTYPE html>
<html>
<head>
<title>留言板</title>
</head>
<body>
<h1>留言板</h1>
<a href="add.php">新增留言</a>
<table>
<tr>
<th>姓名</th>
<th>邮箱</th>
<th>主题</th>
<th>内容</th>
<th>创建时间</th>
<th>操作</th>
</tr>
<?php
// 使用PHP动态生成留言列表
$db = new mysqli('localhost', 'username', 'password', 'guestbook');
if ($db->connect_errno) {
die('连接数据库失败:' . $db->connect_error);
}
$sql = "SELECT * FROM messages ORDER BY created_at DESC";
$result = $db->query($sql);
while ($row = $result->fetch_assoc()) {
echo "<tr>";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['email'] . "</td>";
echo "<td>" . $row['subject'] . "</td>";
echo "<td>" . $row['content'] . "</td>";
echo "<td>" . $row['created_at'] . "</td>";
echo "<td><a href='edit.php?id=" . $row['id'] . "'>编辑</a> | <a href='delete.php?id=" . $row['id'] . "'>删除</a></td>";
echo "</tr>";
}
$db->close();
?>
</table>
</body>
</html>
2.2.2 添加留言页面(add.html)
<!DOCTYPE html>
<html>
<head>
<title>添加留言</title>
</head>
<body>
<h1>添加留言</h1>
<form action="add.php" method="post">
<label for="name">姓名:</label>
<input type="text" id="name" name="name" required><br>
<label for="email">邮箱:</label>
<input type="email" id="email" name="email" required><br>
<label for="subject">主题:</label>
<input type="text" id="subject" name="subject" required><br>
<label for="content">内容:</label><br>
<textarea id="content" name="content" rows="5" required></textarea><br>
<input type="submit" value="提交">
</form>
</body>
</html>
2.3 PHP代码编写
我们需要编写三个PHP文件,分别用于处理新增留言、编辑留言和删除留言的请求。
2.3.1 新增留言(add.php)
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$db = new mysqli('localhost', 'username', 'password', 'guestbook');
if ($db->connect_errno) {
die('连接数据库失败:' . $db->connect_error);
}
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$content = $_POST['content'];
$stmt = $db->prepare("INSERT INTO messages (name, email, subject, content) VALUES (?, ?, ?, ?)");
$stmt->bind_param("ssss", $name, $email, $subject, $content);
if ($stmt->execute()) {
header('Location: index.html');
} else {
echo '添加留言失败:' . $stmt->error;
}
$stmt->close();
$db->close();
}
?>
2.3.2 编辑留言(edit.php)
<?php
if ($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['id'])) {
$id = $_GET['id'];
$db = new mysqli('localhost', 'username', 'password', 'guestbook');
if ($db->connect_errno) {
die('连接数据库失败:' . $db->connect_error);
}
$stmt = $db->prepare("SELECT * FROM messages WHERE id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
$result = $stmt->get_result();
if ($row = $result->fetch_assoc()) {
$name = $row['name'];
$email = $row['email'];
$subject = $row['subject'];
$content = $row['content'];
} else {
die('留言不存在');
}
$stmt->close();
$db->close();
} elseif ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_POST['id']) && isset($_POST['name']) && isset($_POST['email']) && isset($_POST['subject']) && isset($_POST['content'])) {
$id = $_POST['id'];
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$content = $_POST['content'];
$db = new mysqli('localhost', 'username', 'password', 'guestbook');
if ($db->connect_errno) {
die('连接数据库失败:' . $db->connect_error);
}
$stmt = $db->prepare("UPDATE messages SET name = ?, email = ?, subject = ?, content = ? WHERE id = ?");
$stmt->bind_param("ssssi", $name, $email, $subject, $content, $id);
if ($stmt->execute()) {
header('Location: index.html');
} else {
echo '编辑留言失败:' . $stmt->error;
}
$stmt->close();
$db->close();
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>编辑留言</title>
</head>
<body>
<h1>编辑留言</h1>
<form action="edit.php" method="post">
<input type="hidden" name="id" value="<?php echo $id; ?>">
<label for="name">姓名:</label>
<input type="text" id="name" name="name" value="<?php echo $name; ?>" required><br>
<label for="email">邮箱:</label>
<input type="email" id="email" name="email" value="<?php echo $email; ?>" required><br>
<label for="subject">主题:</label>
<input type="text" id="subject" name="subject" value="<?php echo $subject; ?>" required><br>
<label for="content">内容:</label><br>
<textarea id="content" name="content" rows="5" required><?php echo $content; ?></textarea><br>
<input type="submit" value="保存">
</form>
</body>
</html>
2.3.3 删除留言(delete.php)
删除留言
<?php
$id = $_GET['id'];
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "DELETE FROM messages WHERE id=$id";
if ($conn->query($sql) === TRUE) {
echo "Message deleted successfully";
} else {
echo "Error deleting message: " . $conn->error;
}
$conn->close();
?>
2.3.4 查询留言(select_messages.php):
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM messages ORDER BY created_at DESC";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "ID: " . $row["id"]. ", Name: " . $row["name"]. ", Email: " . $row["email"]. ", Subject: " . $row["subject"]. ", Content: " . $row["content"]. "<br>";
}
} else {
echo "No messages found";
}
$conn->close();
?>
三、总结
今天我们通过PHP完整实现了一个留言板功能,实际过程中,可能还有更加复杂的设计。不过核心就是这样一些东西。希望能对您有所帮助,我们下次见。