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

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

一、大概思路1.1、(备注:具体配置和运行情况参考上篇Ubuntu10.10ZendFrameWork配置及helloworld显示)二、数据库CREATED
一、大概思路

1.1、

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

二、数据库
CREATE DATABASE IF NOT EXISTS ` text `;
USE ` text `;

--
--
Definition of table `text`.`user`
--

DROP TABLE IF EXISTS ` text `.` user `;
CREATE TABLE ` text `.` user ` (
`useId`
int ( 11 ) NOT NULL AUTO_INCREMENT,
`useAccount`
varchar ( 50 ) DEFAULT NULL ,
`useName`
varchar ( 20 ) DEFAULT NULL ,
`useSex`
varchar ( 5 ) DEFAULT NULL ,
`useAddress`
varchar ( 50 ) DEFAULT NULL ,
`useTime`
timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY (`useId`)
) ENGINE
= MyISAM AUTO_INCREMENT = 10 DEFAULT CHARSET = utf8;

--
--
Dumping data for table `text`.`user`
--

/* !40000 ALTER TABLE `user` DISABLE KEYS */ ;
LOCK TABLES `
user ` WRITE;
INSERT INTO ` text `.` user ` VALUES ( 3 , ' rubymatlab ' , ' zhouyongfeng ' , ' boy ' , ' guangdong ' , ' 2011-04-06 11:05:55 ' ),
(
4 , ' xiaohong ' , ' xiaohong ' , ' girl ' , ' henan ' , ' 2011-04-06 11:05:55 ' ),
(
5 , ' zhanglao ' , ' zhanglao ' , ' boy ' , ' sichuan ' , ' 2011-04-02 11:05:55 ' ),
(
6 , ' liuxia ' , ' liuxia ' , ' girl ' , ' beijing ' , ' 2011-04-02 11:05:55 ' ),
(
7 , ' chenming ' , ' chenming ' , ' boy ' , ' xinjiang ' , ' 2011-04-02 11:05:55 ' ),
(
9 , ' xiaodong ' , ' xiaodong ' , ' boy ' , ' yunnan ' , ' 2011-04-02 11:05:55 ' );
三、创建项目ZFExtjs 四、模型Model

4.1、设置数据库连接Bootstrap.php

php

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

4.2、为数据库创建可操作的Model层(即输入zf create db-table User user,然后增加自定义函数方法)

php

class Application_Model_DbTable_User extends Zend_Db_Table_Abstract
{

protected $_name = ' user ' ;
public function getAllUser ( $sql )
{
$adapter = Zend_Registry :: get( ' db ' );
$result = $adapter -> query( $sql );
return $result ;
}
public function getCount( $sql )
{
$adapter = Zend_Registry :: get( ' db ' );
$result = $adapter -> fetchOne( $sql );
return $result ;
}

}
五、控制器Controller

5.1、编写一个showallAction函数方法

php
class IndexController extends Zend_Controller_Action
{
public function init ()
{
/* Initialize action controller here */
}
public function indexAction ()
{
// action body
$this -> view -> content = " Hello World,Welcome to Zend Framework do Well in Extjs " ;
$this -> render();
}
public function showallAction ()
{
$this -> _helper -> contextSwitch() -> initJsonContext();
$this -> getResponse() -> setHeader( ' Content-Type ' , ' application/json ' );
$db = new Application_Model_DbTable_User();
// 分页取数据
$start = $this -> _request -> getPost( " start " );
$limit = $this -> _request -> getPost( " limit " );
$sql = " select * from user limit " . $start . " , " . $limit ;
$result = $db -> getAllUser( $sql );
$select = $result -> fetchAll();
$sql = " select count(useid) as useid from user " ;
$count = $db -> getCount( $sql );
echo " {\"totalCount\": " . $count . " ,\"data\": " .
Zend_Json
:: encode( $select ) . " } " ;
}
}
六、视图View
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< html xmlns ="http://www.w3.org/1999/xhtml" >
< head >
< meta http-equiv ="Content-Type" content ="text/html; charset=utf-8" />
< title > 使用Zend Framework实现ExtjsGrid的交互 title >

