设为首页 收藏本站
查看: 1015|回复: 0

[经验分享] PHP – EasyUI DataGrid 资料取的方式

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-8-28 12:15:19 | 显示全部楼层 |阅读模式
  EasyUI DataGrid 是一个用 Jquery 写的 DataGrid,由此可知,是一个 前端 Web UI 技术,一般大家在产生 DataGrid 比较常见的应该就是使用后台 PHP 等后台语言,来直接产生 HTML 语法,来显示 DataGrid,当要对该 DataGrid 操作时,在传递参数到后端,重新产生整各网页。
  而 EasyUI DataGrid 支援两种做法,一个是,上述,后台 server 把显示的 HTML 产生好,在给前端显示。另一种是,利用 AJAX 的方式来产生,就只是单纯喂 JSON 格式资料给前端,前端接收到资料后,在自己分析资料利用 JQuery 来刷新 DataGrid 该部分的画面。
  这边介绍的是第二种做法,利用 AJAX 技术来做,这样的好处,是可以把 资料层-> 控制层-> 展示层 三层独立来运作,达到我在之前 多层次架构设计前言 所讲的精神,不会像老方法,把 HTML 的产生都放在 PHP 中来产生,造成 PHP 开发人员本身,也要对 HTML 等前端技术也要了解很深才能进行开发的问题。
  在来如此作法,为带来另一种好处,就是你前端的 UI 是可以更换,而后台程式却不用来大幅修改。目前支援 JSON 资料格式的 JavaScript DataGrid 有很多各,大家也可以多去参考其他的公司所提供的 DataGrid ,从中选择一个最适合的来使用。
  介绍到此,接下来直接看程式码,会更加了解我上述的意思:
  首先,需要先设计 HTML UI 介面,定义要显示哪些栏位,栏位的显示名称等,关于这部分的栏位定义,EasyUI DataGrid 也是有提供,使用 JavaScript 来动态定义,而我习惯用 HTML 直接定义,这样 也不复杂,后面在分工上,也比较容易来直接交给 Web 美工人员来直接操作。
  这部分重点在 URL 的设定。
DataGrid2.php



1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2 <html>
3 <head>
4     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5     <meta name="keywords" content="jquery,ui,easy,easyui,web">
6     <meta name="description" content="easyui help you build your web page easily!">
7     <title>一條小龍 easyUI datagrid</title>
8     <link rel="stylesheet" type="text/css" href="./JS/EasyUI/themes/default/easyui.css">
9     <link rel="stylesheet" type="text/css" href="./JS/EasyUI/themes/icon.css">
10      
11     <script type="text/javascript" src="./JS/jquery.js"></script>
12     <script type="text/javascript" src="./JS/EasyUI/jquery.easyui.min.js"></script>
13      
14 </head>
15 <body>
16     <h2>一條小龍 easyUI datagrid url test</h2>
17      
18     <table id="tt" class="easyui-datagrid"
19             url="datagrid2_getdata.php" title="Load Data" pagination="true">
20         <thead>
21             <tr>
22                 <th field="UNum" width="80">UNum</th>
23                 <th field="STUID" width="120">User ID</th>
24                 <th field="Password" width="80" align="right">Password</th>
25                 <th field="Birthday" width="80" align="right">Birthday</th>
26                 <th field="Nickname" width="200">Nickname</th>
27                 <th field="DBSTS" width="60" align="center">DBSTS</th>
28             </tr>
29         </thead>
30     </table>
31      
32 </body>
33 </html>
  在来定义资料取得的后台介面
datagrid2_getdata.php



1 <?php
2     $page = isset($_POST['page']) ? intval($_POST['page']) : 1;  
3     $rows = isset($_POST['rows']) ? intval($_POST['rows']) : 10;  
4     $offset = ($page-1)*$rows;
5     $result = array();
6  
7     $tablename = "STUser";
8     // ...  
9     require_once(".\db\DB_config.php");
10     require_once(".\db\DB_class.php");
11  
12     $db = new DB();
13     $db->connect_db($_DB['host'], $_DB['username'], $_DB['password'], $_DB['dbname']);
14     $db->query("select count(*) As Total from $tablename");
15     $row = $db->fetch_assoc();
16  
17     $result["total"] = $row["Total"];
18  
19     $db->query("select * from $tablename limit $offset,$rows");
20  
21     $items = array();  
22     while($row = $db->fetch_assoc()){  
23         array_push($items, $row);  
24     }   
25     $result["rows"] = $items;  
26  
27     echo json_encode($result);  
28 ?>
  
  由上述,可以看出,这是一个很单纯的资料取得的动作。
一开始 DataGrid 会传进来 两个参数,
$_POST['page']) 目前是在第几页
$_POST['rows']) 每页要显示几笔资料
  然后,要使用一个阵列 $result ,存放两个资讯,
$result["total"] 有几笔资料
$result["rows"] 存放实际的资料阵列集
最后要将 $result 阵列,产生将 JSON 资料格式来输出,DataGrid 接收到以后就会来处理、刷新画面了。
  后面,在更进一步,可以将 datagrid2_getdata.php 在抽象化一层,也就是将属于 EasyUI DataGrid 特有的资料格式处理的部分与资料库存取的的部分分离,各自独立出来成为 两个 class 来处理。
  一个好的架构 以及 class 设计,其实都是靠经验的累积而生成的,不断演进改良,原有的框架,其中最重要的精神就是,每个 Class 的分工要清楚而且精确,这是为了应付上述,不断演进 这各问题来做的对应措施,这样在未来才更容易去做修改调整。
  否则更容易变成,你想改却不知从何下手,因为一改就有几十支,甚至上百支程式等着你,要一起修改,从而延伸出,稳定性问题,也就是大家反对去修改原有系统,就是因为 太多要改了,少改一支也不行,问题几十支一起改,就算都改完,谁来测试有没有改好,难道叫你的 user 来帮你测,想想,就还是算了,不要再改了,反正现在系统也都还好好的可以用。
  所以由上述可知,一个好的架构规划,对未来的发展是很有帮助的,后面我一條小龍会再找一些例子,在让读者来了解架构设计的其中精神。
  下一篇 PHP – EasyUI DataGrid 资料存的方式

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-105517-1-1.html 上篇帖子: Linux下安装、配置PHP环境 下篇帖子: php连接postgresql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表