天天看点

SMARTY分页详解,希望听到掌声!!

使用SMARTY进行分页遇到问题的人们,将从这里学到如何更好的在SMARTY中进行分页....首先必需说明的是:这篇教程是我从别的教程改过来的,所以不能说是完全原创,但我把它说明的更加详细,以及提供了完备的示例..你将很清楚的理解里的每个变量的作用及其使用方法....希望这篇文字对对你产生帮助....如果,下面的文字真的对你产生了帮助,别忘了"呱唧呱唧"(鼓掌哦)!!!

<?php

require_once('include/common.inc.php');//这里是个接口common.inc.php里面包函了一些常用到的函数类库以及SMARTY

include_once('header.php');//调用头部信息,SESSION的信息全都保存在这里,这样做的好处是几乎所有的页面都不需要在开头输入session_start();

$smarty = new Smarty_Calvin;//调用这个对象

$smarty->caching = false;//不使用缓存

$swe = "SET NAMES gb2312;";//如果是使用MYSQL5的数据库的话,这样做是非常必要的。要不然极易出现乱码

  mysql_query($swe);

  //下面是数据库的关联查找,将得到数据库中的记录

  $sqle = "SELECT calvin.did,calvin.title,calvin.voidbulk,calvin.databulk,

                  calvin.place,calvin.price,calvin.line,calvin.explan,

                  calvin.identify,

                  idcof_extend.identify,idcof_extend.pid,idcof_extend.pid,idcof_extend.start,idcof_extend.end,idcof_extend.taxis

          FROM    calvin,idcof_extend

          WHERE   calvin.identify = idcof_extend.identify

          AND     calvin.did = idcof_extend.pid

          ORDER BY  idcof_extend.taxis DESC";

  $resulte = mysql_query($sqle) or die(mysql_error());

  $ie= mysql_num_rows($resulte);//得到结果集的数量

   //把结果集存到SMARTY可以用的数组中

   while(($rowe=mysql_fetch_array($resulte)) && $ie > 0)

   {

      $arraye[] = array("dide"=>$rowe["did"],"titlee"=>$rowe["title"],"voidbulke"=>$rowe['voidbulk'],"databulke"=>$rowe['databulk'],

                       "placee"=>$rowe['place'],"linee"=>$rowe['line'],"pricee"=>$rowe["price"],"explane"=>cutstr($rowe["explan"],180));//cutstr这个函数是自定义的,从COMMON。INC。PHP而来

      $ie--;

   }

   $smarty->assign('arraye',$arraye);//把数组指向模板

//下面的部分是本教程的重点。

   // get_template_vars返回一个指定的已赋值的模板变量的值

$smartyArr = $smarty->get_template_vars();

        //print_R($smartyArr);

        //记录总数,每页显示记录条数,总页数

        $pager_Total = count($smartyArr);//总记录数

        //echo $pager_Total;

        $pager_Size = 10;//设定每页显示的记录数

        $pager_Number = ceil($pager_Total/$pager_Size);//得到总页数,如果有小时就进一步取整

        $pager_URL = "dummyhost.php?action=View";

        //获得当前页的页数,从REQUEST获得

        if(isset($_GET['pager_PageID'])&& !empty($_GET['pager_PageID'])){

            $pager_PageID = intval($_GET['pager_PageID']);

        }else{

            //如果是第一次访问,则设定当前页为第一页

            $pager_PageID = 1;

        }         

        //每页的起,始记录数

        //如果当前页是第一页,则记录是从第0条记录开始的

        if ($pager_PageID == 1 ) {

            $pager_StartNum = 0;

        //如果当前页不是第一页,则记录是从当前的页数减去1乘以每页的显示记录数开始的   

        } else {

             $pager_StartNum = ($pager_PageID -1) * $pager_Size;

        }   

        //当前页的结束记录数是起始记录数加上每页的显示记录数

        $pager_EndNum = $pager_StartNum + $pager_Size;

        //如果当前页是第一页,且总页数大于1

        if ($pager_PageID == 1 && $pager_Number>1) {

            //第一页

            $pager_Links = "上一页 | <a href=".$pager_URL." target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" &pager_PageID=".($pager_PageID+1).">下一页</a>";

        //否则如果当前页是最后一页,且总页数大于1   

        } elseif($pager_PageID == $pager_Number && $pager_Number>1) {

            //最后一页

             $pager_Links = "<a href=".$pager_URL." target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" &pager_PageID=".($pager_PageID-1).">上一页</a> | 下一页";

        //否则如果当前页不是第一页,且当前页小于等于最后一页    

        } elseif ($pager_PageID > 1 && $pager_PageID <= $pager_Number) {

            //中间

             $pager_Links = "<a href=".$pager_URL." target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" &pager_PageID=".($pager_PageID-1).">上一页</a> | <a href=".$pager_URL." target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" &pager_PageID=".($pager_PageID+1).">下一页</a>";

        //否则

        } else {

             $pager_Links = "上一页 | 下一页";

        }

        $smarty->assign('search','dummyhost_search.php'); 

        include_once('dummyhost_ad.php');

        $smarty->assign('pager_Total',$pager_Total);       

        $smarty->assign('pager_StartNum',$pager_StartNum);

        $smarty->assign('pager_EndNum',$pager_EndNum);

        $smarty->assign('pager_Links',$pager_Links);

        $smarty->display("dummyhost.tpl");      

        include_once('footer.php');

?>