搜尋
首頁後端開發php教程PHP操作MySQL資料庫詳解(四)

新闻内容模块

  所涉及的内容

1. 新闻内容表的设计
2. 新闻列表的分页(即每页显示固定条数的新闻)
3. 显示新闻的内容(点击“新闻标题”,跳转到新闻内容页面(news_content.php)显示新闻具体内容)
4. 新闻的添加(点击“添加新闻”按钮,跳转到新闻添加页面(news_add.php))
5. 新闻的删除(点击“删除”,跳转到新闻删除页面(news_del.php))
6. 新闻的修改(点击“修改”,跳转到新闻修改页面(news_edit.php))

1. 新闻内容表

PHP操作MySQL資料庫詳解(四)

字段名 解释
cat 分类
title 标题
author 作者
source 来源
keywords 网页关键字
description 描述
orderby 排序
content 内容
hits 点击率
addate 发布时间

2. 显示新闻列表 manage.php

该页面实现

新闻列表的分页

包含功能

1.显示新闻的内容(news_content.php)
 2.新闻的添加(news_add.php)
 3.新闻的删除(news_del.php)
 4.新闻的修改(news_edit.php)

分页原理

变量表示 解释
总记录数 $records mysql_num_rows()
每页显示显示页数 $pagesize 用户定义
总页数 $pages $records / $pagesize
当前页 $page 用户选择

  函数ps

mysql_num_rows() 函数返回结果集中行的数目。

  分页的SQL语句

SELECT * FROM news LIMIT \$startrow,\$pagesize;
页数 表示
第一页 $page=1 LIMIT 0,10
第二页 $page=2 LIMIT 10,10
第三页 $page=3 LIMIT 20,10
…… ……

  可以总结出

$startrow = ($page - 1) * $pagesize;

新闻列表页面(manage.php)

