免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6534 | 回复: 2
打印 上一主题 下一主题

PHP如何处理jqGrid发过来的复合查询Json条件? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-05-10 22:26 |只看该作者 |倒序浏览
官方demo里只有一个$where变量,可怎么组合成这个串没有讲。现在需要把传过来的json串
filters:

{"groupOp":"OR","rules":[{"field":"area","op":"eq","data":"石家庄"},{"field":"vlanid","op":"eq","data":"4023"},{"field":"vlanid","op":"eq","data":"4024"}],"groups":[{"groupOp":"AND","rules":[{"field":"area","op":"eq","data":"石家庄"},{"field":"vlanyewu","op":"eq","data":" "}],"groups":[]}]}

转化为:
((area = "石家庄" AND vlanyewu = " ") OR area = "石家庄" OR vlanid = "4023" OR vlanid = "4024")
这样就可以放到查询条件里。

论坛徽章:
0
2 [报告]
发表于 2014-05-11 14:21 |只看该作者
本帖最后由 huowz 于 2014-05-11 14:30 编辑

已解决!参考这里:http://bbs.phpchina.com/forum.ph ... p;page=1#pid1614618
美中不足就是还不能处理带括号的情况,继续研究。

  1.      function _makeCondition($field, $oper, $string){
  2.             $condition="";
  3.               switch ($oper){
  4.                  case "eq":
  5.                     $condition=$field . " " . "=" . " " . "'" . $string . "'";
  6.                  break;
  7.                  case "ne":
  8.                     $condition=$field . " " . "<>" . " " . "'" . $string . "'";
  9.                  break;
  10.                  case "lt":
  11.                     $condition=$field . " " . "<" . " " . "'" . $string . "'";
  12.                  break;
  13.                  case "le":
  14.                     $condition=$field . " " . "<=" . " " . "'" . $string . "'";
  15.                  break;
  16.                  case "gt":
  17.                     $condition=$field . " " . ">" . " " . "'" . $string . "'";
  18.                  break;
  19.                  case "ge":
  20.                     $condition=$field . " " . ">=" . " " . "'" . $string . "'";
  21.                  break;           
  22.                  case "bw":
  23.                   $condition="$field"." ". "like ". "'".$string ."%'";
  24.                   break;
  25.                  case "ew":
  26.                   $condition="$field"." ". "like "."'%". $string . "'";
  27.                   break;
  28.                  case "cn":
  29.                    $condition="$field"." ". "like "."'%". $string ."%'";
  30.                    break;
  31.                   default:
  32.                     $condition=$field . " " . $oper . " " . "'" . $string . "'";
  33.                     break;
  34.               }
  35.         return $condition;      
  36.     }  

  37.            $filters = json_decode($_REQUEST['filters'], true);
  38.            $operation = $filters['groupOp'];      
  39.            $rules = $filters['rules'];
  40.            print_r($rules);
  41.            foreach ($rules as $rule) {
  42.               $field=$rule['field'];
  43.               $op=$rule['op'];
  44.               $data=iconv('utf-8', 'gb2312', $rule['data']);
  45.               $condition=_makeCondition($field,$op,$data);
  46.               if($where){
  47.                 $where=$where.' '.$operation.' '.$condition;
  48.               }else{
  49.                 $where=$condition;
  50.               }//end $rules if        
  51.            }//end $rules foreach
复制代码

论坛徽章:
0
3 [报告]
发表于 2014-05-23 19:38 |只看该作者
8错啊,楼主...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP