php实现待办
PHP 实现待办事项功能
数据库设计
创建一个简单的待办事项表,包含基本字段如 ID、标题、描述、状态和创建时间。
CREATE TABLE todos (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
description TEXT,
status ENUM('pending', 'completed') DEFAULT 'pending',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
连接数据库
使用 PDO 或 MySQLi 连接数据库,确保连接安全。
$host = 'localhost';
$dbname = 'todo_app';
$username = 'root';
$password = '';
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die("Connection failed: " . $e->getMessage());
}
添加待办事项
创建一个表单提交待办事项,并将数据插入数据库。
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['add_todo'])) {
$title = $_POST['title'];
$description = $_POST['description'];
$stmt = $pdo->prepare("INSERT INTO todos (title, description) VALUES (?, ?)");
$stmt->execute([$title, $description]);
}
显示待办事项
从数据库中查询并显示待办事项列表。
$stmt = $pdo->query("SELECT * FROM todos ORDER BY created_at DESC");
$todos = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($todos as $todo) {
echo "<div class='todo-item'>";
echo "<h3>" . htmlspecialchars($todo['title']) . "</h3>";
echo "<p>" . htmlspecialchars($todo['description']) . "</p>";
echo "<span>Status: " . $todo['status'] . "</span>";
echo "</div>";
}
更新待办事项状态
提供按钮或链接来更新待办事项的状态。
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['update_status'])) {
$id = $_POST['id'];
$status = $_POST['status'];
$stmt = $pdo->prepare("UPDATE todos SET status = ? WHERE id = ?");
$stmt->execute([$status, $id]);
}
删除待办事项
实现删除功能,从数据库中移除待办事项。
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['delete_todo'])) {
$id = $_POST['id'];
$stmt = $pdo->prepare("DELETE FROM todos WHERE id = ?");
$stmt->execute([$id]);
}
前端界面
创建一个简单的 HTML 表单和列表界面,与后端交互。
<form method="POST">
<input type="text" name="title" placeholder="Title" required>
<textarea name="description" placeholder="Description"></textarea>
<button type="submit" name="add_todo">Add Todo</button>
</form>
<div id="todo-list">
<?php foreach ($todos as $todo): ?>
<div class="todo-item">
<h3><?php echo htmlspecialchars($todo['title']); ?></h3>
<p><?php echo htmlspecialchars($todo['description']); ?></p>
<form method="POST">
<input type="hidden" name="id" value="<?php echo $todo['id']; ?>">
<select name="status">
<option value="pending" <?php echo $todo['status'] === 'pending' ? 'selected' : ''; ?>>Pending</option>
<option value="completed" <?php echo $todo['status'] === 'completed' ? 'selected' : ''; ?>>Completed</option>
</select>
<button type="submit" name="update_status">Update</button>
<button type="submit" name="delete_todo">Delete</button>
</form>
</div>
<?php endforeach; ?>
</div>
安全性考虑
确保输入数据经过验证和转义,防止 SQL 注入和 XSS 攻击。
$title = filter_input(INPUT_POST, 'title', FILTER_SANITIZE_STRING);
$description = filter_input(INPUT_POST, 'description', FILTER_SANITIZE_STRING);
完整示例
将上述代码整合到一个完整的 PHP 文件中,确保逻辑清晰且功能完整。







