热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ZendFramework使用Zend_Paginator进行数据库交互和分页

1.1(备注:具体配置和运行情况参考上一篇Ubuntu10.10ZendFrameWork配置及helloworld显示)二、创建数据库表CREATEDATABASEIFNOTEX

1.1

Zend Framework使用Zend_Paginator进行数据库交互和分页

(备注:具体配置和运行情况参考上一篇Ubuntu10.10 Zend FrameWork配置及helloworld显示)

二、创建数据库表

CREATEDATABASEIFNOTEXISTS test;
USE test;
DROPTABLEIFEXISTS `test`.`userinfo`;
CREATETABLE `test`.`userinfo` (
`user_autoid`
int(11) NOTNULL AUTO_INCREMENT,
`
user_name` varchar(20) NOTNULL,
`user_pwd`
varchar(10) NOTNULL,
PRIMARYKEY (`user_autoid`)
) ENGINE
=MyISAM AUTO_INCREMENT=15DEFAULT CHARSET=utf8;
INSERTINTO `test`.`userinfo` VALUES (1,'summer','123'),
(
2,'1\'','1'),
(3,
's','s'),
(4,
'ups','happy'),
(5,
'sdfsdfsd','sfdsdf'),
(6,
's\'','ssssss'),
(
7,'sssssss','sssssss'),
(
8,'swyma','summerdir'),
(
9,'djb','ddd'),
(
10,'sss','sss'),
(
12,'CC','112'),
(
13,'c1','123'),
(
14,'s1','234');
UNLOCK TABLES;

三、创建项目zf create project pager

3.1、将application/configs/application.ini下的

phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

resources.frontController.params.displayExceptiOns= 1

设置为1,Zend Framework可以提供调试错误信息的显示。

四、创建控制器、视图

4.1、indexController

php
class IndexController extends Zend_Controller_Action
{
private$_numPerPage=5;
private$_pageRange=5;
publicfunction init ()
{
/* Initialize action controller here */
}
publicfunction indexAction ()
{
$parm=$this->_request->getParam('parm');
if (strtolower($_SERVER['REQUEST_METHOD']) =='post') {
//取得前台得传过来的值
$text='%'.$this->_request->getPost('txt') .'%';
$db= Zend_Registry::get('db');
//搜索
$sql=$db->quoteInto(
"SELECT * FROM userinfo where user_name like ? or user_pwd like ?",
$text);
//分页
$numPerPage=$this->_numPerPage;
$pageRange=$this->_pageRange;
$page=$this->_request->getParam('page',1);
$offset=$numPerPage*$page;
$db=new Application_Model_DbTable_UserInfo();
$select=$db->getAllUserInfo($sql)->fetchAll();
$paginator= Zend_Paginator::factory($select);
$paginator->setCurrentPageNumber($page)
->setItemCountPerPage($numPerPage)
->setPageRange($pageRange);
$this->view->userinfo =$paginator;
$params=array('parm'=>$this->_request->getPost('txt'));
$this->_helper->redirector('index','index',null,
$params);
}
else
if ($this->_request->getParam('parm') !="") {
$text='%'.$this->_request->getParam('parm') .'%';
$db= Zend_Registry::get('db');
//搜索
$sql=$db->quoteInto(
"SELECT * FROM userinfo where user_name like ? or user_pwd like ?",
$text);
//分页
$numPerPage=$this->_numPerPage;
$pageRange=$this->_pageRange;
$page=$this->_request->getParam('page',1);
$offset=$numPerPage*$page;
$db=new Application_Model_DbTable_UserInfo();
$select=$db->getAllUserInfo($sql)->fetchAll();
$paginator= Zend_Paginator::factory($select);
$paginator->setCurrentPageNumber($page)
->setItemCountPerPage($numPerPage)
->setPageRange($pageRange);
$this->view->userinfo =$paginator;
}
else {
$db=new Application_Model_DbTable_UserInfo();
$sql="SELECT * FROM userinfo";
//分页
$numPerPage=$this->_numPerPage;
$pageRange=$this->_pageRange;
$page=$this->_request->getParam('page',1);
$offset=$numPerPage*$page;
$db=new Application_Model_DbTable_Userinfo();
$select=$db->getAllUserInfo($sql)->fetchAll();
$paginator= Zend_Paginator::factory($select);
$paginator->setCurrentPageNumber($page)
->setItemCountPerPage($numPerPage)
->setPageRange($pageRange);
$this->view->userinfo =$paginator;
}
}
publicfunction pagelistAction ()
{
// action body
}
}

4.2、index.phtml视图