<!--manage.php-->
<?php
//包含连接MySQL的文件include "conn.php";
//分页的相关变量$pagesize = 5; 
//每页显示的新闻条数
//获取地址栏中传递的page参数,确定当前页,当前行(所有记录中的)
if(empty($_GET[&#39;page&#39;])){    $page = 1; //默认为第一页
    $startrow = 0;
}else{    $page = (int)$_GET[&#39;page&#39;];      
//当前页数
    $startrow = ($page-1)*$pagesize;    //当前行数}//构建查询的SQL语句
    $sql = "SELECT * FROM 007_news"; 

//执行SQL语句,返回的是所有记录的结果集$result = mysql_query($sql);//总记录数和总页数
$records = mysql_num_rows($result);$pages = ceil($records / $pagesize);//构建分页的SQL语句
$sql = "SELECT * FROM 007_news ORDER BY orderby ASC,id DESC LIMIT $startrow,$pagesize";
//执行SQL语句,返回的是结果集(10条记录)$result = mysql_query($sql);?>
<!DOCTYPE html>
<html xmlns=" 
<head><meta charset=UTF-8>
<title>管理新闻列表</title>
<script type="text/javascript">
function confirmDel(id){
    //询问是否删除记录
    if(window.confirm("你确定要删除吗?")){        //跳转到PHP的删除页面 del.php
        location.href = "news_del.php?id="+id;
    }
}
</script>
</head>
<body>
<p style="padding:5px;">
<input type="button" value="添加新闻" onClick="javascript:location.href=&#39;news_add.php&#39;"/></p>
<table width="70%" border="1" bordercolor="#CCC" rules="all" cellpadding="5" align="center">
    <tr>
        <th>编号</th>
        <th>新闻标题</th>
        <th>作者</th>
        <th>来源</th>
        <th>排序</th>
        <th>点击率</th>
        <th>发布时间</th>
        <th>操作选项</th>
    </tr>
    <?php
        while($arr = mysql_fetch_assoc($result)){    ?>
    <tr>
        <td><?php echo $arr[&#39;id&#39;]?></td>
        <td>
            <a target="_blank" href="news_content.php?id=<?php echo $arr[&#39;id&#39;]?>">
                <?php echo $arr[&#39;title&#39;]?>
            </a>        
        </td>
        <td><?php echo $arr[&#39;author&#39;]?></td>
        <td><?php echo $arr[&#39;source&#39;]?></td>
        <td><?php echo $arr[&#39;orderby&#39;]?></td>
        <td><?php echo $arr[&#39;hits&#39;]?></td>
        <td><?php echo date("Y-m-d H:i", $arr[&#39;addate&#39;])?></td>
        <td>
            <a href="news_edit.php?id=<?php echo $arr[&#39;id&#39;]?>">修改</a>
            <a href="javascript:void(0)" onClick="confirmDel(<?php echo $arr[&#39;id&#39;]?>)">删除</a>
        </td>
     </tr>
    <?php }?>
    <tr>
        <td colspan="8" align="center">
            <?php  
                $prev = $page-3;                
                $next = $page+3;                
                if($page < 4){ 
                    $prev = 1;                    
                    $next = 7;     //后面补齐
                }                
                if($page > $pages-3){                    
                $next = $pages;    
                    $prev = $pages-6;  //前面补齐
                }                for($i=$prev;$i<=$next;$i++){   //当前页页码号在中间,前后各3个页码号,显示7个页码号    

                    if($i == $page){//当前页,不加链接
                        echo "$i  ";
                    }else{                        echo "<a href=&#39;manage.php?page=$i&#39;>$i</a>  ";    
                    }
                }            ?>
        </td>
    </tr></table></body></html>

运行的效果

PHP操作MySQL資料庫詳解(四)

3. 显示新闻内容 news_content.php

  点击新闻列表中某条新闻的标题,之后会跳转到该条新闻的详细内容页面(news_content.php)

<!--news_content.php-->
<?php
//**************************读取一条记录******************************
//包含连接数据库的文件
include "conn.php";
//获取地址栏传递过来的id值
$id = $_GET[&#39;id&#39;];
//构建更新点击率的SQL语句
$sql = "UPDATE 007_news SET hits=hits+1 WHERE id=$id";
mysql_query($sql);
//构建查询的SQL语句
$sql = "SELECT * FROM 007_news WHERE id=$id";
//执行SQL语句
$result = mysql_query($sql);
//取出唯一的一条记录
$arr = mysql_fetch_assoc($result);
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title><?php echo $arr[&#39;title&#39;]?></title>
</head>

<body>
<table width="1000" cellpadding="5" align="center">
    <tr>
        <th><h2><?php echo $arr[&#39;title&#39;]?></h2></th>
    </tr>
    <tr>
        <td bgcolor="#ccc" align="center">
            作者:<?php echo $arr[&#39;author&#39;]?>    
            来源:<?php echo $arr[&#39;source&#39;]?>    
            点击率:<?php echo $arr[&#39;hits&#39;]?>次    
            发布时间:<?php echo date("Y-m-d H:i", $arr[&#39;addate&#39;])?>
        </td>
    </tr>
    <tr>
        <td><?php echo $arr[&#39;content&#39;]?></td>
    </tr>
</table>
</body>
</html>

运行效果

PHP操作MySQL資料庫詳解(四)

4. 添加新闻

  在新闻列表页(manage.php)点击“添加新闻”,会跳转到“添加新闻”页面(news_add.php)。添加成功后,数据库中就添加了该条新增记录了,然后跳转到操作成功提示页面,5秒后,跳转到新闻列表页面(manage.php)。

添加新闻(news_add.php)

<!--news_add.php-->

<?php
//*****************************添加新闻********************************

//连接MySQL数据库
include "conn.php";

//判断表单是否提交
if(isset($_POST[&#39;ac&#39;]) && $_POST[&#39;ac&#39;]=="add"){

    //获取表单提交的数据
    $cat = $_POST[&#39;cat&#39;];
    $title = $_POST[&#39;title&#39;];
    $author = $_POST[&#39;author&#39;];
    $source = $_POST[&#39;source&#39;];
    $orderby = $_POST[&#39;orderby&#39;];
    $keywords = $_POST[&#39;keywords&#39;];
    $description = $_POST[&#39;description&#39;];
    $content = $_POST[&#39;content&#39;];
    $addate = time();

    //构建写入的SQL语句
    $sql = "INSERT INTO 007_news(cat,title,author,source,orderby,keywords,description,content,addate) VALUES($cat,&#39;$title&#39;,&#39;$author&#39;,&#39;$source&#39;,$orderby,&#39;$keywords&#39;,&#39;$description&#39;,&#39;$content&#39;,$addate)";

    //执行SQL语句
    if(mysql_query($sql)){

        //如果执行成功,则跳转到success.php页面
        $url = "manage.php";
        $message = urlencode("记录添加成功!");
        echo "<script>location.href=&#39;success.php?url=$url&message=$message&#39;</script>";
        exit();
    }

}
?>

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>添加新闻</title>

<!--引入编辑器文件和语言包-->
<script charset="utf-8" src="js/editor/kindeditor-min.js"></script>
<script charset="utf-8" src="js/editor/lang/zh_CN.js"></script>

<script>
//加入在线编辑器
var editor;
KindEditor.ready(function(K) {
    //在当前网页中,查找<textarea name = "content"></textarea>,并替换成kindeditor编辑器。
editor = K.create(&#39;textarea[name="content"]&#39;, {
        allowFileManager : true   //是否允许上传文件
    });
});
</script>

</head>

<body>
<form name="form1" method="post" action="">
<table width="800" border="1" rules="all" bordercolor="#ccc" cellpadding="5" align="center">
    <tr>
        <th colspan="2">添加新闻</th>
    </tr>
    <tr>
        <td width="80" align="center">新闻类型:</td>
        <td>
            <select name="cat">
                <option value="1">新闻类型1</option>
                <option value="2">新闻类型2</option>
                <option value="3">新闻类型3</option>
                <option value="4">新闻类型4</option>
            </select>
        </td>
    </tr>
    <tr>
        <td align="right">新闻标题:</td>
        <td><input type="text" name="title" size="100"/></td>
    </tr>
    <tr>
        <td align="right">作者:</td>
        <td>
            <input type="text" name="author" value="admin" size="10"/>
            来源:<input type="text" name="source" value="default" size="40"/>
            排序:<input type="text" name="orderby" maxlength="2" value="50"/>
        </td>
    </tr>
    <tr>
        <td align="right">关键字:</td>
        <td><input type="text" name="keywords" size="100"/></td>
    </tr>
    <tr>
        <td align="right">描述:</td>
        <td><input type="text" name="description" size="100"></td>
    </tr>
    <tr>
        <td align="right">内容:</td>
        <td><textarea name="content" style="width:100%;height:240px;"></textarea></td>
    </tr>
    <tr>
        <td> </td>
        <td>
            <input type="submit" value="提交"/>
            <input type="hidden" name="ac" value="add"/>    <!--隐藏域,表单验证-->
            <input type="reset" value="重置"/>
        </td>
    </tr>
</table>
</form>
</body>
</html>

  代码PS

上述代码中引入了在线HTML编辑器:kindeditor 将editor文件直接“复制”到要引入文件的同级目录即可。
 在需要的编辑器的页面,引入如下文件:

<!--在代码中引入在线HTML编辑器:kindeditor-->

<script charset="utf-8" src="js/editor/kindeditor-min.js"></script>
<script charset="utf-8" src="js/editor/lang/zh_CN.js"></script>
<script>
//加入在线编辑器
var editor;
KindEditor.ready(function(K) {
    //在当前网页中,查找<textarea name = ‘content’></textarea>,并替换成kindeditor编辑器。
editor = K.create(&#39;textarea[name="content"]&#39;, {
        allowFileManager : true   //是否允许上传文件
    });
});
</script>
<textarea id="content" name="content" style="width:100%;height:300px; "></textarea>

运行效果

PHP操作MySQL資料庫詳解(四)

5. 删除新闻

  在新闻列表页(manage.php)点击“删除”,出现确认删除的提示框,点击“确认”后,会跳转到新闻删除页面(news_del.php),对该条新闻进行删除,此后数据库中就没有该条记录了。删除成功后,跳转到操作成功提示页面,5秒后,跳转到新闻列表页面(manage.php)。

删除新闻(news_del.php)

<!--news_del.php-->
<?php
//**********************删除记录***********************
//包含连MySQL接数据库的文件conn.php
include "conn.php";

//获取地址栏传递的id参数,GET方式获取地址栏数据,POST获取表单数据
$id = (int)$_GET["id"];

//构建删除的SQL语句
$sql = "DELETE FROM 007_news WHERE id=$id";

//执行SQL语句
if(mysql_query($sql))
{
    //如果执行成功,则跳转到success.php页面
    $url = "manage.php";
    $message = urlencode("id={$id}记录删除成功!");
    echo "<script>location.href=&#39;success.php?url=$url&message=$message&#39;</script>";
}else
{
    //如果执行失败,则跳转到error.php页面
    $message = urlencode("记录删除失败!");
    header("location:error.php?message=$message");
}
?>

6. 修改新闻

  在新闻列表页(manage.php)点击修改,会跳转到新闻修改页面(news_edit.php),首先页面会读取指定id的数据,并写入对应的表单输入框中,对照原始信息作修改,点击修改后,数据库的记录也就更新了。修改成功后,跳转到操作成功提示页面,5秒后,跳转到新闻列表页面(manage.php)。

修改新闻(news_edit.php)

<!--news_edit.php-->
<?php
//*****************************修改新闻********************************

//连接MySQL数据库
include "conn.php";

//判断表单是否提交
if(isset($_POST[&#39;ac&#39;]) && $_POST[&#39;ac&#39;]=="add"){

    //获取表单提交的数据
    $cat = $_POST[&#39;cat&#39;];
    $title = $_POST[&#39;title&#39;];
    $author = $_POST[&#39;author&#39;];
    $source = $_POST[&#39;source&#39;];
    $orderby = $_POST[&#39;orderby&#39;];
    $keywords = $_POST[&#39;keywords&#39;];
    $description = $_POST[&#39;description&#39;];
    $content = $_POST[&#39;content&#39;];

    //通过表单提交用POST方式,获得隐藏域提交过来的id值
    //这里不直接通过GET方式来获取id值,而是用隐藏域来获得id,安全性更高,而且地址栏的值可以改动
    $id = $_POST[&#39;id&#39;];  

    //构建要修改的SQL语句
    $sql = "UPDATE 007_news SET cat=$cat,title=&#39;$title&#39;,author=&#39;$author&#39;,source=&#39;$source&#39;,orderby=$orderby,keywords=&#39;$keywords&#39;,description=&#39;$description&#39;,content=&#39;$content&#39; WHERE id=$id";

    //执行SQL语句
    if(mysql_query($sql)){

        //如果执行成功,则跳转到success.php页面
        $url = "manage.php";
        $message = urlencode("记录修改成功!");
        echo "<script>location.href=&#39;success.php?url=$url&message=$message&#39;</script>";
        exit();
    }

}else{  //表单提交之前,应先显示数据库中的原始数据

    //获取地址栏传递的id值
    $id = $_GET[&#39;id&#39;];

    //构建查询的SQL语句
    $sql = "SELECT * FROM 007_news WHERE id=$id";

    //执行SQL语句
    $result = mysql_query($sql);

    //取出记录
    $arr = mysql_fetch_assoc($result);
}
?>

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>修改新闻</title>

<!--引入编辑器文件和语言包-->
<script charset="utf-8" src="js/editor/kindeditor-min.js"></script>
<script charset="utf-8" src="js/editor/lang/zh_CN.js"></script>

<script>
//加入在线编辑器
var editor;
KindEditor.ready(function(K) {
    //在当前网页中,查找<textarea name = "content"></textarea>,并替换成kindeditor编辑器。
editor = K.create(&#39;textarea[name="content"]&#39;, {
        allowFileManager : true   //是否允许上传文件
    });
});
</script>

</head>

<body>
<form name="form1" method="post" action="">
<table width="800" border="1" rules="all" bordercolor="#ccc" cellpadding="5" align="center">
    <tr>
        <th colspan="2">修改新闻</th>
    </tr>
    <tr>
        <td width="80" align="center">新闻类型:</td>
        <td>
            <select name="cat">
                <option value="1" <?php if($arr[&#39;cat&#39;]==1){echo &#39;selected=selected&#39;;}?> >公司新闻</option>
                <option value="2" <?php if($arr[&#39;cat&#39;]==2){echo &#39;selected=selected&#39;;}?> >行业新闻</option>
                <option value="3" <?php if($arr[&#39;cat&#39;]==3){echo &#39;selected=selected&#39;;}?> >疾病预防</option>
                <option value="4" <?php if($arr[&#39;cat&#39;]==4){echo &#39;selected=selected&#39;;}?> >帮助文档</option>
            </select>
        </td>
    </tr>
    <tr>
        <td align="right">新闻标题:</td>
        <td><input type="text" name="title" size="100" value="<?php echo $arr[&#39;title&#39;]?>"/></td>
    </tr>
    <tr>
        <td align="right">作者:</td>
        <td>
            <input type="text" name="author" value="<?php echo $arr[&#39;author&#39;]?>" size="10"/>
            来源:<input type="text" name="source" value="<?php echo $arr[&#39;source&#39;]?>" size="40"/>
            排序:<input type="text" name="orderby" maxlength="2" value="<?php echo $arr[&#39;orderby&#39;]?>"/>
        </td>
    </tr>
    <tr>
        <td align="right">关键字:</td>
        <td><input type="text" name="keywords" size="100" value="<?php echo $arr[&#39;keywords&#39;]?>"/></td>
    </tr>
    <tr>
        <td align="right">描述:</td>
        <td><input type="text" name="description" size="100" value="<?php echo $arr[&#39;desciption&#39;]?>"></td>
    </tr>
    <tr>
        <td align="right">内容:</td>
        <td><textarea name="content" style="width:100%;height:240px;"><?php echo $arr[&#39;content&#39;]?></textarea></td>
    </tr>
    <tr>
        <td> </td>
        <td>
            <input type="submit" value="修改"/>
            <input type="hidden" name="ac" value="add"/>    <!--隐藏域,表单验证-->
            <input type="hidden" name="id" value="<?php echo $id?>"/>  <!--隐藏域,用于传递通过GET方式获得的id值-->
            <input type="reset" value="重置"/>
        </td>
    </tr>
</table>
</form>
</body>
</html>

以上是PHP操作MySQL資料庫詳解(四)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何使PHP應用程序更快如何使PHP應用程序更快May 12, 2025 am 12:12 AM

tomakephpapplicationsfaster,關注台詞:1)useopcodeCachingLikeLikeLikeLikeLikePachetoStorePreciledScompiledScriptbyTecode.2)MinimimiedAtabaseSqueriSegrieSqueriSegeriSybysequeryCachingandeffeftExting.3)Leveragephp7 leveragephp7 leveragephp7 leveragephpphp7功能forbettercodeefficy.4)

PHP性能優化清單:立即提高速度PHP性能優化清單:立即提高速度May 12, 2025 am 12:07 AM

到ImprovephPapplicationspeed,關注台詞:1)啟用opcodeCachingwithapCutoredUcescriptexecutiontime.2)實現databasequerycachingingusingpdotominiminimizedatabasehits.3)usehttp/2tomultiplexrequlexrequestsandreduceconnection.4 limitesclection.4.4

PHP依賴注入:提高代碼可檢驗性PHP依賴注入:提高代碼可檢驗性May 12, 2025 am 12:03 AM

依赖注入(DI)通过显式传递依赖关系,显著提升了PHP代码的可测试性。1)DI解耦类与具体实现,使测试和维护更灵活。2)三种类型中,构造函数注入明确表达依赖,保持状态一致。3)使用DI容器管理复杂依赖,提升代码质量和开发效率。

PHP性能優化:數據庫查詢優化PHP性能優化:數據庫查詢優化May 12, 2025 am 12:02 AM

DatabasequeryoptimizationinPHPinvolvesseveralstrategiestoenhanceperformance.1)Selectonlynecessarycolumnstoreducedatatransfer.2)Useindexingtospeedupdataretrieval.3)Implementquerycachingtostoreresultsoffrequentqueries.4)Utilizepreparedstatementsforeffi

簡單指南:帶有PHP腳本的電子郵件發送簡單指南:帶有PHP腳本的電子郵件發送May 12, 2025 am 12:02 AM

phpisusedforsenderemailsduetoitsbuilt-inmail()函數andsupportivelibrariesLikePhpMailerAndSwiftMailer.1)usethemail()functionForbasiceMails,butithasimails.2)butithasimail.2)

PHP性能:識別和修復瓶頸PHP性能:識別和修復瓶頸May 11, 2025 am 12:13 AM

PHP性能瓶颈可以通过以下步骤解决:1)使用Xdebug或Blackfire进行性能分析,找出问题所在;2)优化数据库查询并使用缓存,如APCu;3)使用array_filter等高效函数优化数组操作;4)配置OPcache进行字节码缓存;5)优化前端,如减少HTTP请求和优化图片;6)持续监控和优化性能。通过这些方法,可以显著提升PHP应用的性能。

PHP的依賴注入:快速摘要PHP的依賴注入:快速摘要May 11, 2025 am 12:09 AM

依賴性注射(DI)InphpisadesignPatternthatManages和ReducesClassDeptions,增強量強制性,可驗證性和MATIALWINABIOS.ItallowSpasspassingDepentenciesLikEdenciesLikedAbaseConnectionStoclasseconnectionStoclasseSasasasasareTers,interitationAseTestingEaseTestingEaseTestingEaseTestingEasingAndScalability。

提高PHP性能:緩存策略和技術提高PHP性能:緩存策略和技術May 11, 2025 am 12:08 AM

cachingimprovesphpermenceByStorcyResultSofComputationsorqucrouctationsorquctationsorquickretrieval,reducingServerLoadAndenHancingResponsetimes.feftectivestrategiesinclude:1)opcodecaching,whereStoresCompiledSinmememorytssinmemorytoskipcompliation; 2)datacaching datacachingsingMemccachingmcachingmcachings

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器