`
xieye
  • 浏览: 830953 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

php的zf1框架的db类以及分页组件使用

    博客分类:
  • PHP
阅读更多
首先,用composer安装zf1的部分组件
"require": {
        "zf1/zend-db":"1.12.11",
        "zf1/zend-paginator":"1.12.11"
    }


注意,与另外两个分页组件比较看,zf1的分页组件是最简单 的,因为它智能的判断了总数!

建表:
CREATE TABLE `test_databases` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `db_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '库名',
  `user_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '测试用户id',
  `created_at` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',
  `updated_at` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '修改时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB


请自行插入一百条数据。

程序1.php如下:
<?php
require __DIR__ . "/../vendor/autoload.php";
$params = array ('host'     => '127.0.0.1',
		'username' => 'root',
		'password' => 'root',
		'dbname'   => 'test1',
		'charset'  => 'utf8mb4',
		
);

$page=1;
if (isset($_GET['page']))
	$page = intval($_GET['page']);
if ($page<1) {
	$page=1;
}

$db = Zend_Db::factory('PDO_MYSQL', $params);

/**
 * 构造基础查询,每个查询该函数的内容都不一样,
 * 用函数的好处是 : 查询代码不重复。
 */
$select = $db->select();
//这里也可以join之类
// 。。。 总之可以比较复杂,这个select。
$select->from("test_databases",["db_name","user_id"]); //参数null不可以省略。否则全选。
$select->where("id<100");
$select->order("id asc" );
$paginator = Zend_Paginator::factory($select);

//设置分页对象,包括 当前页,每页显示几个结果,页码导航显示几个链接。
$paginator->setCurrentPageNumber($page) // 设置当前页的页码
          ->setItemCountPerPage(4) // 每页显示4条数据
          ->setPageRange(7); // 7个链接,这是较常规的,也可以9个链接。

//打印当前页的结果集。
$result = $paginator->getCurrentItems();
foreach ($result as $v) {
	echo $v["db_name"]." = " .$v["user_id"] ."<br>"; 
}
// 分页链接对象
$page_obj =  $paginator->getPages(); 
// 下面是$page_obj的详细信息。
// first           : integer 第一页的页码,固定为1
// firstItemNumber : integer 无用
// firstPageInRange: integer 中间的连续链接中的第一个数字页码
// current         : integer 当前页码
// currentItemCount: integer 无用
// itemCountPerPage: integer 无用
// last            : integer      最后页的页码
// lastItemNumber  : integer 无用
// lastPageInRange : integer 中间的连续链接中的最后一个数字页码
// next            : integer    下页的页码
// pageCount       : integer 总页数
// pagesInRange    : array 中间链接的页码数组,每个元素就是一个整型的页码
// previous        : integer 上页的页码
// totalItemCount  : integer 无用,结果集总数

echo default_css();
echo get_page_url($page_obj);
// END



// 重要的构造分页链接的代码。
function get_page_url($page_obj) {
	$html='';
	if ($page_obj->pageCount) {
		//上页
		if (isset($page_obj->previous)) {
			$html.='<a href="'. get_url($page_obj->previous) .
			   '" rel="prev">Previous</a>';
		}else {
			$html.='<span class="disabled">Previous</span>';
		}
		
		//首页,若与中间连接重复,则不显示
		if ($page_obj->first < $page_obj->firstPageInRange ) {
			if ($page_obj->current== $page_obj->first) {
				$html.='<span class="current">'. $page_obj->current .'</span>';
			}else {
				$html .= '<a href="'. get_url($page_obj->first) .
				   '" >'. $page_obj->first .'</a>';
			}
		}
		
		if ($page_obj->firstPageInRange - $page_obj->first > 1) {
			$html .=  '<span class="dots">...</span>';
		}
		
		//中间连接
		foreach ($page_obj->pagesInRange as $v) {
			if ($page_obj->current== $v) {
				$html.='<span class="current">'. $page_obj->current .'</span>';
			}else {
				$html .= '<a href="'. get_url($v) . '" >'. $v .'</a>';
			}
		}
		
	    if ($page_obj->last - $page_obj->lastPageInRange > 1) {
			$html .=  '<span class="dots">...</span>';
		} 
		
	    //末页,若与中间连接重复,则不显示
		if ($page_obj->last > $page_obj->lastPageInRange ) {
			if ($page_obj->current== $page_obj->last) {
				$html.='<span class="current">'. $page_obj->current .'</span>';
			}else {
				$html .= '<a href="'. get_url($page_obj->last) .
				   '" >'. $page_obj->last .'</a>';
			}
		}
		
		//下页
		if (isset($page_obj->next)) {
			$html.='<a href="'. get_url($page_obj->next) .
			'" rel="next">Next</a>';
		}else {
			$html.='<span class="disabled">Next</span>';
		}
		$html = "<div class='pagerfanta'><nav>{$html}</nav></div>";
	}
	return $html;
}



// 分页链接网址函数
function get_url($page) {
	return "/1.php?page=".$page;
}

// 分页链接样式表
 function default_css()
{
	$css=<<<css
        <style>
            .pagerfanta {
            }

            .pagerfanta a,
            .pagerfanta span {
                display: inline-block;
                border: 1px solid blue;
                color: blue;
                margin-right: .2em;
                padding: .25em .35em;
            }

            .pagerfanta a {
                text-decoration: none;
            }

            .pagerfanta a:hover {
                background: #ccf;
            }

            .pagerfanta .dots {
                border-width: 0;
            }

            .pagerfanta .current {
                background: #ccf;
                font-weight: bold;
            }

            .pagerfanta .disabled {
                border-color: #ccf;
                color: #ccf;
            }



            .pagerfanta a,
            .pagerfanta span {
                border-color: blue;
                color: blue;
            }

            .pagerfanta a:hover {
                background: #ccf;
            }

            .pagerfanta .current {
                background: #ccf;
            }

            .pagerfanta .disabled {
                border-color: #ccf;
                color: #cf;
            }
                    </style>
css;
	return $css;
}


浏览器效果如下:


  • 大小: 9.5 KB
分享到:
评论

相关推荐

    zf框架db类的分页示例分享

    主要介绍了zf框架db类的分页示例,代码很简单,大家看一下注释就可以使用了

    zf2框架下开发的基本案例

    在本文中,我们将深入探讨`ZF2框架`(Zend Framework 2)下的基本开发案例,这对于初学者理解和掌握这个强大的PHP框架至关重要。`ZF2`是`Zend`公司推出的一个开源、面向对象的Web应用程序开发框架,它遵循MVC(模型-...

    zf2 框架的模版一个模版实例

    ZF2是一个广泛使用的PHP全功能框架,它提供了丰富的工具和组件,用于构建高质量、可维护的Web应用。模板是展示层的重要组成部分,它们负责将数据转化为用户友好的格式。 首先,让我们理解什么是模板。在Web开发中,...

    zf框架的db类select查询器join链表使用示例(zend框架)

    主要介绍了zf框架的Db类select查询器join链表使用示例,需要的朋友可以参考下

    zf Zend_Framework 框架 中文手册

    zf Zend_Framework 框架 中文手册

    ZF框架配置和中文学习文档

    其中包括zf框架的配置资料和中文学习手册。对于初学者有一定帮助。

    zf框架的校验器使用使用示例.docx

    zf框架的校验器使用使用示例.docx

    zf2-whoops, 在ZF2框架上,PHP whoops错误.zip

    zf2-whoops, 在ZF2框架上,PHP whoops错误 ZF2模块,集成 whoop是PHP的错误处理程序基础/框架。 Out-of-the-box,它提供了一个可以以帮助你调试web项目的错误接口,但是它是一个简单而强大的堆叠错误处理。模块安装...

    zf框架的registry使用示例.docx

    zf框架的registry使用示例.docx

    zf zend fremwork 框架 实例 项目 基础 配置

    ### zf zend framework 框架实例项目基础配置详解 #### 一、框架介绍与环境搭建 **ZF(Zend Framework)** 是一个开放源代码的PHP框架,它采用MVC(Model-View-Controller)设计模式,能够帮助开发者快速构建稳定...

    基于PHP的ZendFramework开源PHP开发框架迷你版源码.zip

    1. **PHP基础**:了解变量、数据类型、控制结构、函数、类和对象等PHP基础知识是使用此框架的前提。 2. **Zend Framework**:学习其MVC(模型-视图-控制器)架构,路由机制,依赖注入容器,以及模块化设计,这些都...

    ThinkPhp3.1.3仿百度分页类

    ThinkPhp仿百度分页类,在ThinkPhp3.1.3下测试通过 Author: 泡泡堂 &lt;46445280@qq.com&gt; &lt;http://371zf.sinaapp.com/&gt; 参照 ThinkPhp3.1.3 及 ThinkPhp3.2.1护展包下的 Page.class.php 说明:在ThinkPhp3.1.3下测试...

    自定义标签的使用步骤 用于分页

    下面我们将详细探讨自定义标签的使用步骤以及涉及到的相关知识点。 1. **编写自定义标签处理类**: 类`PagerTag`继承自`TagSupport`,这是JSP标准标签库(JSTL)提供的一般标签处理基类。`doStartTag()`方法是...

    PHP框架Zend_Framework.ppt

    Zend Framework (简写ZF)是由 Zend 公司支持开发的完全基于 PHP5 的开源PHP开发框架,可用于开发 Web 程序和服务,ZF采用 MVC(Model–View-Controller) 架构模式来分离应用程序中不同的部分方便程序的开发和维护。...

    zf2 路由与加载器

    在PHP的世界里,ZF2(Zend Framework 2)是一个广泛使用的开源框架,它提供了一整套工具和服务,帮助开发者构建高效、可维护的Web应用程序。本文将深入探讨ZF2中的两个核心组件——路由(Router)和加载器(Loader)...

    zf_74_image_74zf.com_http://74zf:com_74zf.com_zip_

    学习C#,你需要理解面向对象编程的基本概念,如类、对象、继承、多态和封装,以及.NET框架、Visual Studio IDE和调试工具的使用。 综上所述,我们可以从这些标签中提炼出一系列IT相关主题:图像处理、Web开发(包括...

    zf1-xml:来自ZF1的Xml组件

    这意味着这个XML组件原本是ZF1框架的一部分,但现在被单独拿出来作为一个独立的模块使用。这可能是因为开发者希望在不依赖整个框架的情况下,利用该XML处理功能,或者为了方便其他项目复用和维护。 **标签解析:** ...

    zf1-validate-file:ZF1中的Validate_File组件

    综上所述,`ZF1 Validate_File`组件是PHP开发中用于安全验证文件上传的重要工具,尤其适用于那些基于Zend Framework 1的项目。它提供了一套完整的验证机制,有助于提升应用的安全性和用户体验。

Global site tag (gtag.js) - Google Analytics