grid-filter.php
上传用户:dawnssy
上传日期:2022-08-06
资源大小:9345k
文件大小:3k
源码类别:

JavaScript

开发平台:

JavaScript

  1. <?php
  2. // database connection settings
  3. $server   = 'localhost';
  4. $username = 'demo';
  5. $password = '';
  6. $database = 'demo'; // 'gridfiltersdemo' in sample sql
  7. // connect to database
  8. mysql_pconnect($server, $username, $password) or die("Could not connect");
  9. mysql_select_db($database) or die("Could not select database");
  10. // collect request parameters
  11. $start  = isset($_REQUEST['start'])  ? $_REQUEST['start']  :  0;
  12. $count  = isset($_REQUEST['limit'])  ? $_REQUEST['limit']  : 20;
  13. $sort   = isset($_REQUEST['sort'])   ? $_REQUEST['sort']   : '';
  14. $dir    = isset($_REQUEST['dir'])    ? $_REQUEST['dir']    : 'ASC';
  15. $filters = isset($_REQUEST['filter']) ? $_REQUEST['filter'] : null;
  16. // GridFilters sends filters as an Array if not json encoded
  17. if (is_array($filters)) {
  18.     $encoded = false;
  19. } else {
  20.     $encoded = true;
  21.     $filters = json_decode($filters);
  22. }
  23. // initialize variables
  24. $where = ' 0 = 0 ';
  25. $qs = '';
  26. // loop through filters sent by client
  27. if (is_array($filters)) {
  28.     for ($i=0;$i<count($filters);$i++){
  29.         $filter = $filters[$i];
  30.         // assign filter data (location depends if encoded or not)
  31.         if ($encoded) {
  32.             $field = $filter->field;
  33.             $value = $filter->value;
  34.             $compare = isset($filter->comparison) ? $filter->comparison : null;
  35.             $filterType = $filter->type;
  36.         } else {
  37.             $field = $filter['field'];
  38.             $value = $filter['data']['value'];
  39.             $compare = isset($filter['data']['comparison']) ? $filter['data']['comparison'] : null;
  40.             $filterType = $filter['data']['type'];
  41.         }
  42.         switch($filterType){
  43.             case 'string' : $qs .= " AND ".$field." LIKE '%".$value."%'"; Break;
  44.             case 'list' :
  45.                 if (strstr($value,',')){
  46.                     $fi = explode(',',$value);
  47.                     for ($q=0;$q<count($fi);$q++){
  48.                         $fi[$q] = "'".$fi[$q]."'";
  49.                     }
  50.                     $value = implode(',',$fi);
  51.                     $qs .= " AND ".$field." IN (".$value.")";
  52.                 }else{
  53.                     $qs .= " AND ".$field." = '".$value."'";
  54.                 }
  55.             Break;
  56.             case 'boolean' : $qs .= " AND ".$field." = ".($value); Break;
  57.             case 'numeric' :
  58.                 switch ($compare) {
  59.                     case 'eq' : $qs .= " AND ".$field." = ".$value; Break;
  60.                     case 'lt' : $qs .= " AND ".$field." < ".$value; Break;
  61.                     case 'gt' : $qs .= " AND ".$field." > ".$value; Break;
  62.                 }
  63.             Break;
  64.             case 'date' :
  65.                 switch ($compare) {
  66.                     case 'eq' : $qs .= " AND ".$field." = '".date('Y-m-d',strtotime($value))."'"; Break;
  67.                     case 'lt' : $qs .= " AND ".$field." < '".date('Y-m-d',strtotime($value))."'"; Break;
  68.                     case 'gt' : $qs .= " AND ".$field." > '".date('Y-m-d',strtotime($value))."'"; Break;
  69.                 }
  70.             Break;
  71.         }
  72.     }
  73.     $where .= $qs;
  74. }
  75. // query the database
  76. $query = "SELECT * FROM demo WHERE ".$where;
  77. if ($sort != "") {
  78.     $query .= " ORDER BY ".$sort." ".$dir;
  79. }
  80. $query .= " LIMIT ".$start.",".$count;
  81. $rs = mysql_query($query);
  82. $total = mysql_query("SELECT COUNT(id) FROM demo WHERE ".$where);
  83. $total = mysql_result($total, 0, 0);
  84. $arr = array();
  85. while($obj = mysql_fetch_object($rs)) {
  86.     $arr[] = $obj;
  87. }
  88. // return response to client
  89. echo '{"total":"'.$total.'","data":'.json_encode($arr).'}';