本分页类的演示样式:
http://www.88php.com/more.php?catid=1本类为PHP--SMARTY爱好者提供,不足之处请指正~~分享成果~~~提供者,阿涛~~
PHP技术群30677629
function showpage ($total, $page = 1, $perpage = 20, $url = '')
{ /* $total 记录总数
$page 当前页码
$perpage 每页一共显示记录数
$url url地址
$pages 总页数/尾页数
$prepg 上一页
$nextpg 下一页
$prepgten 上十页
$nextpgten 下十页
$pagenav 变量参数
$pagepre = 3; //滚动的条数 */
global $QUERY_STRING;
$url = ($url ? $url : '?' . preg_replace ('/(.*)(&page=[0-9]?)(.*)/i', '\\1\\3', $QUERY_STRING));
// $url.="?a=1";
$pages = ceil ($total / $perpage);
$page = min ($pages, $page);
$maxpages=10;
$pagepre = 5; //滚动的条数
$prepg = $page - 1;
$nextpg = ($page == $pages ? 0 : $page + 1);
$prepgten = $page - 10;
$nextpgten = ($page == $pages ? 0 : $page + 10);
if ($total < 1)
{
return false;
}
$pagenav = '' . '总数:<b>' . $total . '</b> '; //$pagenav .= ($prepg ? '' . '<a href=\'' . $url . '&pager=1\'>|<</a> <a href=\'' . $url . '&pager=' . $prepgten . '\'>上10页</a> <a href=\'' . $url . '&pager=' . $prepg . '\'>上一页</a> ' : '|< 上一页 ');
if($prepg != 1)
{
$pagenav .= ($prepg ? '' . '<a href=\'' . $url . '&pager=1\'>首页</a> <a href=\'' . $url . '&pager=' . $prepg . '\'><<</a> ' : ' ');
}
if($maxpages>=$pages)
{
$prepg = 1;
$pgend = $pages;
}elseif(($page-$pagepre-1+$maxpages)>$pages)
{
$pgstart =$pages-$maxpages + 1;
$pgend = $pages;
}else{
$pgstart=(($page <= $pagepre)?1:($page - $pagepre));
$pgend=(($pgstart==1)?$maxpages:($pgstart + $maxpages-1));
}for($pg=$pgstart;$pg<=$pgend;$pg++)
{ //中间菜单
if($pg == $page) $pagenav .="<a class=\"p_num\" href=\"". $url ."pager=$pg\"><font class=\"pager\"><font color=\"#ff0000\" >$pg</font></font></a> ";
else $pagenav .="<a href=\"". $url ."pager=$pg\"><font class=\"pager\">$pg</font></a> ";
}
if($page != $pages)
{
$pagenav .= ($nextpg ? '' . '<a href=\'' . $url . '&pager=' . $nextpg . '\'> >></a> <a href=\'' . $url . '&pager=' . $pages . '\'>尾页</a> ' : ' >> 尾页 ');
}
$pagenav .= '' . '页次:<b><font color=red>' . $page . '</font>/' . $pages . '</b> <font class=\"pager\">转到:</font><select name=\'topage\' size=\'1\' onchange=\'window.location="' . $url . '&pager="+this.value\'>';
for ($i = 1; $i <= $pages; ++$i)
{
$selected = ($i == $page ? 'selected' : '');
$pagenav .= '' . '<option value=\'' . $i . '\' ' . $selected . '>' . $i . '</option>
';
}
$pagenav .= '</select>';
return $pagenav;
}
可能有些SMARTY初学的朋友们不知道怎么用标签调用,SMARTY的优点之一就是它十分方便的调用~~我给大家写一个很简单的检签,方便初学朋友理解主要文件有三个
more.php //PHP代码页{调用模板代码}
more.html //标签模板页
tag_more.html //tag 页,用来放section循环数据的显示样式
more.html 和 tag_more.html 页是放在templates(模板文件夹)下面
如下一个标签。
这个标签是放在模板页里面的
<{ more pager=$pager catid=$catid url=more.php titlenum=20 listnum=50 table=supe_spaceitems template=tag_more.html }>下面我简单讲讲这个标签more 为我定义一个用来写PHP代码或SQL语句的代码页,它是放在smarty类库里的。这个文件的代码写个例子
$catid=$_GET["catid"];
$pager=$_GET["pager"];
$pager = ($pager ? $pager: 1);
$offset = ($pager ? ($pager - 1) * $listnum : 0);
$limit = ($listnum ? ' LIMIT ' . $offset . ',' . $listnum : '');
$titlenum = ($titlenum ? $titlenum : 30);
$showcatname = ($showcatname ? $showcatname:0);
$url.='?catid='.$catid.'&';
$orderkind=' order by itemid'; $sql='select * from '.$table.' where catid='.$catid.$orderkind.' desc'.$limit;
$result = $db->query ($sql);
$more=array();
while($rs = $db->fetch_array ($result))
{
// $rs[subject]=wordscut($rs[subject],$titlenum);
array_push($more,$rs);
}
//统计数目============================================================== $allinfonum=0;
$allpages=0;
if( $table == 'supe_spaceitems' )
{ $sql='select * from '.$table.' where catid='.$catid;
}
$result = $db->query ($sql);
$allinfonum=$db->num_rows($result);
if($allinfonum<$listnum){
$allpages=1;
}else{
$allpages=ceil($allinfonum/$listnum);
} $pagers=showpage($allinfonum,$pager,$listnum,$url);
$smarty->assign("pagers", $pagers);
$smarty->assign("more", $more);
$content=$smarty->fetch($template);
return $content;$pager为我的分页变量,代码查获的数据要分页码
$url 为分页的URL
$titlenum 定义标题长度
$table 定义去哪个数据表里查数据
$listnum 定义分页显示多少条数据
有些朋友们,不知道SMARTY的下载地方,或者英文不好的朋友们,这里给你提供一个国内下载的地方。下载后直接解压出COMM文件夹,即可。
http://www.88php.com/viewthread.php?tid=272&extra=page%3D1
这个版本比较稳定,我一直在用,如果不喜欢的朋友们也可以去它的官方网站下载~~
http://www.88php.com/more.php?catid=1本类为PHP--SMARTY爱好者提供,不足之处请指正~~分享成果~~~提供者,阿涛~~
PHP技术群30677629
function showpage ($total, $page = 1, $perpage = 20, $url = '')
{ /* $total 记录总数
$page 当前页码
$perpage 每页一共显示记录数
$url url地址
$pages 总页数/尾页数
$prepg 上一页
$nextpg 下一页
$prepgten 上十页
$nextpgten 下十页
$pagenav 变量参数
$pagepre = 3; //滚动的条数 */
global $QUERY_STRING;
$url = ($url ? $url : '?' . preg_replace ('/(.*)(&page=[0-9]?)(.*)/i', '\\1\\3', $QUERY_STRING));
// $url.="?a=1";
$pages = ceil ($total / $perpage);
$page = min ($pages, $page);
$maxpages=10;
$pagepre = 5; //滚动的条数
$prepg = $page - 1;
$nextpg = ($page == $pages ? 0 : $page + 1);
$prepgten = $page - 10;
$nextpgten = ($page == $pages ? 0 : $page + 10);
if ($total < 1)
{
return false;
}
$pagenav = '' . '总数:<b>' . $total . '</b> '; //$pagenav .= ($prepg ? '' . '<a href=\'' . $url . '&pager=1\'>|<</a> <a href=\'' . $url . '&pager=' . $prepgten . '\'>上10页</a> <a href=\'' . $url . '&pager=' . $prepg . '\'>上一页</a> ' : '|< 上一页 ');
if($prepg != 1)
{
$pagenav .= ($prepg ? '' . '<a href=\'' . $url . '&pager=1\'>首页</a> <a href=\'' . $url . '&pager=' . $prepg . '\'><<</a> ' : ' ');
}
if($maxpages>=$pages)
{
$prepg = 1;
$pgend = $pages;
}elseif(($page-$pagepre-1+$maxpages)>$pages)
{
$pgstart =$pages-$maxpages + 1;
$pgend = $pages;
}else{
$pgstart=(($page <= $pagepre)?1:($page - $pagepre));
$pgend=(($pgstart==1)?$maxpages:($pgstart + $maxpages-1));
}for($pg=$pgstart;$pg<=$pgend;$pg++)
{ //中间菜单
if($pg == $page) $pagenav .="<a class=\"p_num\" href=\"". $url ."pager=$pg\"><font class=\"pager\"><font color=\"#ff0000\" >$pg</font></font></a> ";
else $pagenav .="<a href=\"". $url ."pager=$pg\"><font class=\"pager\">$pg</font></a> ";
}
if($page != $pages)
{
$pagenav .= ($nextpg ? '' . '<a href=\'' . $url . '&pager=' . $nextpg . '\'> >></a> <a href=\'' . $url . '&pager=' . $pages . '\'>尾页</a> ' : ' >> 尾页 ');
}
$pagenav .= '' . '页次:<b><font color=red>' . $page . '</font>/' . $pages . '</b> <font class=\"pager\">转到:</font><select name=\'topage\' size=\'1\' onchange=\'window.location="' . $url . '&pager="+this.value\'>';
for ($i = 1; $i <= $pages; ++$i)
{
$selected = ($i == $page ? 'selected' : '');
$pagenav .= '' . '<option value=\'' . $i . '\' ' . $selected . '>' . $i . '</option>
';
}
$pagenav .= '</select>';
return $pagenav;
}
可能有些SMARTY初学的朋友们不知道怎么用标签调用,SMARTY的优点之一就是它十分方便的调用~~我给大家写一个很简单的检签,方便初学朋友理解主要文件有三个
more.php //PHP代码页{调用模板代码}
more.html //标签模板页
tag_more.html //tag 页,用来放section循环数据的显示样式
more.html 和 tag_more.html 页是放在templates(模板文件夹)下面
如下一个标签。
这个标签是放在模板页里面的
<{ more pager=$pager catid=$catid url=more.php titlenum=20 listnum=50 table=supe_spaceitems template=tag_more.html }>下面我简单讲讲这个标签more 为我定义一个用来写PHP代码或SQL语句的代码页,它是放在smarty类库里的。这个文件的代码写个例子
$catid=$_GET["catid"];
$pager=$_GET["pager"];
$pager = ($pager ? $pager: 1);
$offset = ($pager ? ($pager - 1) * $listnum : 0);
$limit = ($listnum ? ' LIMIT ' . $offset . ',' . $listnum : '');
$titlenum = ($titlenum ? $titlenum : 30);
$showcatname = ($showcatname ? $showcatname:0);
$url.='?catid='.$catid.'&';
$orderkind=' order by itemid'; $sql='select * from '.$table.' where catid='.$catid.$orderkind.' desc'.$limit;
$result = $db->query ($sql);
$more=array();
while($rs = $db->fetch_array ($result))
{
// $rs[subject]=wordscut($rs[subject],$titlenum);
array_push($more,$rs);
}
//统计数目============================================================== $allinfonum=0;
$allpages=0;
if( $table == 'supe_spaceitems' )
{ $sql='select * from '.$table.' where catid='.$catid;
}
$result = $db->query ($sql);
$allinfonum=$db->num_rows($result);
if($allinfonum<$listnum){
$allpages=1;
}else{
$allpages=ceil($allinfonum/$listnum);
} $pagers=showpage($allinfonum,$pager,$listnum,$url);
$smarty->assign("pagers", $pagers);
$smarty->assign("more", $more);
$content=$smarty->fetch($template);
return $content;$pager为我的分页变量,代码查获的数据要分页码
$url 为分页的URL
$titlenum 定义标题长度
$table 定义去哪个数据表里查数据
$listnum 定义分页显示多少条数据
有些朋友们,不知道SMARTY的下载地方,或者英文不好的朋友们,这里给你提供一个国内下载的地方。下载后直接解压出COMM文件夹,即可。
http://www.88php.com/viewthread.php?tid=272&extra=page%3D1
这个版本比较稳定,我一直在用,如果不喜欢的朋友们也可以去它的官方网站下载~~
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货