我想问一下数字分页数字的显示问题
就是我想显示5 个可以点击的分页数字
怎么写 主要是跟什么有关系
例如 下面显示一共有12页 但是在一行全部显示了
我怎么能让他只显示5页 然后点到下一页的时候在显示剩下的几个页呢?
在线等
上一页 1 2 3 4 5 6 7 8 9 10 11 12 下一页 Pages: 9/12
就是我想显示5 个可以点击的分页数字
怎么写 主要是跟什么有关系
例如 下面显示一共有12页 但是在一行全部显示了
我怎么能让他只显示5页 然后点到下一页的时候在显示剩下的几个页呢?
在线等
上一页 1 2 3 4 5 6 7 8 9 10 11 12 下一页 Pages: 9/12
$resultc=mysql_query($sql) or die(mysql_error());
$rsc=mysql_fetch_array($resultc);
$num=$rsc[0];//取得数据表的总记录数
$pagesize=15; //每页显示的页数
if($_GET[page]<>"")
{
$page=$_GET[page]-1;
if($page<0)$page=0;
if($page>(intval($num/$pagesize)))$page=intval($num/$pagesize);
}
else
$page=0; //以上是取当前页码$sql="select * from art order by art_id DESC limit ".$pagesize*$page.",".$pagesize;//这条SQL语句关键是limit 后面的,读出数据表的第几条到第几条数据显示内容这略去了,再下来是分页这里,这里实现起来比较麻烦,大家可以复制使用<div class="page">
共<?php echo ceil($num/$pagesize);?>页
<a href="index.php?page=1">首页</a>
<?php if($page>0) echo " <a href='index.php?page=".$page."'>上一页</a> ";
for($i=($page>4?($page-3):1);$i<=(ceil($num/$pagesize)<9?ceil($num/$pagesize):(ceil($num/$pagesize)>($page+5)?($page+($page>5?5:(9-$page))):ceil($num/$pagesize)));$i++)
{
if(($page+1)==($i))
echo " ".$i." ";
else
echo "<a href=index.php?page=".$i.">[".($i)."]</a>";
}
?><?php if($page<ceil($num/$pagesize)-1) echo " <a href='index.php?page=".($page+2)."'>下一页</a> ";?><a href="index.php?page=<?php echo round(ceil($num/$pagesize));?>">末页</a>
</div>
应该说,分页条与数据库操作并无直接关系。所以函数中不包含数据库操作
/**
* 函数名 article_page
* 功能 根据模板生成分页条
* 参数
* style 分页条模板
* count 总记录数
* pagesize 每页记录数
* page 当前页号(从1开始计算)
* barview 可见的导航节点数
* 返回 格式化后的分页条文本
**/
function article_page($style, $count, $pagesize, $page, $barview=0) {
$page = $page<1 ? 1 : $page;
$pages = ceil($count/$pagesize);
$pairs = array(
'_count'=> $count,
'_pagesize' => $pagesize,
'_pages' => $pages,
'_page' => $page,
'_first' => 1,
'_prev' => $page > 1 ? $page - 1 : 1,
'_next' => $page < $pages ? $page + 1 : $pages,
'_last' => $pages,
);
if(! $barview) return strtr($style, $pairs);
if(! preg_match("/(<a.+_list.+?a>)/i", $style, $tpl)) return '';
$tpl = $tpl[1];
$begin = $page - floor($viewnum/2);
if($begin < 2) $begin = 2;
$end = $begin+$barview;
while($end > $pages) {
$end--;
if($begin > 2) $begin--;
}
$ret = '';
for($i=$begin; $i<$end; $i++) {
$ret .= str_replace('_list', "_$i", $tpl) . ' ';
$pairs["_$i"] = $i;
}
$ch1 = $begin > 2 ? ' ... ' : '';
$ch2 = $end < $pages ? ' ... ' : '';
return strtr(str_replace($tpl, $ch1.$ret.$ch2, $style), $pairs);
}测试例一
$tpl =<<< HTML
共 _count 条 每页 _pagesize 条 计 _pages 页
<a href=?page=_first>第一页</a>
<a href=?page=_prev>上一页</a>
<a href=?page=_next>下一页</a>
<a href=?page=_last>尾一页</a>
<br>
HTML;
echo article_page($tpl, 123, 10, $_GET['page']);测试例二
$tpl =<<< HTML
<a href=?page=_prev>上一页</a>
<a href=?page=_first>1</a>
<a href=?page=_list>_list</a>
<a href=?page=_last>_last</a>
<a href=?page=_next>下一页</a>
Pages:_page/_pages
HTML;
echo article_page($tpl, 123, 10, $_GET['page'], 5);