PHP分页函数

做列表分页是一项基本功能,以前写过一个asp的分页类,Asp.net中分页很多控件就直接支持,只要必样式就可以了。下面是摘自Sablog的一段分页函数,根据我的需要作了一点修改,这个分页函数应该源自DZ论坛程序。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function multi($num, $perpage, $curpage, $mpurl) {
	$multipage = '';
	$mpurl .= strpos($mpurl, '?') ? '&' : '?';
	if($num > $perpage) {
		$page = 10;
		$offset = 5;
		$pages = @ceil($num / $perpage);
		if($page > $pages) {
			$from = 1;
			$to = $pages;
		} else {
			$from = $curpage - $offset;
			$to = $curpage + $page - $offset - 1;
			if($from < 1) {
				$to = $curpage + 1 - $from;
				$from = 1;
				if(($to - $from) < $page && ($to - $from) < $pages) {
					$to = $page;
				}
			} elseif($to > $pages) {
				$from = $curpage - $pages + $to;
				$to = $pages;
				if(($to - $from) < $page && ($to - $from) < $pages) {
					$from = $pages - $page + 1;
				}
			}
		}
 
		$multipage = ($curpage - $offset > 1 && $pages > $page ? '<a href="'.$mpurl.'page=1">第一页</a> ' : '').($curpage > 1 ? '<a href="'.$mpurl.'page='.($curpage - 1).'">上一页</a> ' : '');
		for($i = $from; $i <= $to; $i++) {
			$multipage .= $i == $curpage ? $i.' ' : '<a href="'.$mpurl.'page='.$i.'">['.$i.']</a> ';
		}
		$multipage .= ($curpage < $pages ? '<a href="'.$mpurl.'page='.($curpage + 1).'">下一页</a>' : '').($to < $pages ? ' <a href="'.$mpurl.'page='.$pages.'">最后一页</a>' : '');
		$multipage = $multipage ? '共'.$pages.'页: '.$multipage : '';
	}
	return $multipage;
}

用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$pagesize = 10;   // 每页记录数
$query = mysql_query("SELECT count(*) FROM table");
$row = mysql_fetch_array($query);
$amount = $row[0];   // 查询记录总数
$pagecount = $amount ? (($amount < $pagesize) ? 1 : (($amount % $pagesize) ? ((int)($amount / $pagesize) + 1) : ($amount / $pagesize))) : 0;   // 计算总页数
$page = !empty($_GET['page']) ? max(1, intval($_GET['page'])) : 1;
$page = $page > $pagecount ? 1 : $page;   // 取得当前页值
$startlimit = ($page - 1) * $pagesize;   // 查询起始的偏移量
$result=mysql_query("SELECT * FROM table order by id desc LIMIT {$startlimit}, {$pagesize}");   // 查询记录集
 
while( $row = mysql_fetch_array($result) )
{
//你要显示的格式。
}

输出你的分页:

1
2
$multipage = multi($amount, $pagesize, $page, 'index.php?action=listadmin');   // 显示分页
echo $multipage;

比以前写的那个分页类,简单多了。

网友评论(共6条评论)

  1. Tr0j4n

     2009年7月7日 14:29 pm

    呵呵。还很菜,继续修炼


  2. lonkil

     2009年7月7日 13:33 pm

    To Jian Sir :

    感谢兄弟还很挂念小弟的一亩三分地,我这杂货是纯娱乐的。

    最近,生意怎么样?


  3. 剑哥哥

     2009年7月7日 13:31 pm

    许久不来,感想一二:
    1、李总,好久没有关注你了噢,发现你成熟了。
    2、最近,发现专卖店生意都是那么差,都在转型。就连你的这个店面也开始摆杂货了啊,什么淘宝啊、广告啊、印刷机啊都上柜了哟;


  4. solu

     2009年7月6日 18:58 pm

    呵呵,我也来做做客,
    很长一段时间没来了!


  5. lonkil

     2009年7月4日 20:00 pm

    出关了?看到你最新发布的作品了,很年X的说。


  6. Tr0j4n

     2009年7月4日 19:54 pm

    大哥,我来了。呵呵
    想你了呢


发表评论





XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>