这段代码是一个fleaphp项目中的一个基础类,实现表格的自动排序,分类,分页等.

<?php
//需要两个图片来表示升序和降序  需要放在固定位置
//需要一个视图表显示  需要放在固定位置
require_once('Flea/Stuff/Smarty/Smarty.class.php');
class Class_Table{
//表格对象的配置信息,以及部分默认值
public $c(
  'no'=>false,
  'multi'=>false,
  'add'=>false,
  'del'=>false,
  'edit'=>false,
  'show'=>false,
  'id'=>'id',
  'categoryList'=>null,
  'return'=>false
);  //对象的配置
public $controller; //控制器
public $action;  //动作
//以下*表示类生成时的初始配置
public $name;   //表格的助记,尽量以短的英文形式表示 *
public $title;   //表格和页面的标题 *

public $no;   //是否允许行号 *
public $multi;   //是否允许多选  *
public $categoryList; //分类的列表  *

public $return;   //返回的地址 *
public $add;   //是否允许添加 *
public $del;   //是否允许删除 *
public $edit;   //是否允许编辑 *
public $show;   //是否允许查看 *

public $operate;  //全表操作  *

public $id;   //ID列的字段名 *
public $fields;  //字段列表  *

public $defaultSortName;  //默认的排序列 *
public $defaultSortOrder;  //默认的排序顺序 *
public $ascImgPath='Images/Table/asc.gif';  //升序图标
public $descImgPath='Images/Table/desc.gif';  //降序图标

public $pageNo;   //当前页号
public $pageSize;  //页面大小
public $sortName;  //排序字段名称
public $sortOrder;  //升序还是降序
public $category;  //当前分类

public $smarty;  //用到的smarty对象  *

/**
  * 构造方法,为对象的一些通用属性赋值
  *
  */
public function __construct($config){
  $this->controller=$this->getValue('controller'); //本表格的控制程序在哪个控制器
  $this->action=$this->getValue('action'); //本表格的列表动作,其它动作以此为前缀
  foreach($config as $key=>$value)
   $this->config[$key]=$value;

$this->smarty=$this->config['smarty'];
  $this->name=$this->config['name'];  //本对象的助记符,要求每个表格唯一,以便Cookie记忆
  $this->title=$this->config['title'];  //标题

$this->no=$this->config['no'];   //是否显示序号
  $this->multi=$this->config['multi'];  //是否允许多选
  $this->categoryList=$this->config['categoryList'];//分类

$this->return=$this->config['return']; //返回的地址
  $this->add=$this->config['add'];   //是否允许增加
  $this->del=$this->config['del'];   //是否允许删除
  $this->edit=$this->config['edit'];  //是否允许编辑
  $this->show=$this->config['show'];  //是否允许查看

$this->operate=$this->config['operate']; //多选结果的操作 包括title,action

$this->id=$this->config['id'];   //ID字段
  $this->fields=$this->config['fields']; //要显示的字段,包括name=>alias,title,type

$this->pageNo=$this->getValue('pageNo_'.$this->name);   //页码
  if(!$this->pageNo)$this->pageNo=0;

$this->pageSize=$this->getValue('pageSize_'.$this->name);  //页大小
  if(!$this->pageSize)$this->pageSize=10;

$this->sortName=$this->getValue('sortName_'.$this->name); //排序列
  if(!$this->sortName)$this->sortName=$this->config['defaultSortName'];

$this->sortOrder=$this->getValue('sortOrder_'.$this->name);  //排序方向
  if(!$this->sortOrder)$this->sortOrder=$this->config['defaultSortOrder'];

$this->category=$this->getValue('category_'.$this->name);  //分类
  //echo 'sortName:'.$this->sortName.'  sortOrder:'.$this->sortOrder.'<br/>';
}

//为外部程序提供,输出当前的分页,排序,分类相关信息
public function getListingConfig(){
  return array(
   'pageNo'=>$this->pageNo,
   'pageSize'=>$this->pageSize,
   'sortName'=>$this->sortName,
   'sortOrder'=>$this->sortOrder,
   'category'=>$this->category
  );
}

/**
  * 显示表格'
  * 入口参数是一个数组
  *  count 总记录数
  *  data 本页要显示的数据
  */
public function listing($data){
  $dataCount=$data['count'];  //总记录数
  $data=$data['data'];   //当前要显示的记录
  $pageCount=intval(($dataCount-1)/$this->pageSize)+1;  //计算总页数
  //echo "dataCount:$dataCount  pageSize:$this->pageSize pageNo:$this->pageNo pageCount:$pageCount <br/>";
  //$this->smarty=new Smarty();
  $this->smarty->assign('dataCount',$dataCount);
  $this->smarty->assign('data',$data);
  $this->smarty->assign('pageCount',$pageCount);
  $this->smarty->assign('config',$this);
  $this->smarty->template_dir='APP/View/Table';

if(isset($_SESSION['msg'])){
   $this->smarty->assign('msgs',$_SESSION['msg']);
   unset($_SESSION['msg']);
  }

//$this->smarty->left_delimiter='{';
  //$this->smarty->right_delimiter='}';
  $this->smarty->caching=false;
  $this->smarty->display('listing.tpl');
}
//获得一个POST或者GET或者Cookie的值,如果不存在,返回false
private function getValue($name){
  if(isset($_POST[$name])) return trim($_POST[$name]);
  if(isset($_GET[$name]))return trim($_GET[$name]);
  if(isset($_COOKIE[$name]))return trim($_COOKIE[$name]);
  return false;
}
}
?>

