重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
?php
创新互联公司电话联系:13518219792,为您提供成都网站建设网页设计及定制高端网站建设服务,创新互联公司网页制作领域十年,包括成都凿毛机等多个领域拥有多年建站经验,选择创新互联公司,为网站保驾护航。
include("connection.php");
$perNumber=10; //每页显示的记录数
$page=$_GET['page']; //获得当前的页面值
$count=mysql_query("select count(*) from user"); //获得记录总数
$rs=mysql_fetch_array($count);
$totalNumber=$rs[0];
$totalPage=ceil($totalNumber/$perNumber); //计算出总页数
if (!isset($page)) {
$page=1;
} //如果没有值,则赋值1
$startCount=($page-1)*$perNumber; //分页开始,根据此方法计算出开始的记录
$result=mysql_query("select * from user limit $startCount,$perNumber"); //根据前面的计算出开始的记录和记录数
while ($row=mysql_fetch_array($result)) {
echo "user_id:".$row[0]."br";
echo "username:".$row[1]."br"; //显示数据库的内容
}
if ($page != 1) { //页数不等于1
?
a href="fenye.php?page=?php echo $page - 1;?"上一页/a !--显示上一页--
?php
}
for ($i=1;$i=$totalPage;$i++) { //循环显示出页面
?
a href="fenye.php?page=?php echo $i;?"?php echo $i ;?/a
?php
}
if ($page$totalPage) { //如果page小于总页数,显示下一页链接
?
a href="fenye.php?page=?php echo $page + 1;?"下一页/a
?php
}
?
================================
这个是很简单的..而且也写了注释..不知道合不合你的意..
这是我以前学php写的 哈哈 你可以看看
?php
/**
* 分页类
* 1.实例化分页类,例:mypage new page("SQL语句","每页显示记录条数");
* 2.调用类中的 genpage() 方法,返回分页生成的SQL语句;
* 3.执行新生成的SQL语句;
* 4.调用 showpage_1() 或 showpage_2() 方法显示分页的翻页(可也以自定义返回显示的方式)
* 实例:
* $page = new page("select * from ly",2);
* $sql=$page-genpage();
* $ar=mysql_query($sql);
* while($nu=mysql_fetch_array($ar)){
* echo $nu[0].'br';
* }
* $page-showpage_2();
*/
class page{
private $totalnum; //总记录数
private $pagecount; //总页数
private $f_pagenum; //当前页的第一条记录
private $sql;
private $page; //当前页
private $page_size; //每页显示数量
private $pagesql;
private $total;
private $url; //当前页url
private $beforepage; //上一页
private $nextpage; //下一页
function __construct($sql,$page_size){ //传入sql语句和每页显示条数
$this-sql=$sql;
$this-page_size=$page_size;
$this-page=is_numeric($_GET[page]);
$this-page=substr($this-page,0,10);
$this-page=mysql_real_escape_string($this-page);
if(ereg("^[0-9]*[1-9][0-9]*$",$this-page)!=1){
$this-page=1;
}
if($this-page99999999){
$this-page=1;
}
}
function genpage(){
//
// if(!$this-page){
// $this-page=1;
// }
$this-pagesql = strstr($this-sqlcz," from ");
$this-pagesql = "select count(*) as ids ".$this-pagesql;
$this-total=mysql_query($this-sql);
$this-totalnum=mysql_num_rows($this-total); //总记录数
$this-pagecount=ceil($this-totalnum/$this-page_size); //总页数
$this-f_pagenum=$this-page_size*($this-page-1); //当前页的第一条记录
$this-sql .=" limit $this-f_pagenum,$this-page_size ";
return $this-sql;
}
//替换url中的page的页数
function replace_page($npage){
$this-url=$_SERVER["REQUEST_URI"]; //获取当前url
$check = strpos($this-url, 'page='); //判断url中是否有page分页参数
if($check==false){ //如果没有page分页参数
if(strpos($this-url, '?')==false){ //判断是否url是否有“ ?”号,
$this-url=$this-url."?page=1"; //如果没有“ ?”号,说明之前url没有参数
}else{
$this-url=$this-url."page=1"; //如果有“ ?”号,说明有参数,追加参数要改用符号
}
}
$npage="page=".$npage; //跳转到的页
$zz='[page=\d*]';
return preg_replace($zz,$npage,$this-url); //正则替换掉url中的page参数,实现分页
}
//显示总页数
function show_all_page(){
return $this-pagecount;
}
//显示当前页
function show_current_page(){
return $this-page;
}
//显示首页和上一页
function show_firstAndup_page(){
if($this-page==1){
return "首页|上一页";
}else{
$this-beforepage=$this-page-1;
return "a href=".$this-replace_page(1)."首页/a|a href=".$this-replace_page($this-beforepage)."上一页/a";
}
}
//显示下一页和最后页
function show_lastAnddown_page(){
if(($this-page==$this-pagecount)||($this-pagecount==0)){
return "下一页|尾页";
}else{
$this-nextpage=$this-page+1;
return "a href=".$this-replace_page($this-nextpage)."下一页/a|a href=".$this-replace_page($this-pagecount)."尾页/a";
}
}
//循环显示页数
function show_loop_page(){
$shownum =10/2;
$startpage = ($this-page$shownum)?$this-page-$shownum:1;
$endpage = ($this-page+$shownum=$this-pagecount)?$this-page+$shownum:$this-pagecount;
for($i=$startpage;$i=$endpage;$i++)
{
if($i==$this-page) {
$a= " b[".($i)."]/b ";
}else{
$a= " a href=".$this-replace_page($i)."".($i)."/a ";
}
$b=$b.$a;
}
return $b;
}
//整体显示第一种方案
function showpage_1(){
return "共".$this-show_all_page()."页nbsp"."当前第".$this-show_current_page()."页nbsp".$this-show_firstAndup_page()."nbsp"
.$this-show_loop_page()."nbsp".$this-show_lastAnddown_page();
}
//整体显示第二种方案
function showpage_2(){
return $this-show_firstAndup_page()."nbsp".$this-show_loop_page()."nbsp".$this-show_lastAnddown_page();
}
}
?
方法/步骤
首先要了解下分页的原理即
SELECT * FROM table …… limit 开始位置 , 操作条数
开始位置从0开始
SELECT * FROM table …… limit 0 , 20
取最前面20条
SELECT * FROM table …… limit 10 , 20
11条到20条
其次分页要用的公式
得到公式
(当前页数 - 1 )X 每页条数 , 每页条数
Select * from table limit ($Page- 1) * $PageSize, $PageSize
还要了解parse_url()解析URL函数
parse_url() 是讲URL解析成有固定键值的数组的函数
$ua=parse_url("");
print_r($ua);
结果:
Array
(
[scheme] = http
[host] = hostname
[user] = username
[pass] = password
[path] = /path
[query] = arg=value
[fragment] = anchor
)
创建数据库bbs和表test有
CREATE TABLE `test` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) character set gb2312 NOT NULL,
`sex` varchar(2) character set gb2312 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
然后插入十几条测试数据即可
写mysql数据库连接代码保存conn.php文件里
代码如下
?php
$conn = @ mysql_connect("localhost", "root", "") or die("数据库链接错误");
mysql_select_db("bbs", $conn);
mysql_query("set names 'GBK'"); //使用GBK中文编码;
function htmtocode($content) {
$content = str_replace("\n", "br", str_replace(" ", " ", $content));
return $content;
}
//$content=str_replace("'","'",$content);
//htmlspecialchars();
?
写分页函数page.php
代码如下
?php
function _PAGEFT($totle, $displaypg = 20, $url = '') {
global $page, $firstcount, $pagenav, $_SERVER;
$GLOBALS["displaypg"] = $displaypg;
if (!$page)
$page = 1;
if (!$url) {
$url = $_SERVER["REQUEST_URI"];
}
//URL分析:
$parse_url = parse_url($url);
$url_query = $parse_url["query"]; //单独取出URL的查询字串
if ($url_query) {
$url_query = ereg_replace("(^|)page=$page", "", $url_query);
$url = str_replace($parse_url["query"], $url_query, $url);
if ($url_query)
$url .= "page";
else
$url .= "page";
} else {
$url .= "?page";
}
$lastpg = ceil($totle / $displaypg); //最后页,也是总页数
$page = min($lastpg, $page);
$prepg = $page -1; //上一页
$nextpg = ($page == $lastpg ? 0 : $page +1); //下一页
$firstcount = ($page -1) * $displaypg;
//开始分页导航条代码:
$pagenav = "显示第 B" . ($totle ? ($firstcount +1) : 0) . "/B-B" . min($firstcount + $displaypg, $totle) . "/B 条记录,共 $totle 条记录";
//如果只有一页则跳出函数:
if ($lastpg = 1)
return false;
$pagenav .= " a href='$url=1'首页/a ";
if ($prepg)
$pagenav .= " a href='$url=$prepg'前页/a ";
else
$pagenav .= " 前页 ";
if ($nextpg)
$pagenav .= " a href='$url=$nextpg'后页/a ";
else
$pagenav .= " 后页 ";
$pagenav .= " a href='$url=$lastpg'尾页/a ";
//下拉跳转列表,循环列出所有页码:
$pagenav .= " 到第 select name='topage' size='1' onchange='window.location=\"$url=\"+this.value'\n";
for ($i = 1; $i = $lastpg; $i++) {
if ($i == $page)
$pagenav .= "option value='$i' selected$i/option\n";
else
$pagenav .= "option value='$i'$i/option\n";
}
$pagenav .= "/select 页,共 $lastpg 页";
}
include("conn.php");
$result=mysql_query("SELECT * FROM `test`");
$total=mysql_num_rows($result);
//调用pageft(),每页显示10条信息(使用默认的20时,可以省略此参数),使用本页URL(默认,所以省略掉).
_PAGEFT($total,5);
echo $pagenav;
$result=mysql_query("SELECT * FROM `test` limit $firstcount,$displaypg ");
while($row=mysql_fetch_array($result)){
echo "hrb".$row[name]." | ".$row[sex];
}
?
调用数据和分页list.php
?php
/**
* 爱微网
*/
include("conn.php");
$pagesize=5;
$url=$_SERVER["REQUEST_URI"];
$url=parse_url($url);
$url=$url[path];
$numq=mysql_query("SELECT * FROM `test`");
$num = mysql_num_rows($numq);
if($_GET[page]){
$pageval=$_GET[page];
$page=($pageval-1)*$pagesize;
$page.=',';
}
if($num $pagesize){
if($pageval=1)$pageval=1;
echo "共 $num 条".
" a href=$url?page=".($pageval-1)."上一页/a a href=$url?page=".($pageval+1)."下一页/a";
}
echo $SQL="SELECT * FROM `test` limit $page $pagesize ";
$query=mysql_query($SQL);
while($row=mysql_fetch_array($query)){
echo "hrb".$row[name]." | ".$row[sex];
}
?
注意事项
注意分页公式写法你只要记住即可;
(当前页数 - 1 )X 每页条数 , 每页条数;
Select * from table limit ($Page- 1) * $PageSize, $PageSize;
注意三个代码文件在同一个目录下;
主要是最后的list.php调用代码要细看很有用。
一般都是用mysql 的limit 功能来实现分页。
select * from table limit $begin,$end
$begin=0;
$end=10;
即显示开始0-10个数据。