首页
 
广东省广州市天河区88号
400-123-4567
+86-123-4567
admin@baidu.com
570000

主要栏目

PHP开发简单新闻发布系统,含数据库设计与页面开发教程

来源:本站点击:时间:2026-02-20 02:59

搞一个新闻发布系统运用自己的力量借助PHP去开发,相较于使用现成的CMS而言,更能够学到实实在在有价值的内容,并且还能够完全依照自己的需求去进行定制。本篇文章将会运用实际的代码向你说明,从数据库设计开始,到前端展示,再到后台管理,一个全都完备了的新闻系统究竟应该怎样去撰写。

数据库设计与连接

用于新闻系统的核心之物是数据库,我们得去设计出一个能够用来存储标题、内容、作者以及发布时间的表,把你的phpMyAdmin打开,执行诸如下面这样的SQL语句去创建表,对于字段类型的选择必须要做到精准无误,就像标题应当采用VARCHAR(200)类型,内容则要用TEXT类型才能够存储篇幅较长的文章,如此这般。

数据库连接运用PDO方式会更具安全性,于项目根目录之中创建config.php文件,书写上连接代码。要记得将localhost、用户名以及密码替换成你自身的实际配置,在测试连接成功之后方可开展后续开发。

新闻列表页面开发

CREATE TABLE news (
  id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  title VARCHAR(255) NOT NULL,
  content TEXT NOT NULL,
  author VARCHAR(50) NOT NULL,
  publish_time DATETIME NOT NULL
);

新闻的列表页,需依照发布时间从后往前进行展示,并且每一篇仅呈现标题以及发布日期。在编写SQL查询时,要运用ORDER BY created_at DESC,接着借助while循环将数据运用一个HTML把它列表起来,每一条新闻标题都得带上一个指向详情页的链接。

分页功能是不可或缺需要有的,首先要运用COUNT(*)去统计总条数,接着再去计算总页数,LIMIT紧接着要跟起始位置和每页条数,需要用$_GET去接收当前页码参数,在底部还要加上上一页下一页的导航链接。

新闻详情页面实现

详情页借助URL参数获取新闻ID,诸如在news.php?id=5这种情况。第一步,得去验证这个参数是不是存在并且是不是数字,以此来避免SQL注入。接着从数据库里查询那条记录的完整内容,当查询结果为空的时候,要跳转到404页面。

对于页面布局而言,标题应当被放置于H1标签当中,在标题的下方要呈现出作者以及发布时间,正文内容需要运用nl2br函数来处理换行符。在其旁边能够添加一个返回列表的链接,如此一来用户体验会更佳。

后台登录功能开发

connect_error) {
    die("数据库连接失败:" . $conn->connect_error);
}
// 查询新闻列表
$sql = "SELECT * FROM news ORDER BY publish_time DESC";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    // 输出数据
    while($row = $result->fetch_assoc()) {
        echo "

".$row["title"]."

"; echo "

".$row["content"]."

"; echo "

作者:".$row["author"]."

"; echo "

发布时间:".$row["publish_time"]."

jQuery简单实用的分页插件Page

jQuery简单实用的分页插件Page。在商城网站或者企业网站中都是会用到的,例如有100条新闻,一页肯定放不下,所以我们就需要使用分页来进行合理的开发,让页面更加美观!

下载
"; echo "
"; } } else { echo "暂无新闻"; } $conn->close(); ?>

在后台管理方面,权限验证是必须要添加的,绝不能使得人能够随意地进行访问。要去新建一个名为admin的文件夹,在该文件夹里面放置一个叫做login.php的文件,采用最为简单的用户名以及密码验证方式,而在真是的项目当中,建议运用哈希加密的方式来进行存储。在登录成功之后,要用$_SESSION来记录状态的哟。

每次都得在每个后台页面开头进行检查,查看session是不是存在,要是不存在,那就往回跳转至登录页面。所谓退出功能,其实就是在logout点php里把session给毁掉,然后再进行跳转,遵循这样的逻辑来编写。

新闻发布表单制作

发布的表单之中应当涵盖有标题,还有作者以及内容这三个字段,内容的区域使用textarea标签。该表单会被提交至insert.php处进行处理,在接收数据之后要做基础的验证,标题以及内容绝对不能够为空,作者默认情况下设为可用的admin。

插入数据库运用INSERT语句,发布时间借由MySQL的NOW()函数自行生成,操作完毕后给用户通告成功亦或失败资讯,接着借助header跳转至新闻列表以防重复提交。

connect_error) {
    die("数据库连接失败:" . $conn->connect_error);
}
// 获取新闻ID
$id = $_GET["id"];
// 查询新闻详情
$sql = "SELECT * FROM news WHERE id = ".$id;
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    // 输出数据
    $row = $result->fetch_assoc();
    echo "

".$row["title"]."

"; echo "

".$row["content"]."

"; echo "

作者:".$row["author"]."

"; echo "

发布时间:".$row["publish_time"]."

"; } else { echo "找不到该新闻"; } $conn->close(); ?>

编辑删除功能实现

针对编辑功能而言,首先得依据ID将原数据呈现于表单之中,之后用户进行修改,修改完毕再提交至update.php。而删除功能相对更为简易,接收ID之后执行DELETE语句,不过务必弹出一个确认框以杜绝误操作。

在列表页当中,每一条新闻的后面,都需要添加编辑以及删除链接,管理界面务必要做得清晰且容易使用,对于所有的数据库操作,必须要用try-catch拿来捕捉异常,一旦遇到错误,要给出友好的提示,而并非直接进行报错。

你认为自身动手去撰写一回新闻系统,最为困难的情形是数据库设计这一方面,还是后台逻辑实现这一方面?欢迎于评论区域去分享你的编程经历,要是觉得文章具备用处,那就点击一下赞予以支持一番。

connect_error) {
    die("数据库连接失败:" . $conn->connect_error);
}
// 添加新闻
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["submit"])) {
    $title = $_POST["title"];
    $content = $_POST["content"];
    $author = $_POST["author"];
    $publish_time = date("Y-m-d H:i:s");
    $sql = "INSERT INTO news (title, content, author, publish_time) VALUES ('$title', '$content', '$author', '$publish_time')";
    
    if ($conn->query($sql) === TRUE) {
        echo "新闻发布成功";
    } else {
        echo "新闻发布失败:" . $conn->error;
    }
}
$conn->close();
?>