PHP实例——分页技术

来源:互联网 发布:淘宝巧克力 编辑:程序博客网 时间:2024/05/19 19:41

这周做了个分页,虽说代码不长,但理解起来还是有一定难度的。就把中间碰到的一系列问题以及自己的解决过程记录下来吧。

实现分页需要两个文件。
pDivided.php用来显示第一页的内容、连接数据库、包括一些数据库的操作方法以及页数$P (本页中$p的值默认为1)的传递。
index.php用来显示其他页数,接受$p 参数,在URL中显示当前页数。

效果如下:

这里写图片描述

首先是数据库的连接(之前做过一次了,所以问题不大 )

设置每页显示的留言数$pagesize(设置的3)

确定页数p参数$p = $_GET['p']?$_GET['p']:1 这里是一个条件表达式,先用$_GET[]方法获取URL中p值,若p不存在(未通过超链接打开的页面即第一页没有p),则将1赋给$p;

创建数据指针$offset 通过$offset的值来控制本页显示的数据

//数据指针$offset = ($p-1)*$pagesize;//查询本页显示的数据$query_sql = "SELECT * FROM guestbook ORDER BY id DESC LIMIT  $offset , $pagesize";

循环输出

while($gblist = mysql_fetch_array($result)){    echo '<a href="',$gblist['nickname'],'">',$gblist['nickname'],'</a>';    echo '发表于:',date("Y-m-d H:i", $gblist[createtime]),'<br />';    echo '内容:',$gblist['content'],'<br /><hr />';}

计算总的页数和留言总数

//计算留言总数$count_result = mysql_query("SELECT count(*) as count FROM guestbook");$count_array = mysql_fetch_array($count_result);//计算总的页数$pagenum=ceil($count_array['count']/$pagesize);echo '共 ',$count_array['count'],'条留言';

最后是输出各页数目及超链接

if ($pagenum > 1) {    for($i=1;$i<=$pagenum;$i++) {    //若为当前页则加[]区别        if($i==$p) {            echo ' [',$i,']';        } else {            echo ' <a href="index.php?p=',$i,'">',$i,'</a>';        }    }}

中文乱码问题:一开始把教程上的源代码下下来看一下效果,发现有的中文正常显示,有的则是乱码。为解决问题在php代码的一开始加上了header('Content-type:text/html;charset=utf-8'); 这里我选用的是utf-8编码,因为网上有介绍说mysql最好用这种编码,所以我把配置文件my.ini也修改了一下。

[mysql]default-character-set=utf8[mysqld]default-character-set=utf8default-storage-engine=MyISAM在[mysqld]下加入:default-collation=utf8_bininit_connect='SET NAMES utf8' 

另一种方法是在需要做数据库操作中的php程序前加my_query(“setnames‘编码’”);,编码和php编码一致,如果php编码是gb2312那mysql编码就是gb2312,如果是utf-8那mysql编码就是utf8,这样插入或检索数据时就不会出现乱码了 。

效果如下
这里写图片描述

乱码解决了,但是出现了NOTICE,虽不是致命错误,但是看起来非常不舒服,所以找到的答案是这样的。

关闭 PHP 提示的方法

搜索php.ini:
error_reporting = E_ALL
改为:
error_reporting = E_ALL & ~E_NOTICE

然而这个方法并没有在我的例子中起效果,┑( ̄Д  ̄)┍

—————————————————————————————————————————

这是一条更新分割线

在第二次打开wampserver时,程序图标呈现黄色,并且mysql无打开
这里写图片描述

上网找了一下,发现有些答案提及到编码问题,所以应该是自己有些地方改多了,内部编码方式被修改导致数据库打不开。所以将修改的my.ini的代码全部注释掉。方法可行,而且不影响中文留言的显示,唉,只能说别人的方法并不一定能完全解决自己的问题,有时还可能带来不必要的麻烦。

好吧,就到这里。

0 0
原创粉丝点击