PHP DataGrid 实现代码


Posted in PHP onAugust 12, 2009

由于需要连接Oracle所以从二次开发和页面样式来说个人觉得phpMyDataGrid还是比较好上手。本篇首先介绍基于MySQL的使用方法,再简单介绍对于Oracle连接(基于sqlrelay)的二次开发。

1. 创建测试数据库和表

create database `guru`; USE `guru`; 
CREATE TABLE `employees` ( 
`id` int(6) NOT NULL auto_increment, 
`name` char(20) default NULL, 
`lastname` char(20) default NULL, 
`salary` float default NULL, 
`age` int(2) default NULL, 
`afiliation` date default NULL, 
`status` int(1) default NULL, 
`active` tinyint(1) default NULL, 
`workeddays` int(2) default NULL, 
`photo` char(30) default NULL, 
PRIMARY KEY (`id`) 
) 
insert into `employees` 
(`id`,`name`,`lastname`,`salary`,`age`,`afiliation`,`status`,`active`,`workeddays`,`photo`) 
values (1, 'Ana', 'Trujillo',2000,45, '2005-05-13',1,1,10, '1.jpg'); 
insert into `employees` 
(`id`,`name`,`lastname`,`salary`,`age`,`afiliation`,`status`,`active`,`workeddays`,`photo`) 
values (2, 'Jennifer', 'Aniston',3500,23, '2004-10-22',1,0,0, '2.jpg'); 
insert into `employees` 
(`id`,`name`,`lastname`,`salary`,`age`,`afiliation`,`status`,`active`,`workeddays`,`photo`) 
values (3, 'Michael', 'Norman',1200,19, '2007-01-10',1,1,5, '3.jpg'); 
insert into `employees` 
(`id`,`name`,`lastname`,`salary`,`age`,`afiliation`,`status`,`active`,`workeddays`,`photo`) 
values (4, 'Vanessa', 'Black',6500,31, '2000-11-05',1,1,30, '4.jpg'); 
insert into `employees` 
(`id`,`name`,`lastname`,`salary`,`age`,`afiliation`,`status`,`active`,`workeddays`,`photo`) 
values (5, 'Michael', 'Strauss',3200,45, '2006-10-21',2,0,22, '5.jpg'); 
insert into `employees` 
(`id`,`name`,`lastname`,`salary`,`age`,`afiliation`,`status`,`active`,`workeddays`,`photo`) 
values (6, 'William', 'Brown',2300,21, '2001-03-10',3,1,10, '6.jpg'); 
insert into `employees` 
(`id`,`name`,`lastname`,`salary`,`age`,`afiliation`,`status`,`active`,`workeddays`,`photo`) 
values (7, 'Lucca', 'Normany',2800,36, '2006-10-02',3,1,20, '7.jpg');

2. PHP程序介绍
phpMyDataGrid主要是通过phpmydatagrid.class.php,dgscripts.js来实现的,总共加起来不到100kB,又是一个小巧的软件。对于这两个文件就不多讲了,感兴趣的同学可以“打包带走”回去慢慢品。主要介绍该软件的使用方法,即实例datagrid_for_mysql.php。先看一下页面示意图:
PHP DataGrid 实现代码
程序讲解:
<?php 
include ("phpmydatagrid.class.php"); 
$objGrid = new datagrid; $objGrid->closeTags(true); 
$objGrid->friendlyHTML(); 
$objGrid->methodForm("get"); 
//连接数据库 
$objGrid->conectadb("127.0.0.1", "root", "root", "guru");//加密字符串 
$objGrid->salt("Myc0defor5tr0ng3r-Pro3EctiOn"); 
$objGrid->language("en"); 
//最后一列显示的功能键,从左向右功能为“新增键”、“编辑键”、“删除键”、“浏览键”。 
$objGrid->buttons(true,true,true,true); 
//修改数值时产生的Form名称 
$objGrid->form('employee', true); 
//可检索列名 
$objGrid->searchby("name,lastname"); 
//需要读取的表 
$objGrid->tabla("employees"); 
//索引值用于修改数据 
$objGrid->keyfield("id"); 
//分页显示行数 
$objGrid->datarows(20); 
//默认排序方式 
$objGrid->orderby("name", "ASC"); 
//显示列设置,相关设置可参考phpmydatagrid.class.php 
$objGrid->FormatColumn("id", "ID Employee", 5, 5, 1, "50", "center", "integer"); 
$objGrid->FormatColumn("name", "Name", 30, 30, 0, "150", "left"); 
$objGrid->FormatColumn("lastname", "Last name", 30, 30, 0, "150", "left"); 
$objGrid->FormatColumn("age", "Age", 5, 5, 0, "50", "right");//自定义日期格式 
$objGrid->FormatColumn("afiliation", "Afiliation Date", 10, 10, 0, "100", "center", "date:dmy:/");//编辑时可以自定义为<Select>模式 
$objGrid->FormatColumn("status", "Status", 5, 5, 0, "60", "left", "select:1_Single:2_Married:3_Divorced"); 
//编辑时可以自定义为<CheckBox>模式 
$objGrid->FormatColumn("active", "Active", 2, 2, 0,"50", "center", "check:No:Yes");//自定义货币显示形式 
$objGrid->FormatColumn("salary", "Salary", 10, 10, 0, "90", "right", "money:€");//将数据以柱状图显示 
$objGrid->FormatColumn("workeddays", "Work days", 5, 2, 0, "50", "right", "chart:percent:val:31"); 
$objGrid->checkable(); 
$objGrid->setHeader(); 
$objGrid->ajax('silent'); 
echo '<html> 
<head><title>PHPDataGrid</title></head> 
<body><div align="center"><br />'; 
//生成DataGrid 
$objGrid->grid(); 
echo '</div></body></html>';//关闭数据库连接 
$objGrid->desconectar(); 
?>

