dzadsod/include/class/tabledata.class.php

112 lines
4.3 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
# MetInfo Enterprise Content Management System
# Copyright (C) MetInfo Co.,Ltd (http://www.metinfo.cn). All rights reserved.
defined('IN_MET') or exit('No permission');
/**
* 表格数据获取类
* @param array $rearray 表格数组返回数组
*/
class tabledata {
protected $rearray;
public $error;
/**
* 获取表查询数据
* @param string $table 表名
* @param string $field 表字段
* @param string $where where条件
* @param string $order order by条件
* @param string $sql 自定义SQL语句
* @return array 查询数据
*/
public function getdata($table, $field = '*', $where = '', $order = '', $sql = '',$multi_table = false) {
global $_M;
//dump( $_M['form']);
/* 获取表格ajax传递的参数 */
$length = $_M['form']['length']; //每页显示数量
$start = $_M['form']['start']; //读取数据的起点
$draw = $_M['form']['draw']; //累计执行次数,无作用但必须回传
// if($_M['form']['tablepage_json']&&$start==0&&$draw!=1){
// $cook = explode("|",$_M['form']['tablepage_json']) ;
// $u = "{$_M['form']['n']},{$_M['form']['c']},{$_M['form']['a']}";
// if($cook[1]==$u){
// $start = $cook[0]*$_M['form']['length'];
// }
// }else{
// met_setcookie('tablepage_json', $_M['form']['start']/$_M['form']['length']."|{$_M['form']['n']},{$_M['form']['c']},{$_M['form']['a']}");
// }
if (!$sql) {
/* 查询表 */
if ($where) {
$conds .= " WHERE {$where} ";
}
if ($order) {
$conds .= " ORDER BY {$order} ";
}
//整理查询条件
$query = "SELECT {$field} FROM {$table} {$conds} LIMIT {$start},{$length}"; //mysql语句
$array = DB::get_all($query); //执行查询,获得数组
$error = DB::error();
if ($error) {
$this->error = $query . "<br />" . $error;
} else {
$this->error = '';
}
$total = DB::counter($table, $conds, '*'); //获取总数量,计算总页数
} else {
//用来解决sql语句复杂的情况下 无法正确计算总条数的BUG
$query = $sql . " LIMIT {$start},{$length}";
$array = DB::get_all($query);
$error = DB::error();
$this->error = $error?$query . "<br />" . $error:0;
//总数
$where = trim($where);
if (strtolower(substr($where, 0, 5)) != 'where' && $where) $where = "WHERE " . $where;
$countsql = " SELECT COUNT(*) FROM {$table} {$where} ";
if($multi_table) $countsql = " SELECT count(*) FROM ($sql) num ";
$result = DB::query($countsql);
$fetch_row = DB::fetch_row($result);
$total = $fetch_row[0];
}
/* 回传数组处理 */
$this->rarray = array();
$this->rarray['draw'] = $draw; //回传执行次数
$this->rarray['recordsTotal'] = $total; //回传总数量
$this->rarray['recordsFiltered'] = $total; //回传筛选过的总数量,暂无作用,但必须回传
// if(class_exists('admin') || class_exists('app')){
$this->rarray['sql'] = $query; //返回sql语句
$this->rarray['array'] = $array; //返回sql语句
$this->rarray['form'] = $_M['form']; //返回sql语句
$this->rarray['sqlse'] = $sql; //返回sql语句
$this->rarray['sqltotal'] = $countsql; //返回sql语句
// }
return $array;
}
/**
* 把处理后的数组已json方式输出到页面上供AJAX读取。
* @param array $rdata 需要转成json的数组
*/
public function rdata($rdata) {
if ($rdata) {
$this->rarray['data'] = $rdata;
} else {
$this->rarray['data'][''] = '';
}
jsoncallback($this->rarray); //回传json格式
}
}
# This program is an open source system, commercial use, please consciously to purchase commercial license.
# Copyright (C) MetInfo Co., Ltd. (http://www.metinfo.cn). All rights reserved.
?>