在网上找了一个分页类,加进自己需要的标签后,测试了一下,print_r可以打印输出,但是分配的到模板是空值,一时也没找到那出错了,请各位帮忙看看,急!
这个是修改的的分页类,pagediv.php
<?php 
/* 
//显示样式如下: 
//[1] 2 3 4 5 6 7 8 9 10 ...100 下页 尾页 
//首页 上页 1..12 13 14 15 [16] 17 18 19 20 ...100 下页 尾页 
//首页 上页 1..92 93 94 95 96 97 98 [99] 100 //使用方法: 
//$currentPage = $_GET['page']?$_GET['page']:1; 
//$pagediv = new pagediv(500, 10, 11, $currentPage, 'test.php?page='); 
//$pagediv->show(); */ 
class pagediv 

public $part1; 
public $part2; 
public $part3; 
public $part4; 
public $part5; /* 
对下面的分页显示进行分割: 
首页 上页 1..12 13 14 15 [16] 17 18 19 20 ...100 下页 尾页 
$part1 : 首页 上页 
$part2 : 1.. 
$part3 : 12 13 14 15 [16] 17 18 19 20 
$part4 : ...100 
$part5 : 下页 尾页 
*/ public $allPage; //总页数 
public $allRocords; //总记录数 
public $perPage; //每页记录数 
public $showPagesNo; //显示分页栏的总页码数 显示样式里共有11个 
public $currentPage; //当前页 
public $urlModel; //Url链接样式 public $startHidden; //出现 1... 时的页数 开始隐藏中间页 
public $endHidden; //出现 ...100 时的页数 结束隐藏中间页 public function __construct($allRocords, $perPage, $showPagesNo, $currentPage, $urlModel){ 
$this->allRocords = $allRocords; 
$this->perPage = $perPage; 
$this->showPagesNo = $showPagesNo; 
$this->currentPage = $currentPage; 
$this->urlModel = $urlModel; 
$this->allPage = $this->getAllPage(); $this->startHidden = $this->getInt(($this->showPagesNo)/2); //6 
$this->endHidden = $this->allPage - $this->startHidden; //94 
} public function getUrl($_index = ''){ 
$_current = $_index; 
if($_index == 'pre') $_current = $this->currentPage -1; 
if($_index == 'next') $_current = $this->currentPage+1; 
if($_index == '') $_current = $this->allPage; 
return $this->urlModel.$_current; 
} public function getAllPage(){ 
return $this->getInt($this->allRocords/$this->perPage); 
} public function getInt($_float){ 
$_int = $_float; 
if( $_index = strpos($_float,'.') == true ){ 
$_int = substr($_float,0,$_index); 
$_int++; 

//没有想起ceil时的候补方案 
return $_int; 
} public function getPart1(){ 
$content = '<li class="icon-01"> <a href="'.$this->getUrl(1).'">首页</a></li> <li class="icon-02"><a href="'.$this->getUrl('pre').'">上页</a> </li>'; 
if($this->currentPage <= $this->startHidden){ 
$content = ''; 

return $content; 
} public function getPart2(){ 
$content = '<li class="icon-03"> <a href="'.$this->getUrl(1).'">1</a> </li>'; 
$add = ''; 
if($this->currentPage > $this->startHidden){ 
$add = '...'; 

if($this->currentPage == 1){ 
$content = '<li class="icon-03 icon-04">[1]</li>'; 
$add = ''; 

$part2 = $content.$add; 
return $part2; 
} public function getPart3(){ 
$content = ''; 
if($this->currentPage <= $this->startHidden){ 
//[1] 2 3 4 5 6 7 8 9 10 ...100 下页 尾页 
$long = $this->showPagesNo - 2; 
for($i=0;$i<$long;$i++){ 
$j = $i+2; 
if($j == $this->currentPage){ 
$content .= '<li class="icon-03 icon-04">['.$this->currentPage.']</li>'; 
}else{ 
$content .= '<li class="icon-03"> <a href="'.$this->getUrl($j).'">'.$j.'</a> </li>'; 
} } }elseif( $this->currentPage >= $this->endHidden ){ 
//首页 上页 1..92 93 94 95 96 97 98 [99] 100 
$long = $this->showPagesNo - 2; 
$_start = $this->allPage - $long; 
for($i=0;$i<$long;$i++){ 
$j = $_start + $i; 
if($j == $this->currentPage){ 
$content .= '<li class="icon-03 icon-04">['.$this->currentPage.']</li> '; 
}else{ 
$content .= '<li class="icon-03"> <a href="'.$this->getUrl($j).'">'.$j.'</a> </li>'; 


}else{ 
//首页 上页 1..12 13 14 15 [16] 17 18 19 20 ...100 下页 尾页 
$long = $this->showPagesNo - 2; 
$offset = $this->getInt($long/2) - 1; 
$_start = $this->currentPage - $offset; 
for($i=0;$i<$long;$i++){ 
$j = $_start + $i; 
if($j == $this->currentPage){ 
$content .= '<li class="icon-03 icon-04">['.$this->currentPage.']</li> '; 
}else{ 
$content .= '<li class="icon-03"> <a href="'.$this->getUrl($j).'">'.$j.'</a> </li>'; 



$part3 = $content; 
return $part3; 
} public function getPart4(){ 
$content = '<li class="icon-03"> <a href="'.$this->getUrl().'">'.$this->allPage.'</a></li> '; 
$add = ''; 
if($this->currentPage < $this->endHidden){ 
$add = '...'; 

if($this->currentPage == $this->allPage){ 
$content = '<li class="icon-03 icon-04">['.$this->allPage.']</li>'; 
$add = ''; 

$part4 = $add.$content; 
return $part4; } public function getPart5(){ 
$content = '<li class="icon-02"> <a href="'.$this->getUrl('next').'">下页</a></li> <li class="icon-01"> <a href="'.$this->getUrl().'">尾页</a></li>'; 
if($this->currentPage >= $this->endHidden){ 
$content = ''; 

return $content; 
} public function show(){ 
//判断非法 
if(!is_numeric($this->currentPage) || $this->currentPage < 0 || $this->currentPage > $this->allPage){ 
print 'error:pageNo is flase'; 
return; 

//总页数没有达到显示分页栏的总页码数,则全部显示 
if($this->allPage < $this->showPagesNo){ 
$long = $this->allPage; 
for($i=0;$i<$long;$i++){ 
$j = $i+1; 
if($j == $this->currentPage){ 
$content .= '<li class="icon-03 icon-04">['.$this->currentPage.']</li> '; 
}else{ 
$content .= '<li class="icon-03"><a href="'.$this->getUrl($j).'">'.$j.'</a></li>'; 
} } 
print $content; 
return; 

$this->part1 = $this->getPart1(); 
$this->part2 = $this->getPart2(); 
$this->part3 = $this->getPart3(); 
$this->part4 = $this->getPart4(); 
$this->part5 = $this->getPart5(); print $this->part1.$this->part2.$this->part3.$this->part4.$this->part5; 

} ?> 
Video.php$currentPage = $_GET['page']?$_GET['page']:1; 
$pagediv = new pagediv(500, 10, 5, $currentPage, 'Video.php?page='); 
$pages=$pagediv->show(); 
$smarty->assign('pages',$pages);
$smarty->display('Video.html');
在模板上显示的时候不了。但是可以在模板打印。、
      <ul class="clk">
{$pages}
            <div class="clear"></div>
        </ul>
phpsmarty分页

解决方案 »

  1.   

    模板中是否有包含特殊的标记,smarty不识别。
      

  2.   

    分页类有问题。你可以用这个试试。<?php
    /**
     * 作者:戚银
     * 网名:诺天
     * QQ:804603662
     * 邮箱:[email protected]    [email protected]
     * 版权声明:完全开源
     * 作者声明:我把这个分页类暂时命名为史上最强大的分页类,有点夸大,不喜勿喷。
     * 作者期望:给分页类还存在一些不足之处,如果各位网友有好的意见或改进的方案,都可QQ联系作者予以讨论和交流
     */
    class Page {
    private $total; //总数量
    private $limit; //返回mysql的limit语句
    private $pageStart; //开始的数值
    private $pageStop; //结束的数值
    private $pageNumber; //显示分页数字的数量
    private $page; //当前页
    private $pageSize; //每页显示的数量
    private $pageToatl; //分页的总数量
    private $pageParam; //分页变量
    private $uri; //URL参数
    /**
     * 分页设置样式 不区分大小写
     * %pageToatl%  //总页数
     * %page% //当前页
     * %pageSize%  //当前页显示数据条数
     * %pageStart% //本页起始条数
     * %pageStop% //本页结束条数
     * %total% //总数据条数
     * %first% //首页
     * %ending% //尾页
     * %up% //上一页
     * %down% //下一页
     * %F% //起始页
     * %E% //结束页
     * %omitFA% //前省略加跳转
     * %omitEA% //后省略加跳转
     * %omitF% //前省略
     * %omitE% //后省略
     * %numberF% //固定数量的数字分页
     * %numberD% //左右对等的数字分页
     * %input% //跳转输入框
     * %GoTo% //跳转按钮
     */
    private $pageType = '<span class="pageher">第%page%页/共%pageToatl%页</span>%first%%up%%F%%omitFA%%numberF%%omitEA%%E%%down%%ending%';
    //显示值设置
    private $pageShow = array('first'=>'首页','ending'=>'尾页','up'=>'上一页','down'=>'下一页','GoTo'=>'GO'); /**
     * 初始化数据,构造方法
     * @access public
     * @param int $total  数据总数量
     * @param int $pageSize  每页显示条数
     * @param int $pageNumber  分页数字显示数量(使用%numberF%和使用%numberD%会有不同的效果)
     * @param string $pageParam 分页变量
     * @return void
     */
    public function __construct($total,$pageSize=10,$pageNumber=5,$pageParam='p'){
    $this->total = $total<0?0:$total;
    $this->pageSize = $pageSize<0?0:$pageSize;
    $this->pageNumber = $pageNumber<0?0:$pageNumber;
    $this->pageParam = $pageParam;
    $this->calculate();
    } /**
     * 显示分页
     * @access public 
     * @return string HTML分页字符串
     */
    public function pageShow(){
    $this->uri();
    if($this->pageToatl>1){
    if($this->page == 1){
    $first = '<span class="disabled">'.$this->pageShow['first'].'</span>';
    $up = '<span class="disabled">'.$this->pageShow['up'].'</span>';
    }else{
    $first = '<a href="'.$this->uri.'&'.$this->pageParam.'=1">'.$this->pageShow['first'].'</a>';
    $up = '<a href="'.$this->uri.'&'.$this->pageParam.'='.($this->page-1).'">'.$this->pageShow['up'].'</a>';
    }
    if($this->page >= $this->pageToatl){
    $ending = '<span class="disabled">'.$this->pageShow['ending'].'</span>';
    $down = '<span class="disabled">'.$this->pageShow['down'].'</span>';
    }else{
    $ending = '<a href="'.$this->uri.'&'.$this->pageParam.'='.$this->pageToatl.'">'.$this->pageShow['ending'].'</a>';
    $down = '<a href="'.$this->uri.'&'.$this->pageParam.'='.($this->page+1).'">'.$this->pageShow['down'].'</a>';
    }
    $input  = '<input type="text" value="'.$this->page.'" onkeydown="javascript: if(event.keyCode==13){var value = parseInt(this.value); var page=(value>'.$this->pageToatl.') ? '.$this->pageToatl.' : value;  location=\''.$this->uri.'&'.$this->pageParam.'=\'+page+\'\'; return false;}">';
    $GoTo = '<button onclick="javascript:var value=parseInt(this.previousSibling.value); var page=(value>'.$this->pageToatl.') ? '.$this->pageToatl.' : value;  location=\''.$this->uri.'&'.$this->pageParam.'=\'+page+\'\'; return false;">'.$this->pageShow['GoTo'].'</button>';
    }else{
    $first = '';$up ='';$ending = '';$down = '';$input = '';$GoTo = '';
    }
    $this->numberF();
    return str_ireplace(array('%pageToatl%','%page%','%pageSize%','%pageStart%','%pageStop%','%total%','%first%','%ending%','%up%','%down%','%input%','%GoTo%'),array($this->pageToatl,$this->page,$this->pageStop-$this->pageStart,$this->pageStart,$this->pageStop,$this->total,$first,$ending,$up,$down,$input,$GoTo),$this->pageType);
    }
    /**
     * 数字分页
     */
    private function numberF(){
    $pageF = stripos($this->pageType,'%numberF%');
    $pageD = stripos($this->pageType,'%numberD%');
    $numberF = '';$numberD = '';$F = '';$E ='';$omitF = '';$omitFA = '';$omitE = '';$omitEA = '';
    if($pageF!==false || $pageD!==false){
    if($pageF!==false){
    $number = $this->pageNumber%2==0?$this->pageNumber/2:($this->pageNumber+1)/2;
    $DStart = $this->page - $number<0?$this->page - $number-1:0;
    if($this->page+$number-$DStart > $this->pageToatl){
    $DStop = ($this->page+$number-$DStart) - $this->pageToatl;
    $forStop = $this->pageToatl+1;
    }else{
    $DStop = 0;
    $forStop = $this->page+$number-$DStart+1;
    }
    $forStart = $this->page-$number-$DStop<1?1:$this->page-$number-$DStop;
    for($i=$forStart;$i<$forStop;++$i){
    if($i==$this->page){
    $numberF .= '<span class="current">'.$i.'</span>';
    }else{
    $numberF .= '<a href="'.$this->uri.'&'.$this->pageParam.'='.$i.'">'.$i.'</a>';
    }
    }
    }
    if($pageD!==false){
    $number = $this->pageNumber;
    $forStart = $this->page-$number>0?$this->page-$number:1;
    $forStop = $this->page+$number>$this->pageToatl?$this->pageToatl+1:$this->page+$number+1;
    for($i=$forStart;$i<$this->page;++$i){
    $numberD .= '<a href="'.$this->uri.'&'.$this->pageParam.'='.$i.'">'.$i.'</a>';
    }
    $numberD .= '<span class="current">'.$this->page.'</span>';
    $start = $this->page+1;
    for($i=$start;$i<$forStop;++$i){
    $numberD .= '<a href="'.$this->uri.'&'.$this->pageParam.'='.$i.'">'.$i.'</a>';
    }
    }
    $F = $forStart>1?'<a href="'.$this->uri.'&'.$this->pageParam.'=1">1</a>':'';
    $E = $forStop<$this->pageToatl+1?'<a href="'.$this->uri.'&'.$this->pageParam.'='.$this->pageToatl.'">'.$this->pageToatl.'</a>':'';
    if($forStart>2){
    $omitF = '<span  class="omit">…</span>';
    $startA = $this->page-$number<1?1:$this->page-$number;
    $omitFA = '<a  class="omit" href="'.$this->uri.'&'.$this->pageParam.'='.$startA.'">…</a>';
    }
    if($forStop<$this->pageToatl){
    $omitE = '<span class="omit">…</span>';
    $stopA = $this->page+$number>$this->pageToatl?$this->pageToatl:$this->page+$number;
    $omitEA = '<a  class="omit" href="'.$this->uri.'&'.$this->pageParam.'='.$stopA.'">…</a>';
    }
    }
    $this->pageType = str_ireplace(array('%F%','%E%','%omitFA%','%omitEA%','%omitF%','%omitE%','%numberF%','%numberD%'),array($F,$E,$omitFA,$omitEA,$omitF,$omitE,$numberF,$numberD),$this->pageType);
    } /**
     * 处理url的方法
     * @access public
     * @param array   $url  保持URL直对关系数组
     * @return string  过滤后的url尾参数
     */
    private function uri(){
    $url = $_SERVER["REQUEST_URI"];
    $par = parse_url($url);
    if (isset($par['query'])) {
    parse_str($par['query'],$query);
    if(!is_array($this->uri)){
    $this->uri = array();
    }
    array_merge($query,$this->uri);
    unset($query[$this->pageParam]);
    while($key = array_search('',$query)){
    unset($query[$key]);
    }
    $this->uri = $par['path'].'?'.http_build_query($query);
    }else{
    $this->uri = $par['path'].'?';
    }
    } /**
     * 设置limit方法及计算起始条数和结束条数
     */
    private function calculate(){
    $this->pageToatl = ceil($this->total/$this->pageSize);
    $this->page = intval($_GET[$this->pageParam]);
    $this->page = $this->page>=1?$this->page>$this->pageToatl?$this->pageToatl:$this->page:1;
    $this->pageStart = ($this->page-1)*$this->pageSize;
    $this->pageStop = $this->pageStart+$this->pageSize;
    $this->pageStop = $this->pageStop>$this->total?$this->total:$this->pageStop;
    $this->limit = $this->pageStart.','.$this->pageStop;
    } /**
     * 设置过滤器
     */
    public function __set($name,$value){
    switch($name){
    case 'pageType':
    case 'uri':
    $this->$name = $value;
    return;
    case 'pageShow':
    if(is_array($value)){
    $this->pageShow = array_merge($this->pageShow,$value);
    }
    return;
    }
    } /**
     * 取值过滤器
     */
    public function __get($name){
    switch($name){
    case 'limit':
    case 'pageStart':
    case 'pageStop':
    return $this->$name;
    default:
    return;
    }
    }
    }