php+mysql+smarty 分页

<?php
	 
 /////////////////////////////////分页///////////////////////////////////////////////////
//////////////////////////////// 分页   /////////////////////////////////////////////////// 
	include '../newconfig.php';
	$page=isset($_GET['page'])?intval($_GET['page']):1;    //句就是获取页面中的page的值,假如不存在page,那么页数就是1。 
	$total_columns = $DB->count_records_select("course",'',null,"COUNT(fullname)");//返回受影响行数
	$num = 5; //每页显示行数
	$pagecount = ceil($total_columns/$num);  //总页数	 
	$offset =($page-1)*$num; //获取limit的第一个参数的值
	$list = $DB->get_records_sql("select course.fullname, expand.`validday` ,expand.paytime,expand.salemoney,shop.`name`
from `mdl_course` as course 
left join `mdl_course_expand` as expand on course.`id`=expand.`courseid`
left join `mdl_shop` as shop on expand.`shopid`=shop.`id`",null,$offset,$num); 
	 $list = (object)$list;
	 $pagenum = array();
	 	 	 
	 for($i=1;$i<$pagecount;$i++)
	 {
	 	$pagenum[$i]=$pagecount-$i;
	 }
	 

	$smarty->assign("pagenum",$pagenum); 
	$smarty->assign("list",$list);
	$smarty->display("html/my_babita_student.html");
?>		 

 下面是html部分关键代码:

{section name=loop loop=$pagenum } 
<a href="my_babita_student.php?page={$pagenum[loop]}">{$pagenum[loop]}</a>
{/section}

这三行代码,使用了smarty里面的section循环显示分页的页码数,要点就是领悟section循环。

 

 

这些代码里面有一个bug就是页面分页显示页码是颠倒的:1,3,2.(这里假设3页),这个原因是在为$pagenum数组赋值的时候是从大到小赋值的,所以只要把得到的数组排序即可~。


这里是冒泡排序把序列颠倒过来:

 

 for($i=1;$i<$pagecount;$i++)
	 {
	 	$pagenum[$i]=$pagecount-$i;
	 }
	 
	 for ($j=0;$j<count($pagenum);$j++)
	 {
	 	for($k=$j+1;$k<count($pagenum);$k++)
	 	{
	 		$temp=0;
	 		if($pagenum[$j]>$pagenum[$k])
	 		{
	 			$temp = $pagenum[$j];
	 			$pagenum[$j] = $pagenum[$k];
	 			$pagenum[$k] = $temp;	 	
	 		}
	 	}
	 }

 

 


posted @ 2011-11-18 17:45  johnsneakers  阅读(763)  评论(0编辑  收藏  举报