< link href ="ext-3.2.0/resources/css/ext-all.css" rel ="stylesheet"
type
="text/css" />
< script src ="ext-3.2.0/adapter/ext/ext-base.js" type ="text/Javascript" > script >
< script src ="ext-3.2.0/ext-all.js" type ="text/Javascript" > script >
< script >
Ext.onReady(
function () {
Ext.QuickTips.init();
var _start = 0 ;
var _limit = 5 ;
var store = new Ext.data.JsonStore({
root:
' data ' ,
totalProperty:
' totalCount ' ,
url:
' Index/showall ' ,
fields: [
{ name:
' useAccount ' , type: ' string ' },
{ name:
' useName ' ,type: ' string ' },
{ name:
' useSex ' ,type: ' string ' },
{ name:
' useAddress ' ,type: ' string ' },
{ name:
' useTime ' }
]
});
var grid = new Ext.grid.GridPanel({
frame:
true ,
title:
' 学生各科成绩表 ' ,
stripeRows:
true , // 斑马线
store: store,
applyTo:
' app_grid ' ,
trackMouseOver:
true ,
height:
300 ,
width:
800 ,
loadMask: { msg:
' 正在加载数据,请稍侯…… ' },
viewConfig: {
forceFit:
true
},
columns: [
new Ext.grid.RowNumberer(), // 行号
new Ext.grid.CheckboxSelectionModel({ singleSelect: true }),
{ header:
' 用户帐户 ' , dataIndex: ' useAccount ' , sortable: true },
{ header:
' 用户姓名 ' , dataIndex: ' useName ' , sortable: true },
{ header:
' 用户性别 ' , dataIndex: ' useSex ' , sortable: true },
{ header:
' 用户地址 ' , dataIndex: ' useAddress ' , sortable: true },
{ header:
' 注册时间 ' , dataIndex: ' useTime ' , sortable: true }
],
bbar:
new Ext.PagingToolbar({ // 分页
pageSize: _limit,
store: store,
displayInfo:
true , // 非要为true,不然不会显示下面的分页按钮
displayMsg: ' 第 {0} 条到 {1} 条,一共 {2} 条记录 ' ,
emptyMsg:
" 没有记录 "
})
});
store.load({ params: { start: _start, limit: _limit} });
})
script >

head >

< body >
< div id ="app_grid" > div >
< img src ="images/door_open.png" > img >
=$this->content; ?>
body >

html >
七、运行效果

八、总结

Zend Framework和Extjs结合方面还不算太难,不过要掌握好可能需要些时间。

九、相关资源

源代码下载:http://files.cnblogs.com/yongfeng/ZFExtjs.zip(Extjs方面采用版本3.2.0的,并不包含在文件夹内,需要大家手动添加)


推荐阅读
  • 获取时间的函数js代码,js获取时区代码
    本文目录一览:1、js获取服务器时间(动态)2 ... [详细]
  • 本文介绍了在使用Laravel和sqlsrv连接到SQL Server 2016时,如何在插入查询中使用输出子句,并返回所需的值。同时讨论了使用CreatedOn字段返回最近创建的行的解决方法以及使用Eloquent模型创建后,值正确插入数据库但没有返回uniqueidentifier字段的问题。最后给出了一个示例代码。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Todayatworksomeonetriedtoconvincemethat:今天在工作中有人试图说服我:{$obj->getTableInfo()}isfine ... [详细]
  • 基于SpringBoot打造在线教育系统(6)– 二级分类模块UI篇
    这一节来做二级分类,为了快速开发,一级分类只做新增,暂时不考虑修改和删除,如果一定要删,就去数据库删吧。我们接下来,需要通过一级分类,获取所有的二级分类。开始 ... [详细]
  • TableAPI报一下异常:FieldtypesofqueryresultandregisteredTableSink
    报错信息如下:Exceptioninthread“main”org.apache.flink.table.api.ValidationException:Fieldtypesofq ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 生产环境下JVM调优参数的设置实例
     正文前先来一波福利推荐: 福利一:百万年薪架构师视频,该视频可以学到很多东西,是本人花钱买的VIP课程,学习消化了一年,为了支持一下女朋友公众号也方便大家学习,共享给大家。福利二 ... [详细]
  • 工作用可能会用到会话分组:Message是消息实体对象,里面有toId和fromId指明接收方ID和发送方Id,通过组合形式“12-22-”为map的key其中Mess ... [详细]
author-avatar
mobiledu2502923007
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有