`

zend framework 分页

阅读更多


在models下定义Page.php
<?php 

/**
 * 分页工具类
 * @author xxoo
 *
 */
class Page{

private $_navigationItemCount = 10;                 //导航栏显示导航总页数
    private $_pageSize = null;                      //每页项目数
    private $_align = "right";                      //导航栏显示位置
    private $_itemCount = null;                     //总项目数
    private $_pageCount = null;                     //总页数
    private $_currentPage = null;                   //当前页
    private $_front = null;                         //前端控制器
    private $_PageParaName = "page";                //页面参数名称
    private $_firstPageString = "|<<&nbsp;&nbsp;";  //导航栏中第一页显示的字符
    private $_nextPageString = "&nbsp;>>";          //导航栏中前一页显示的字符
    private $_previousPageString = "<<&nbsp;&nbsp;";//导航栏中后一页显示的字符
    private $_lastPageString = "&nbsp;&nbsp;>>|";   //导航栏中最后一页显示的字符
    private $_splitString = "&nbsp;&nbsp;";                  //页数字间的间隔符 /
    public function __construct($itemCount, $pageSize)
    {
        if(!is_numeric($itemCount) || (!is_numeric($pageSize)))throw new Exception("暂无相关数据");
        $this->_itemCount = $itemCount;
        $this->_pageSize = $pageSize;
        $this->_front = Zend_Controller_Front::getInstance();
        $this->_pageCount = ceil($itemCount/$pageSize);            //总页数
        $page = $this->_front->getRequest()->getParam($this->_PageParaName);
        if(empty($page) || (!is_numeric($page)))    //为空或不是数字,设置当前页为1
        {
            $this->_currentPage = 1;
        }
        else
        {
            if($page < 1)
                $page = 1;
            if($page > $this->_pageCount)
                $page = $this->_pageCount;
            $this->_currentPage = $page;
        }
    }
    /**
     * 返回当前页
     * @param int 当前页
     */
    public function getCurrentPage()
    {
        return $this->_currentPage;
    }
    /**
     * 返回导航栏目
     * @return string 导航html                class="PageNavigation" 
     */
    public function getNavigation()
    {
        $navigation = '<div style="text-align:'.$this->_align.'">';
        $pageCote = ceil($this->_currentPage / ($this->_navigationItemCount - 1)) - 1;    //当前页处于第几栏分页
        $pageCoteCount = ceil($this->_pageCount / ($this->_navigationItemCount - 1));    //总分页栏
        $pageStart = $pageCote * ($this->_navigationItemCount -1) + 1;                    //分页栏中起始页
        $pageEnd = $pageStart + $this->_navigationItemCount - 1;                        //分页栏中终止页
        if($this->_pageCount < $pageEnd)
        {
            $pageEnd = $this->_pageCount;
        }
            $navigation .= '总共:'.$this->_itemCount.'条数据,共'.$this->_pageCount.'页&nbsp;&nbsp;';
        if($pageCote > 0) //首页导航
        {
            $navigation .= '<a href="'.$this->createHref(1).'">'.$this->_firstPageString.'</a>';
        }
        if($this->_currentPage != 1)//上一页导航
        {
            $navigation .= '<a href="'.$this->createHref($this->_currentPage-1);
            $navigation .= '">'.$this->_previousPageString.'</a>';
        }
        while ($pageStart <= $pageEnd)//构造数字导航区
        {
            if($pageStart == $this->_currentPage)
            {
                $navigation .= '<strong>'.$pageStart.'</strong>'.$this->_splitString;
            }
            else
            {
                $navigation .= '<a href="'.$this->createHref($pageStart).'">'.$pageStart.'</a>'.$this->_splitString;
            }
            $pageStart++;
        }
        if($this->_currentPage != $this->_pageCount)    //下一页导航
        {
            $navigation .= ' <a href="'.$this->createHref($this->_currentPage+1).'">'.$this->_nextPageString.'</a>';
        }
        if($pageCote < $pageCoteCount-1)                //未页导航
        {
            $navigation .= '<a href="'.$this->createHref($this->_pageCount).'">'.$this->_lastPageString.'</a>';
        }
          //添加直接导航框
        $navigation .= '&nbsp;&nbsp;<select onchange="window.location=\' '.$this->createHref().'\'+this.options[this.selectedIndex].value;">';
        for ($i=1;$i<=$this->_pageCount;$i++){
                if ($this->getCurrentPage()==$i){
                        $selected = "selected";
                }
                else {
                        $selected = "";
                }
                $navigation .= '<option value='.$i.' '.$selected.'>'.$i.'</option>';
        }
        $navigation .= '</select>';
        $navigation .= '</div>';
        return $navigation;
    }
    /**
     * 取得导航栏显示导航总页数
     * @return int 导航栏显示导航总页数
     */
    public function getNavigationItemCount()
    {
        return $this->_navigationItemCount;
    }
    /**
     * 设置导航栏显示导航总页数
     * @param int $navigationCount:导航栏显示导航总页数
     */
    public function setNavigationItemCoun($navigationCount)
    {
        if(is_numeric($navigationCount))
        {
            $this->_navigationItemCount = $navigationCount;
        }
    }
    /**
     * 设置首页显示字符
     * @param string $firstPageString 首页显示字符
     */
    public function setFirstPageString($firstPageString)
    {
        $this->_firstPageString = $firstPageString;
    }
    /**
     * 设置上一页导航显示字符
     * @param string $previousPageString:上一页显示字符
     */
    public function setPreviousPageString($previousPageString)
    {
        $this->_previousPageString = $previousPageString;
    }
    /**
     * 设置下一页导航显示字符
     * @param string $nextPageString:下一页显示字符
     */
    public function setNextPageString($nextPageString)
    {
        $this->_nextPageString = $nextPageString;
    }
    /**
     * 设置未页导航显示字符
     * @param string $nextPageString:未页显示字符
     */
    public function setLastPageString($lastPageString)
    {
        $this->_lastPageString = $lastPageString;
    }
    /**
     * 设置导航字符显示位置
     * @param string $align:导航位置
     */
    public function setAlign($align)
    {
        $align = strtolower($align);
        if($align == "center")
        {
            $this->_align = "center";
        }elseif($align == "right")
        {
            $this->_align = "right";
        }else
        {
            $this->_align = "left";
        }
    }
    /**
     * 设置页面参数名称
     * @param string $pageParamName:页面参数名称
     */
    public function setPageParamName($pageParamName)
    {
        $this->_PageParaName = $pageParamName;
    }
    /**
     * 获取页面参数名称
     * @return string 页面参数名称
     */
    public function getPageParamName()
    {
        return $this->_PageParaName;
    }
    /**
     * 生成导航链接地址
     * @param int $targetPage:导航页
     * @return string 链接目标地址
     */
    private function createHref($targetPage = null)
    {
        $params = $this->_front->getRequest()->getParams();
        $module = $params["module"];
        $controller = $params["controller"];
        $action = $params["action"];
        $targetUrl = $this->_front->getBaseUrl()."/$module/$controller/$action";
        foreach ($params as $key => $value)
        {
            if($key != "controller" && $key != "module" && $key != "action" && $key != $this->_PageParaName)
            {
                $targetUrl .= "/$key/$value";
            }
        }
        if(isset($targetPage))                //指定目标页
            $targetUrl .= "/$this->_PageParaName/$targetPage";
        else
            $targetUrl .= "/$this->_PageParaName/";
        return $targetUrl;
    }
}
?>

-------------------------------------------
controllers里面
require_once APPLICATION_PATH.'/models/Page.php';
	//得到用户列表 带查询的分页列表
	public function userlistsAction(){
		try {
			$user = new User();
			//查询参数加入
		 	$where = " 1=1 ";
		 	$name = $this->_request->getParam('name');
		 	$mail = $this->_request->getParam('mail');
		 	$status = $this->_request->getParam('status');
		 	if($name != ""){
		 		$where.=" and name like '%".$name."%' ";
		 		$this->view->searchName = $name;//设置隐藏域 分页使用
		 	}
		 	if($mail != ""){
		 		$where.=" and email like '%".$mail."%' ";
		 		$this->view->searchMail = $mail;
		 	}
		 		
		 	if($status != ""){
		 		$where.=" and status = '".$status."' ";
		 		$this->view->searchStatus = $status;
		 	}
			$rows = $user->fetchAll($where)->count();
			//$rows = $user->getAdapter()->fetchOne("select count(*) from ut_user");
			//$rows = $user->fetchAll()->count(); //查询记录总数
			$rowsPerPage = 20;
			$curPage = 1;
			if($this->_request->getParam('page'))
			{
				$curPage = $this->_request->getParam('page');
			}
			$this->view->userLists = $user->fetchAll($where,null,$rowsPerPage,($curPage-1)*$rowsPerPage)->toArray();
			$pager = new Page($rows,$rowsPerPage);
			$this->view->pagebar = $pager->getNavigation();
		} catch (Exception $e) {
			echo $e;
		}
	
		$this->render('userlists');
	}
-------------
views
 <?php 
      echo $this->pagebar;
 ?>
查询的参数放到隐藏域里面,点击下一页上一页可将参数传到后台

  • 大小: 869 Bytes
分享到:
评论

相关推荐

    Zend Framework分页类用法详解

    【Zend Framework分页类用法详解】 在Web开发中,分页是常见的一种功能,用于处理大量数据的显示,提高用户体验。在使用Zend Framework进行PHP开发时,我们可以自定义分页类来实现这一功能。本篇文章将深入讲解如何...

    非常好用的Zend Framework分页类

    本文详细介绍了如何在Zend Framework中实现和使用一个高效的分页类。Zend Framework是PHP语言开发的一个开源框架,其设计宗旨是推动Web 2.0和AJAX应用的快速发展。而分页功能是Web开发中经常用到的一个重要功能,它...

    zend framework 分页类

    在 Zend Framework 中,分页是实现大型数据集检索时非常重要的功能,它允许用户逐步浏览结果,而不是一次性加载所有数据。`Pagination` 类是 Zend Framework 提供的一个实用工具,用于帮助开发者创建简单而高效的...

    zendframework 分页实现

    本篇文章将深入探讨如何在Zend Framework中利用`Zend_Paginator`组件实现高效的数据库查询分页。 `Zend_Paginator`是Zend Framework的一个核心组件,它的主要功能是帮助开发者在大量数据中创建用户友好的分页界面。...

    zend framework分页

    刚学Zend Framework 感叹其强大的同时却发现其在Web开发中常用到的如分页,上传,字符串处理等等却没有实现,今天小试牛刀,给Zend Framework扩展了一个分页类。

    zendframework留言分页

    在本项目中,我们主要探讨如何使用Zend Framework实现一个基于MySQL数据库的留言系统的分页功能。 Zend Framework是一款流行的PHP开发框架,它提供了丰富的组件和工具,使得开发过程更加高效和规范。下面我们将深入...

    zendframework 增加,删除,更新,图片上传,分页

    zend framework简单的操作,增加,删除,更新,图片上传,分页

    zend framework2例子album 完整能运行

    Zend Framework 2(ZF2)是一个面向对象的、模块化且高性能的PHP开发框架,用于构建Web应用程序和服务。本示例“album”是ZF2官方提供的一个基础教程项目,旨在帮助开发者快速理解和学习如何在ZF2中进行实际的开发...

    ZendFramework-1.7.2帮助文档

    **Zend Framework 1.7.2 帮助文档** Zend Framework 是一个开源、全面的 PHP 框架,用于构建可扩展且高效的 Web 应用程序。版本 1.7.2 是该框架的一个重要里程碑,包含了丰富的特性和改进。这个帮助文档以 HTML ...

    Zend framework数据库简单操作

    在 Zend Framework 中,数据库操作主要通过 `Zend_Db` 组件来实现。`Zend_Db` 提供了对多种数据库系统的支持,如 MySQL、PostgreSQL、SQLite 等。开发者可以使用它来执行 SQL 查询,进行数据的读取、插入、更新和...

    zend framework中英文手册合集

    **Zend Framework 中英文手册合集** Zend Framework 是一个基于 PHP 的开源框架,旨在加速 Web 应用程序的开发。这个框架提供了许多组件,涵盖了从数据库交互到服务端验证的多种功能,让开发者能够构建可扩展且高效...

    ZendFramework-1.0.2.zip

    1. **组件化设计**:Zend Framework遵循MVC(Model-View-Controller)设计模式,各个组件之间松耦合,如Zend_Db用于数据库操作,Zend_View处理视图,Zend_Controller负责控制器逻辑,这种组件化设计使得开发者可以按...

    php zendframework 常用代码

    ### PHP ZendFramework 常用代码知识点解析 #### 一、数据库连接配置 在PHP与Zend Framework中,数据库连接是一项非常基础且重要的功能。通过适当的配置,我们可以轻松地与数据库进行交互。 **配置示例:** ```...

    php100-----zendframework.rar

    在学习过程中,可以参考压缩包内的“zendframework”文件,这可能是Zend Framework的源码或示例项目,通过实际操作和代码阅读,能更直观地理解框架的工作原理和应用技巧。 总的来说,PHP100与Zend Framework的结合...

    Zend Framework教程之视图组件Zend_View用法详解

    对于更复杂的视图逻辑,如导航、分页和JSON响应,`Zend_View`提供了相应的助手类,如`Navigation`助手处理菜单和站点地图,`PaginationControl`用于分页显示,而`Json`助手则方便地生成JSON响应,适用于AJAX请求。...

    zend-framework-tutorial

    这个教程旨在帮助开发者更好地理解和掌握 Zend Framework 的核心概念、组件以及最佳实践。 【描述】"PHP zend-framework 实例指南" 提供了一个详细的学习路径,让初学者和有一定经验的开发者都能从中受益。由于已经...

Global site tag (gtag.js) - Google Analytics