PHP删除帖子

现在介绍与删除帖子相关的代码,首先重点看用于输出帖子列表的for循环,代码如下所示:

  循环体的前两句用于交错相邻行的背景色,以粗体显示的第 3句是关键,它输出了一个核选框控件,且控件的名称为“ids[]”,控件的值为相应的帖子的ID。控件名称中的方括号使得表单提交时,同名的核选框中的数据以数组的方式提交到服务器端。循环体的最后两句则根据帖子的删除标志显示不同图片。

  用于删除操作的按钮的HTML代码如下所示:

  按钮的链接都是调用JavaScript的do_submit()函数,只是传入的参数不同。do_submit()函数的定义代码如下所示:

 参数为search时,是对使用帖子搜索功能的处理;参数为其他值(即单击删除按钮传入的值)时,如果是all或none(即全部删除和全部恢复)则先调用selectAll()函数将表单中的核选框全部选中,然后再提交。selectAll()函数在op.js中的定义代码如下所示:

  该函数使用for循环遍历参数所指对象的所有子孙对象,如果子孙对象是核选框则将其checked属性设为true使其被选中。

  l 以上是客户端对帖子删除功能的处理,下面继续介绍服务器端处理帖子删除的代码:

  这段代码根据URL中del参数的值不同,分别调用了类Article的3个静态成员变量,它们的定义代码如下所示:

  这3个函数的代码基本相同,只是SQL语句的SET部分稍有不同。UPDATE语句的 条件 部分的IN条件由函数makeIns4SQL()得到,该函数定义在common.php中,功能很简单,就是将数组转为字符串,读者可自行查看。

实现一个基础论坛需要以下步骤: 1. 创建数据库和数据表 在 MySQL 中创建一个数据库和数据表,用于存储用户信息和帖子信息。可以使用 phpMyAdmin 或 MySQL 命令行来创建。 ``` CREATE DATABASE forum_db; USE forum_db; CREATE TABLE users ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, username VARCHAR(30) NOT NULL, password VARCHAR(30) NOT NULL ); CREATE TABLE posts ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, title VARCHAR(50) NOT NULL, content TEXT NOT NULL, author VARCHAR(30) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); ``` 2. 创建用户登录、注册、更改密码功能 在 PHP 中创建一个用户管理类,用于处理用户的登录、注册和更改密码功能。在类中,可以使用 PDO 来连接 MySQL 数据库,并执行 SQL 查询。 ``` class UserManager { private $db; function __construct() { $dsn = 'mysql:host=localhost;dbname=forum_db'; $username = 'root'; $password = ''; try { $this->db = new PDO($dsn, $username, $password); } catch (PDOException $e) { die('Database connection failed: ' . $e->getMessage()); } } function register($username, $password) { $stmt = $this->db->prepare('INSERT INTO users (username, password) VALUES (:username, :password)'); $stmt->bindParam(':username', $username); $stmt->bindParam(':password', $password); $stmt->execute(); } function login($username, $password) { $stmt = $this->db->prepare('SELECT * FROM users WHERE username = :username AND password = :password'); $stmt->bindParam(':username', $username); $stmt->bindParam(':password', $password); $stmt->execute(); $user = $stmt->fetch(PDO::FETCH_ASSOC); return $user; } function changePassword($username, $password) { $stmt = $this->db->prepare('UPDATE users SET password = :password WHERE username = :username'); $stmt->bindParam(':username', $username); $stmt->bindParam(':password', $password); $stmt->execute(); } } ``` 3. 创建帖子发布、查看和删除功能 在 PHP 中创建一个帖子管理类,用于处理帖子的发布、查看和删除功能。在类中,同样可以使用 PDO 来连接 MySQL 数据库,并执行 SQL 查询。 ``` class PostManager { private $db; function __construct() { $dsn = 'mysql:host=localhost;dbname=forum_db'; $username = 'root'; $password = ''; try { $this->db = new PDO($dsn, $username, $password); } catch (PDOException $e) { die('Database connection failed: ' . $e->getMessage()); } } function createPost($title, $content, $author) { $stmt = $this->db->prepare('INSERT INTO posts (title, content, author) VALUES (:title, :content, :author)'); $stmt->bindParam(':title', $title); $stmt->bindParam(':content', $content); $stmt->bindParam(':author', $author); $stmt->execute(); } function getPosts() { $stmt = $this->db->query('SELECT * FROM posts'); $posts = $stmt->fetchAll(PDO::FETCH_ASSOC); return $posts; } function deletePost($id) { $stmt = $this->db->prepare('DELETE FROM posts WHERE id = :id'); $stmt->bindParam(':id', $id); $stmt->execute(); } } ``` 4. 创建前端页面 在 HTML 中创建一个登录、注册、更改密码和帖子管理的前端页面。在页面中,可以使用 PHP 来处理用户输入和输出结果。 ``` <?php session_start(); require_once 'UserManager.php'; require_once 'PostManager.php'; $userManager = new UserManager(); $postManager = new PostManager(); if (isset($_POST['register'])) { $username = $_POST['username']; $password = $_POST['password']; $userManager->register($username, $password); } if (isset($_POST['login'])) { $username = $_POST['username']; $password = $_POST['password']; $user = $userManager->login($username, $password); if ($user) { $_SESSION['user'] = $user; } else { echo 'Login failed'; } } if (isset($_POST['change_password'])) { $username = $_SESSION['user']['username']; $password = $_POST['new_password']; $userManager->changePassword($username, $password); $_SESSION['user']['password'] = $password; } if (isset($_POST['create_post'])) { $title = $_POST['title']; $content = $_POST['content']; $author = $_SESSION['user']['username']; $postManager->createPost($title, $content, $author); } if (isset($_POST['delete_post'])) { $id = $_POST['id']; $postManager->deletePost($id); } if (isset($_SESSION['user'])) { $posts = $postManager->getPosts(); } ?> <!DOCTYPE html> <html> <head> <title>Forum</title> </head> <body> <?php if (isset($_SESSION['user'])): ?> <h1>Welcome <?php echo $_SESSION['user']['username']; ?></h1> <form method="post"> <label>New Password:</label> <input type="password" name="new_password"> <input type="submit" name="change_password" value="Change Password"> </form> <form method="post"> <label>Title:</label> <input type="text" name="title"> <label>Content:</label> <textarea name="content"></textarea> <input type="submit" name="create_post" value="Create Post"> </form> <table> <thead> <tr> <th>Title</th> <th>Content</th> <th>Author</th> <th>Created At</th> <th>Updated At</th> <th>Action</th> </tr> </thead> <tbody> <?php foreach ($posts as $post): ?> <tr> <td><?php echo $post['title']; ?></td> <td><?php echo $post['content']; ?></td> <td><?php echo $post['author']; ?></td> <td><?php echo $post['created_at']; ?></td> <td><?php echo $post['updated_at']; ?></td> <td> <form method="post"> <input type="hidden" name="id" value="<?php echo $post['id']; ?>"> <input type="submit" name="delete_post" value="Delete"> </form> </td> </tr> <?php endforeach; ?> </tbody> </table> <form method="post"> <input type="submit" name="logout" value="Logout"> </form> <?php else: ?> <form method="post"> <label>Username:</label> <input type="text" name="username"> <label>Password:</label> <input type="password" name="password"> <input type="submit" name="login" value="Login"> </form> <form method="post"> <label>Username:</label> <input type="text" name="username"> <label>Password:</label> <input type="password" name="password"> <input type="submit" name="register" value="Register"> </form> <?php endif; ?> </body> </html> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值