QQ咨询 官方微信

添加微信好友

官方小程序

百度小程序

微信小程序

头条小程序

关于我们

PHPCMS

phpcms筛选字段增加多选情况

 admin  2022-08-23 19:10:36
网上搜到的教程,基本都是搜索单选字段的,所以并没有处理多选的情况,改造方式为:找到structure_filters_sql方法:
原始的代码是:
  1. function structure_filters_sql($modelid) {   
  2.     $sql = $fieldname = $min = $max = '';   
  3.     $fieldvalue = array();   
  4.     $modelid = intval($modelid);   
  5.     $model =  getcache('model','commons');   
  6.     $fields = getcache('model_field_'.$modelid,'model');   
  7.     $fields_key = array_keys($fields);   
  8.     //TODO   
  9.     $sql = '`status` = \'99\'';   
  10.     foreach ($_GET as $k=>$r) {   
  11.         if(in_array($k,$fields_key) && intval($r)!=0 && ($fields[$k]['filtertype'] || $fields[$k]['rangetype'])) {   
  12.             if($fields[$k]['formtype'] == 'linkage') {   
  13.                 $datas = getcache($fields[$k]['linkageid'],'linkage');   
  14.                 $infos = $datas['data'];   
  15.                 if($infos[$r]['arrchildid']) {   
  16.                     $sql .=  ' AND `'.$k.'` in('.$infos[$r]['arrchildid'].')';   
  17.                 }   
  18.             } elseif($fields[$k]['rangetype']) {   
  19.                 if(is_numeric($r)) {   
  20.                     $sql .=" AND `$k` = '$r'";   
  21.                 } else {   
  22.                     $fieldvalue = explode('_',$r);   
  23.                     $min = intval($fieldvalue[0]);   
  24.                     $max = $fieldvalue[1] ? intval($fieldvalue[1]) : 999999;   
  25.                     $sql .=" AND `$k` >= '$min' AND  `$k` < '$max'";   
  26.                 }   
  27.             } else {   
  28.                 $sql .=" AND `$k` = '$r'";   
  29.             }   
  30.         }   
  31.     }   
  32.     return $sql;   
  33. }   
改成:
  1. function structure_filters_sql($modelid) {   
  2.     $sql = $fieldname = $min = $max = '';   
  3.     $fieldvalue = array();   
  4.     $modelid = intval($modelid);   
  5.     $model =  getcache('model','commons');   
  6.     $fields = getcache('model_field_'.$modelid,'model');   
  7.     $fields_key = array_keys($fields);   
  8.     //TODO   
  9.     $sql = '`status` = \'99\'';   
  10.     foreach ($_GET as $k=>$r) {   
  11.         if(in_array($k,$fields_key) && intval($r)!=0 && ($fields[$k]['filtertype'] || $fields[$k]['rangetype'])) { 
  12.             if($fields[$k]['formtype'] == 'linkage') {   
  13.                 $datas = getcache($fields[$k]['linkageid'],'linkage');   
  14.                 $infos = $datas['data'];   
  15.                 if($infos[$r]['arrchildid']) {   
  16.                     $sql .=  ' AND `'.$k.'` in('.$infos[$r]['arrchildid'].')';   
  17.                 }   
  18.             } elseif($fields[$k]['rangetype']) {   
  19.                 if(is_numeric($r)) {   
  20.                     $sql .=" AND `$k` = '$r'";   
  21.                 } else {   
  22.                     $fieldvalue = explode('_',$r);   
  23.                     $min = intval($fieldvalue[0]);   
  24.                     $max = $fieldvalue[1] ? intval($fieldvalue[1]) : 999999;   
  25.                     $sql .=" AND `$k` >= '$min' AND  `$k` < '$max'";   
  26.                 }   
  27.             }elseif($fields[$k]['boxtype']=='checkbox' || $fields[$k]['boxtype']=='multiple') { 
  28.                 $r = ','.trim($r,',').','; 
  29.                 $sql .=" AND `$k` LIKE '%$r%'";   
  30.             } else {   
  31.                 $sql .=" AND `$k` = '$r'";   
  32.             }   
  33.         }   
  34.     }   
  35.     return $sql;   
  36. }   
代码中红字部分即为新增代码



¥ 打赏
×
如果您觉得文章帮助了您就打赏一下吧
非常感谢你的打赏,我们将继续分享更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

本文《phpcms筛选字段增加多选情况》发布于石头博客文章,作者:admin,如若转载,请注明出处:https://www.pweb123.com/cms/phpcms/898.html,否则禁止转载,谢谢配合!

文章点评

我来说两句 已有0条评论
点击图片更换

添加微信好友

添加微信好友

微信小程序

百度小程序