用PHP mysql 制作留言板代码
时间: 2024-03-14 15:46:44 浏览: 135
好的,以下是用 PHP 和 MySQL 制作留言板的代码示例:
1. 创建数据库和表格
首先需要在 MySQL 数据库中创建一个新的数据库和表格,可以使用以下 SQL 语句:
```sql
CREATE DATABASE message_board;
USE message_board;
CREATE TABLE messages (
id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(50) NOT NULL,
message TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
```
2. 创建 HTML 页面
在 HTML 页面中,需要创建一个表格用于显示已有的留言信息,并包含一个表单,用于提交新的留言信息。以下是示例代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>留言板</title>
</head>
<body>
<h1>留言板</h1>
<form action="submit.php" method="post">
<label for="name">姓名:</label>
<input type="text" name="name" id="name" required>
<br>
<label for="email">邮箱:</label>
<input type="email" name="email" id="email" required>
<br>
<label for="message">留言:</label>
<textarea name="message" id="message" rows="5" required></textarea>
<br>
<input type="submit" value="提交">
</form>
<hr>
<table>
<thead>
<tr>
<th>ID</th>
<th>姓名</th>
<th>邮箱</th>
<th>留言内容</th>
<th>留言时间</th>
</tr>
</thead>
<tbody>
<?php
// TODO: 在这里添加 PHP 代码
?>
</tbody>
</table>
</body>
</html>
```
3. 创建 PHP 脚本
在 PHP 脚本中,需要连接数据库,将留言信息插入到数据库中,并从数据库中获取已有的留言信息,将这些留言信息传递给留言板页面,用于显示在页面上。以下是示例代码:
```php
<?php
// 连接数据库
$db_host = 'localhost';
$db_name = 'message_board';
$db_user = 'root';
$db_password = '';
$db_charset = 'utf8mb4';
$dsn = "mysql:host=$db_host;dbname=$db_name;charset=$db_charset";
$pdo = new PDO($dsn, $db_user, $db_password);
// 处理提交的留言信息
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$stmt = $pdo->prepare("INSERT INTO messages (name, email, message) VALUES (?, ?, ?)");
$stmt->execute([$name, $email, $message]);
}
// 获取留言信息
$limit = 10; // 每页显示的条数
$page = isset($_GET['page']) ? intval($_GET['page']) : 1; // 当前页码
$offset = ($page - 1) * $limit; // 偏移量
$stmt = $pdo->prepare("SELECT * FROM messages ORDER BY created_at DESC LIMIT $offset, $limit");
$stmt->execute();
$messages = $stmt->fetchAll(PDO::FETCH_ASSOC);
// 获取留言总数
$stmt = $pdo->prepare("SELECT COUNT(*) FROM messages");
$stmt->execute();
$total_count = $stmt->fetchColumn();
// 计算总页数
$total_pages = ceil($total_count / $limit);
// 显示留言信息
foreach ($messages as $message) {
echo '<tr>';
echo '<td>', $message['id'], '</td>';
echo '<td>', htmlspecialchars($message['name']), '</td>';
echo '<td>', htmlspecialchars($message['email']), '</td>';
echo '<td>', htmlspecialchars($message['message']), '</td>';
echo '<td>', $message['created_at'], '</td>';
echo '</tr>';
}
?>
```
4. 实现分页功能
为了实现分页功能,需要在 PHP 脚本中添加一些额外的代码,用于计算总页数、偏移量等信息,并将这些信息传递给留言板页面。以下是示例代码:
```php
// 计算总页数
$total_pages = ceil($total_count / $limit);
// 计算上一页和下一页的页码
$prev_page = ($page > 1) ? ($page - 1) : 1;
$next_page = ($page < $total_pages) ? ($page + 1) : $total_pages;
// 显示分页链接
echo '<div>';
echo '<a href="?page=', $prev_page, '">上一页</a>';
for ($i = 1; $i <= $total_pages; $i++) {
echo '<a href="?page=', $i, '">', $i, '</a>';
}
echo '<a href="?page=', $next_page, '">下一页</a>';
echo '</div>';
```
5. 实现留言删除功能
最后,可以添加一个留言删除功能,允许管理员删除留言板中的某条留言信息。以下是示例代码:
```php
// 处理删除留言请求
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['delete'])) {
$id = intval($_POST['delete']);
$stmt = $pdo->prepare("DELETE FROM messages WHERE id = ?");
$stmt->execute([$id]);
}
// 显示删除按钮
foreach ($messages as $message) {
echo '<tr>';
echo '<td>', $message['id'], '</td>';
echo '<td>', htmlspecialchars($message['name']), '</td>';
echo '<td>', htmlspecialchars($message['email']), '</td>';
echo '<td>', htmlspecialchars($message['message']), '</td>';
echo '<td>', $message['created_at'], '</td>';
echo '<td>';
echo '<form action="index.php" method="post">';
echo '<input type="hidden" name="delete" value="', $message['id'], '">';
echo '<button type="submit">删除</button>';
echo '</form>';
echo '</td>';
echo '</tr>';
}
```
以上是用 PHP 和 MySQL 制作留言板的示例代码,具体实现需要根据具体的需求进行调整。
阅读全文