• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP操作MySQL数据库详解(四)

php 搞代码 4年前 (2022-01-22) 26次浏览 已收录 0个评论

新闻内容模块

  所涉及的内容

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

1. 新闻内容表

字段名 解释
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['page'])){    $page = 1; //默认为第一页    $startrow = 0;}else{    $page = (int)$_GET['page'];      //当前页数    $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='news_add.php'"/></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['id']?></td>        <td>            <a target="_blank" href="news_content.php?id=<?php echo $arr['id']?>">                <?php echo $arr['title']?>            </a>                </td>        <td><?php echo $arr['author']?></td>        <td><?php echo $arr['source']?></td>        <td><?php echo $arr['orderby']?></td>        <td><?php echo $arr['hits']?></td>        <td><?php echo date("Y-m-d H:i", $arr['addate'])?></td>        <td>            <a href="news_edit.php?id=<?php echo $arr['id']?>">修改</a>            <a href="javascript:void(0)" onClick="confirmDel(<?php echo $arr['id']?>)">删除</a>        </td>     </tr>    <?php }?>    <tr>        <td colspan="8" align="center">          <i style="color:transparent">本¥文来源gaodai$ma#com搞$代*码*网(</i><strong>搞代gaodaima码</strong>  <?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&nbsp;&nbsp;";                    }else{                        echo "<a href='manage.php?page=$i'>$i</a>&nbsp;&nbsp;";                        }                }            ?>        </td>    </tr></table></body></html>

运行的效果

3. 显示新闻内容 news_content.php

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

<!--news_content.php--><?php//**************************读取一条记录******************************//包含连接数据库的文件include "conn.php";//获取地址栏传递过来的id值$id = $_GET['id'];//构建更新点击率的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['title']?></title></head><body><table width="1000" cellpadding="5" align="center">    <tr>        <th><h2><?php echo $arr['title']?></h2></th>    </tr>    <tr>        <td bgcolor="#ccc" align="center">            作者:<?php echo $arr['author']?>&nbsp;&nbsp;&nbsp;&nbsp;            来源:<?php echo $arr['source']?>&nbsp;&nbsp;&nbsp;&nbsp;            点击率:<?php echo $arr['hits']?>次&nbsp;&nbsp;&nbsp;&nbsp;            发布时间:<?php echo date("Y-m-d H:i", $arr['addate'])?>        </td>    </tr>    <tr>        <td><?php echo $arr['content']?></td>    </tr></table></body></html>

运行效果

4. 添加新闻

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

添加新闻(news_add.php)

<!--news_add.php--><?php//*****************************添加新闻********************************//连接MySQL数据库include "conn.php";//判断表单是否提交if(isset($_POST['ac']) && $_POST['ac']=="add"){    //获取表单提交的数据    $cat = $_POST['cat'];    $title = $_POST['title'];    $author = $_POST['author'];    $source = $_POST['source'];    $orderby = $_POST['orderby'];    $keywords = $_POST['keywords'];    $description = $_POST['description'];    $content = $_POST['content'];    $addate = time();    //构建写入的SQL语句    $sql = "INSERT INTO 007_news(cat,title,author,source,orderby,keywords,description,content,addate) VALUES($cat,'$title','$author','$source',$orderby,'$keywords','$description','$content',$addate)";    //执行SQL语句    if(mysql_query($sql)){        //如果执行成功,则跳转到success.php页面        $url = "manage.php";        $message = urlencode("记录添加成功!");        echo "<script>location.href='success.php?url=$url&message=$message'</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('textarea[name="content"]', {        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>&nbsp;</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('textarea[name="content"]', {        allowFileManager : true   //是否允许上传文件    });});</script><textarea id="content" name="content" style="width:100%;height:300px; "></textarea>

运行效果

5. 删除新闻

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

删除新闻(news_del.php)

<!--news_del.php--><?php//**********************删除记录***********************//包含连MySQL接数据库的文件conn.phpinclude "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='success.php?url=$url&message=$message'</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['ac']) && $_POST['ac']=="add"){    //获取表单提交的数据    $cat = $_POST['cat'];    $title = $_POST['title'];    $author = $_POST['author'];    $source = $_POST['source'];    $orderby = $_POST['orderby'];    $keywords = $_POST['keywords'];    $description = $_POST['description'];    $content = $_POST['content'];    //通过表单提交用POST方式,获得隐藏域提交过来的id值    //这里不直接通过GET方式来获取id值,而是用隐藏域来获得id,安全性更高,而且地址栏的值可以改动    $id = $_POST['id'];      //构建要修改的SQL语句    $sql = "UPDATE 007_news SET cat=$cat,title='$title',author='$author',source='$source',orderby=$orderby,keywords='$keywords',description='$description',content='$content' WHERE id=$id";    //执行SQL语句    if(mysql_query($sql)){        //如果执行成功,则跳转到success.php页面        $url = "manage.php";        $message = urlencode("记录修改成功!");        echo "<script>location.href='success.php?url=$url&message=$message'</script>";        exit();    }}else{  //表单提交之前,应先显示数据库中的原始数据    //获取地址栏传递的id值    $id = $_GET['id'];    //构建查询的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('textarea[name="content"]', {        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['cat']==1){echo 'selected=selected';}?> >公司新闻</option>                <option value="2" <?php if($arr['cat']==2){echo 'selected=selected';}?> >行业新闻</option>                <option value="3" <?php if($arr['cat']==3){echo 'selected=selected';}?> >疾病预防</option>                <option value="4" <?php if($arr['cat']==4){echo 'selected=selected';}?> >帮助文档</option>            </select>        </td>    </tr>    <tr>        <td align="right">新闻标题:</td>        <td><input type="text" name="title" size="100" value="<?php echo $arr['title']?>"/></td>    </tr>    <tr>        <td align="right">作者:</td>        <td>            <input type="text" name="author" value="<?php echo $arr['author']?>" size="10"/>            来源:<input type="text" name="source" value="<?php echo $arr['source']?>" size="40"/>            排序:<input type="text" name="orderby" maxlength="2" value="<?php echo $arr['orderby']?>"/>        </td>    </tr>    <tr>        <td align="right">关键字:</td>        <td><input type="text" name="keywords" size="100" value="<?php echo $arr['keywords']?>"/></td>    </tr>    <tr>        <td align="right">描述:</td>        <td><input type="text" name="description" size="100" value="<?php echo $arr['desciption']?>"></td>    </tr>    <tr>        <td align="right">内容:</td>        <td><textarea name="content" style="width:100%;height:240px;"><?php echo $arr['content']?></textarea></td>    </tr>    <tr>        <td>&nbsp;</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数据库详解(四) 的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP操作MySQL数据库详解(四)

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址