3. 基于Oracle简介

对于Oracle的读取主要是把phpmydatagrid.class.php中与MySQL连接的函数修改为Oracle,本篇是通过sqlrelay(可参考http://sqlrelay.sourceforge.net/)进行的Oracle连接,当然也可以使用PHP自带的OCI8模块(效率有些低),修改后另存为phporadatagrid.class.php即可在其他程序(datagrid_for_oracle.php)中调用。以上涉及的所有程序均可在压缩包中找到。
希望对大家有用!
4. 源程序下载

PHP 相关文章推荐
如何在PHP中使用Oracle数据库(5)
Oct 09 PHP
PHP源码分析之变量的存储过程分解
Jul 03 PHP
php基于base64解码图片与加密图片还原实例
Nov 03 PHP
php实现将数组转换为XML的方法
Mar 09 PHP
php动态变量定义及使用
Jun 10 PHP
PHP+Javascript实现在线拍照功能实例
Jul 18 PHP
PHP闭包函数传参及使用外部变量的方法
Mar 15 PHP
Yii2中使用join、joinwith多表关联查询
Jun 30 PHP
php自定义函数实现二维数组按指定key排序的方法
Sep 29 PHP
PHPstorm快捷键(分享)
Jul 17 PHP
PHP实现简易计算器功能
Aug 28 PHP
PHP 超级全局变量相关总结
Jun 30 PHP
PHP 执行系统外部命令 system() exec() passthru()
Aug 11 #PHP
php empty函数 使用说明
Aug 10 #PHP
php 取得瑞年与平年的天数的代码
Aug 10 #PHP
php 生成WML页面方法详解
Aug 09 #PHP
彻底杜绝PHP的session cookie错误
Aug 09 #PHP
PHP 5.3.0 安装分析心得
Aug 07 #PHP
php 随机数的产生、页面跳转、件读写、文件重命名、switch语句
Aug 07 #PHP
You might like
PHP中文竖排转换实现方法
2015/10/23 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
2015/11/15 PHP
PHP使用反射机制实现查找类和方法的所在位置
2016/04/22 PHP
php实现图片上传、剪切功能
2016/05/07 PHP
Yii框架分页实现方法详解
2017/05/20 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
PHP 二维array转换json的实例讲解
2018/08/21 PHP
利用js跨页面保存变量做菜单的方法
2008/01/17 Javascript
js读取json的两种常用方法示例介绍
2014/10/19 Javascript
微信小程序 Storage API实例详解
2016/10/02 Javascript
vue-cli入门之项目结构分析
2017/04/20 Javascript
Vue.js 2.0 移动端拍照压缩图片预览及上传实例
2017/04/27 Javascript
BootStrap 表单控件之单选按钮水平排列
2017/05/23 Javascript
vue实现a标签点击高亮方法
2018/03/17 Javascript
vue获取当前激活路由的方法
2018/03/17 Javascript
cnpm加速Angular项目创建的方法
2018/09/07 Javascript
如何从0开始用node写一个自己的命令行程序
2018/12/29 Javascript
JavaScript键盘事件常见用法实例分析
2019/01/03 Javascript
Python3中多线程编程的队列运作示例
2015/04/16 Python
用Python实现web端用户登录和注册功能的教程
2015/04/30 Python
python通过定义一个类实例作为ftp回调方法
2015/05/04 Python
Python3实现发送QQ邮件功能(附件)
2020/12/23 Python
对python_discover方法遍历所有执行的用例详解
2019/02/13 Python
python pptx复制指定页的ppt教程
2020/02/14 Python
PyCharm中如何直接使用Anaconda已安装的库
2020/05/28 Python
python中的插入排序的简单用法
2021/01/19 Python
台湾旅游网站:灿星旅游
2018/10/11 全球购物
shallow copy和deep copy的区别
2016/05/09 面试题
档案室主任岗位职责
2014/02/12 职场文书
校园联欢晚会主持词
2014/03/17 职场文书
求职信范文大全
2014/05/26 职场文书
项目转让协议书
2014/10/27 职场文书
2015秋季幼儿园开学通知
2015/07/16 职场文书
环保建议书作文400字
2015/09/14 职场文书
Redis实现订单自动过期功能的示例代码
2021/05/08 Redis
python playwright 自动等待和断言详解
2021/11/27 Python