smarty暂无头绪做分页、谁给点建议噻

解决方案 »

  1.   

    smarty只是用来表现的,真正的分页逻辑还是要靠php处理一下。
    进我的qq群 10978202, 我教你~~
      

  2.   

    重点是SQL limit 这个函数!
      

  3.   

    smarty只是模板,要分布还是需要用php
      

  4.   

    用smarty的话,可以下一个分页类,在php页面中调用这个类,传到前台页面中就可以显示出来了
      

  5.   

    下面主要说一下数据库数据的分页
    首先我们要明白见个量
    a、页面上要显示的链接数$links(我们这里讨论的不是只有上一页和下一页的情形,我们讨论百度图片中的分页效果)
    b、每一页要显示的记录数$page_messages即一页中显示的数据的多少
    c、当前的页码$page
    d、数据库中总的记录数(不是必要,但是为保证生成分页条正确,我们也应该考虑)
    有了上面的四个量我们就可以通过他们得出分页条的开始页码和结束页码,以及
    select * from tables where fields=value limit offset,numbers中的offset和numbers
    其中offset=($page-1)*$page_messages
    numbers=$page_messages其次,我们要明白在点击分页条中的链接时我们应该将相应的页码传递到后台去
    即$page传递PHP文件,通过它来动态的生成offset,重新从数据中读取数据最后,在模板文件中或者直接在HTML中通过循环控制语句,将数据显示出来
      

  6.   

    主要还是mysql的limit起作用吧?或者是oracle的rownum
      

  7.   

    !分页的原理是什么
    这个只要你想明白应该就很容易懂
    看看PHP100的教程貌似有这个的!!!
      

  8.   

    去phpclasses.org下载一个分页类调用就是了
      

  9.   

    去我的博客看下,有详细的分页方法,改改就能用
    http://sameveryday.blog.163.com/blog/static/1780723372011014102152413/
      

  10.   

    <?php
    /**
     * page类
     * author:yu
     * 时间:2011-05-07
     */
    class Pager {
        /**
        * 记录总数
        */
        var $total;
        /**
        * 每一页显示的记录数
        */
        var $pageSize;
        /**
        * 当前页码
        */
        var $currentPage;
        /**
        * 记录偏移量
        */
        var $offset;
        /**
        * 总页数
        */
        var $pageTotal;
        /**
        * 页码偏移量
        */
        var $numberOffset = 5;
        /**
        *页面请求参数
        */
        var $request = "";
       
        /**
        *Fn: Pager
        *功能:构造函数
        */
        public function __construct ($total, $pageSize, $currentPage, $request = "") {
            $this->total = $total;
            $this->pageSize = $pageSize;
            $this->pageOffset();
            $this->pageTotal();
            $this->currentPage($currentPage);
            $this->request = $request;
        }
       
        /**
        *Fn: pageOffset
        *功能:数据库记录偏移量
        */
        public function pageOffset() {
            return $this->offset = $this->pageSize * ($this->currentPage - 1);
        }
      
        /**
        *Fn: pageTotal
        *功能:计算总页数
        */
        public function pageTotal() {
            return $this->pageTotal = ceil($this->total / $this->pageSize);
        }
      
        /**
        *Fn: currentPage
        *功能:设置页数
        */
        public function currentPage($currentPage) {
            if (isset($currentPage)) {
                $this->currentPage = intval($currentPage);
            } else {
                $this->currentPage = 1;
            }
            return $this->currentPage;
        }
       
        /**
        *Fn: nextPage
        *功能:跳转到下一页
        */
        public function nextPage() {
            /**
            *显示记录数
            */
            $link = "共{$this->total}条&nbsp;";
          
            /**
            *页码步长
            */
            $stepPage = $this->currentPage ? ceil($this->currentPage / $this->numberOffset) : 1;
          
            /**
            *数字页码设定
            */
            $numberPage = ($this->pageTotal > $this->numberOffset) ? $this->numberOffset : $this->pageTotal;
          
            /**
            *只有一页
            */
            if ($this->total <= $this->pageSize) {
                $link .= "[首页]|[末页]";
            } else {
                /**
                *总数和当前页
                */
                $link .= "第{$this->currentPage}/{$this->pageTotal}页&nbsp;";
              
                /**
                *首页
                */
                $link .= "<a title='首页' href=?pageNo=1{$this->request}>[首页]</a>&nbsp;";
              
                /**
                *上一列
                */
                if ($stepPage > 1) {
                    $lastIndex = ($stepPage - 1) * $this->numberOffset;
                    $link .= "<a title='上一列' href=?pageNo={$lastIndex}{$this->request}>[<<]</a>";
                }
                /**
                *上一页
                */
                if ($this->currentPage > 1) {
                    $prePage = $this->currentPage - 1;
                    $link .="<a title='上一页' href=?pageNo={$prePage}{$this->request}>[<]</a>";
                }
              
                /**
                *数字页码
                */
                $i = ($stepPage - 1) * $this->numberOffset;
              
                for ($j = $i; $j < ($i + $numberPage) && $j < $this->pageTotal; $j++) {
                    $newPage = $j + 1;
                    if ($this->currentPage == $j + 1) {
                        $link .= "<b>[" . ($j + 1) . "]</b>";
                    } else {
                        $link .= "<a href=?pageNo={$newPage}{$this->request}>[" . ($j+1) . "]</a>";
                    }
                }
                /**
                *下一页
                */
                if ($this->currentPage < $this->pageTotal){
                    $nextPage = $this->currentPage + 1;
                    $link .= "<a title=下一页 href=?pageNo={$nextPage}{$this->request}>[>]</a>";
                }
              
                /**
                *下一列
                */
                if ($stepPage < $this->total) {
                    $nextPage = $stepPage * ($this->numberOffset + 1);
                    if ($nextPage < $this->pageTotal) {
                        $link .= "<a title=下一列 href=?pageNo={$nextpre}{$this->request}>[>>]</a>";
                    }
                }
                /**
                *末页
                */
                if ($this->currentPage < $this->pageTotal) {
                    $link .= "..<a title=末页 href=?pageNo={$this->pageTotal}{$this->request}>[末页]</a>";
                }
              
            }
            return $link;
        }
    }
    ?>
    自己写的一个PAGE类。传入参数,返回$link,      $smarty->assgin('page',$link);{$page}