<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>

阅读(183) | 评论(0) | 转发(0) |

0

上一篇:再贴一段js相关的代码,使用了EXTjs框架

下一篇:2007中国十大科技新闻有感

相关热门文章
  • 欢迎skirtburial85在ChinaUnix...
  • 红石榴鲜活亮白面贴膜...
  • 红石榴鲜活亮白面贴膜...
  • 红石榴鲜活亮白面贴膜...
  • 红石榴鲜活亮白面贴膜...
  • 承接自动化测试培训、外包、实...
  • Solaris PowerTOP 1.0 发布
  • For STKMonitor
  • busybox的httpd使用CGI脚本(Bu...
  • 项目小体会
  • LNMP 老是会出现502?
  • suse 运用一个shell获取本机和...
  • 虚拟机 unix 配置ip
  • hp-un 主机新系统读不到磁盘阵...
  • mysql出现问题:Starting MySQ...
给主人留下些什么吧!~~
评论热议

再贴一个Fleaphp相关的相关推荐

  1. 台式计算机怎么加一个硬盘,如何再安装一个台式计算机硬盘驱动器?如何在计算机安装中添加额外的硬盘...

    如果台式计算机的硬盘运行时间较长,它将存储大量数据. 长时间后,硬盘空间将不足. 更换计算机将花费大量金钱. 实际上,我们可以在计算机上添加额外的硬盘以增加硬盘空间并加快系统速度. 那么如何再安装一个 ...

  2. 想再考一个教师资格证,相同的科目需要重考笔试吗?

    一堆关于"我已经有一个英语教师资格证,但是想换一个科目拿证考编"的咨询啊!这是一大堆英语考编学子被逼无奈要转科的节奏啊! 为避免给大家传达错误的信息,小编特意就相关问题,电话咨询了 ...

  3. ramdisk和linux PE,[PE教程]WINPE下如何再建一个Ramdisk盘

    WINPE下如何再建一个Ramdisk盘 解开winpe.is_,得到winpe.iso,然后提取setupreg.hiv,用注册表编辑器加载到HKEY_LOCAL_MACHINE下,取名为!syst ...

  4. 计算机怎么安装俩个操作系统,想安装双操作系统,原来是win7,想再安装一个win10,两个系统能共用电脑里的软件吗?...

    想安装双操作系统,原来是win7,想再安装一个win10,两个系统能共用电脑里的软件吗?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一 ...

  5. 手工建库】(二)在原有数据库的基础上再建立一个数据库

    数据库 congjiu2607 2016-10-23 10:33:38 32 收藏 在原有数据库的基础上再建立一个数据库 (先决条件:当当前虚拟内存不够用时,将现有数据库关闭:如果不关库,则需要增加虚 ...

  6. 2023ACP世界大赛中国总决赛|让世界再多一个微笑

    5月21日,正值第三十三次全国助残日,作为公益推行的一份子,恒利联创也呈现出了"仁者爱人"的文化内核. 恒利联创携手微笑明天慈善基金会合作同行,旨在推动公益,促进残疾人事业的全面发 ...

  7. uniapp的uni_modules目录需要提交到Git吗?为什么有了node_modules,还需要再发明一个uni_modules的轮子?node_modules和uni_modules的区别

    需要提交. 官网: uni_modules | uni-app官网https://uniapp.dcloud.net.cn/plugin/uni_modules.html 什么是 uni_module ...

  8. SAP WM 如何看一个交货单相关的TO是从哪些货架上拣配的?

    SAP WM 如何看一个交货单相关的TO是从哪些货架上拣配的? 如下交货单2112282143,需要从多个不同的货架上拣配4个HU下来, 如果要以列表形式显示这些HU是从哪些仓位上拣配的,如何做? 输 ...

  9. SAP HUM LT27可以看一个HU相关的TO单历史

    SAP HUM LT27可以看一个HU相关的TO单历史 比如对于HU#150382461100031524,我们想知道它在哪些TO单里出现过,有过哪些货架移动历史记录. 执行事务代码LT27,进入如下 ...

最新文章

  1. 【转】利用WCF的双工通信
  2. 【Python】如何用python做一个简单的输入输出交互界面?
  3. windows 反弹shell_容器内反弹shell的51种姿势
  4. Maven构建项目 — 知识点梳理
  5. Python+pandas统计每个学生学习慕课总时长
  6. PHP消息通信机制测试代码
  7. 六星经典CSAPP-笔记(7)加载与链接(上)
  8. smarty编译,缓存原理
  9. spine骨骼动画基础一文通
  10. bt5重启网卡命令_BackTrack5(BT5)安装教程及BT5支持网卡列表
  11. 无线网Wifi和WLAN的区别
  12. matlab 三角函数 和差化积,三角函数的和差化积公式
  13. python爬虫抖音音乐_Python爬虫帮你打包下载所有抖音好听的背景音乐,还不快收藏一起听歌-后台/架构/数据库-敏捷大拇指-一个敢保留真话的IT精英社区...
  14. matlab中调用simulink,MATLAB中的simulink是做什么的?说的通俗简单点 如何在matlab中打开simulink...
  15. 路由器下设置局域网电脑共享
  16. matlab 理想变压器,Simscape Electrical
  17. ZigBee-CC2530单片机 - 实现计算机串口通讯控制LED发光二极管
  18. camera中文版软件 ip_Synergy下载|Synergy 1.8.4 中文版
  19. 决策树算法实现:泰坦尼克号乘客生存预测 (python实现)
  20. 中科大校友一次意外事故,造就了让3000万人摘掉眼镜的手术

热门文章

  1. [2021.8纪中集训Day14]
  2. Leveraging Stereo-Camera Data for Real-Time Dynamic Obstacle Detection and Tracking
  3. Vue后台管理系统项目——实现登录功能
  4. 基于android的即时通讯APP 聊天APP
  5. html.append清空,关于jquery的append()和html()使用
  6. 石家庄地铁查询双人项目进度总结
  7. android animator 动画
  8. 图片优化技巧,如何做好SEO图片优化?
  9. 人工势场算法 Matlab版源码
  10. 吉林师范计算机考研真题,2021年吉林师范大学历年考研真题各专业汇总