DOCTYPE unspecified PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<form name="login"
action
="echo $this->url(array('controller' => 'index', 'action' => 'index'));
?>
"
method
="post"><input type="text" name="txt"/><input
type
="submit" value="搜索"><input type="button" value="刷新"
onclick
="location.href='echo $this->baseUrl()?>/index/index'">
form>
<table>
<tr>
<th>用户名th>
<th>&nbsp;码th>
tr>
php
foreach ($this->userinfo as$key=>$value) {
?>
<tr>
<td>
php
echo$value['user_name']?>
td>
<td>
php
echo$value['user_pwd']?>
td>
tr>
php
}
?>
table>

php
echo$this->paginationControl($this->userinfo,'Sliding',
'/index/pagelist.phtml');
?>

4.3、pagelist.phtml

php if($this->pageCount):?>
<div class="paginationControl">
php if( isset($this->first) ):?>
<a href="url(array('page'=>$this->first));?>">首页a>
php else: ?>
<span class="disabled">首页span>
php endif;?>

php if( isset($this->previous) ):?>
<a href="url(array('page'=>$this->previous));?>">上一页a>
php else: ?>
<span class="disabled">上一页span>
php endif;?>
php foreach ($this->pagesInRange as $page):?>
php if($page !=$this->current):?>
<a href="url(array('page'=>$page));?>">php echo $page;?>a>|
php else :?>
php echo $page;?>|
php endif;?>
php endforeach;?>

php if(isset($this->next)):?>
<a href="url(array('page'=>$this->next));?>">下一页a>
php else:?>
<span class="disabled">下一页span>
php endif;?>

php if( isset($this->last) ):?>
<a href="url(array('page'=>$this->last));?>">尾页a>
php else: ?>
<span class="disabled">尾页span>
php endif;?>

<span>php echo $this->current;?>span>
<span>php echo $this->pageCount;?>span>
<span>php echo $this->totalItemCount;?>span>
div>
php endif;?>

4.4、Bootstrap.php(数据库连接)

如果连接出现mysql drivers not found,请检查是否安装了php5-mysql(在ubuntu下一般没有安装),到“新立德软件中心”安装

Zend Framework使用Zend_Paginator进行数据库交互和分页

php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protectedfunction _initDBConnection ()
{
//数据库连接
$params=array('host'=>'localhost','username'=>'root',
'password'=>'123','dbname'=>'test','charset'=>'utf8');
$db= Zend_Db::factory('PDO_MYSQL',$params);
Zend_Db_Table
::setDefaultAdapter($db);
Zend_Registry
::set('db',$db);
}
}

五、运行效果

Zend Framework使用Zend_Paginator进行数据库交互和分页

Zend Framework使用Zend_Paginator进行数据库交互和分页

六、总结

Zend_Paginator还算是个不错的工具,挺方便的。

运行环境:ubuntu 10.10、zend framework

七、源代码下载

源代码下载:https://files.cnblogs.com/yongfeng/pager.zip


推荐阅读
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 电话号码的字母组合解题思路和代码示例
    本文介绍了力扣题目《电话号码的字母组合》的解题思路和代码示例。通过使用哈希表和递归求解的方法,可以将给定的电话号码转换为对应的字母组合。详细的解题思路和代码示例可以帮助读者更好地理解和实现该题目。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文介绍了游标的使用方法,并以一个水果供应商数据库为例进行了说明。首先创建了一个名为fruits的表,包含了水果的id、供应商id、名称和价格等字段。然后使用游标查询了水果的名称和价格,并将结果输出。最后对游标进行了关闭操作。通过本文可以了解到游标在数据库操作中的应用。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 006_Redis的List数据类型
    1.List类型是一个链表结构的集合,主要功能有push,pop,获取元素等。List类型是一个双端链表的结构,我们可以通过相关操作进行集合的头部或者尾部添加删除元素,List的设 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • 本文介绍了如何清除Eclipse中SVN用户的设置。首先需要查看使用的SVN接口,然后根据接口类型找到相应的目录并删除相关文件。最后使用SVN更新或提交来应用更改。 ... [详细]
  • 本文介绍了在序列化时如何对SnakeYaml应用格式化,包括通过设置类和DumpSettings来实现定制输出的方法。作者提供了一个示例,展示了期望的yaml生成格式,并解释了如何使用SnakeYaml的特定设置器来实现这个目标。对于正在使用SnakeYaml进行序列化的开发者来说,本文提供了一些有用的参考和指导。摘要长度为169字。 ... [详细]
author-avatar
mobiledu2502863807
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有