- 一條小龍 easyUI datagrid
一條小龍 easyUI datagrid url testurl="datagrid2_getdata.php" title="Load Data" pagination="true">UNum | User ID | Password | Birthday | Nickname | DBSTS |
在来定义资料取得的后台介面
datagrid2_getdata.php
$page = isset($_POST['page']) ? intval($_POST['page']) : 1; - $rows = isset($_POST['rows']) ? intval($_POST['rows']) : 10;
- $offset = ($page-1)*$rows;
- $result = array();
$tablename = "STUser"; - // ...
- require_once(".\db\DB_config.php");
- require_once(".\db\DB_class.php");
$db = new DB(); - $db->connect_db($_DB['host'], $_DB['username'], $_DB['password'], $_DB['dbname']);
- $db->query("select count(*) As Total from $tablename");
- $row = $db->fetch_assoc();
$result["total"] = $row["Total"]; $db->query("select * from $tablename limit $offset,$rows"); $items = array(); - while($row = $db->fetch_assoc()){
- array_push($items, $row);
- }
- $result["rows"] = $items;
echo json_encode($result); - ?>
由上述,可以看出,这是一个很单纯的资料取得的动作。
一开始 DataGrid 会传进来 两个参数,
$_POST['page']) 目前是在第几页
$_POST['rows']) 每页要显示几笔资料
然后,要使用一个阵列 $result ,存放两个资讯,
$result["total"] 有几笔资料
$result["rows"] 存放实际的资料阵列集
最后要将 $result 阵列,产生将 JSON 资料格式来输出,DataGrid 接收到以后就会来处理、刷新画面了。
后面,在更进一步,可以将 datagrid2_getdata.php 在抽象化一层,也就是将属于 EasyUI DataGrid 特有的资料格式处理的部分与资料库存取的的部分分离,各自独立出来成为 两个 class 来处理。
一个好的架构 以及 class 设计,其实都是靠经验的累积而生成的,不断演进改良,原有的框架,其中最重要的精神就是,每个 Class 的分工要清楚而且精确,这是为了应付上述,不断演进 这各问题来做的对应措施,这样在未来才更容易去做修改调整。
否则更容易变成,你想改却不知从何下手,因为一改就有几十支,甚至上百支程式等着你,要一起修改,从而延伸出,稳定性问题,也就是大家反对去修改原有系统,就是因为 太多要改了,少改一支也不行,问题几十支一起改,就算都改完,谁来测试有没有改好,难道叫你的 user 来帮你测,想想,就还是算了,不要再改了,反正现在系统也都还好好的可以用。 |