求教用TP做类似淘宝那种多级筛选用if语句控制发现传一两个字段还好控制,传三个字段以上就不好控制了,筛选出来的数据就不对了。有什么好的方法吗?

东风破1994 2015-07-07 12:00:02

//多级筛选

$name=$_GET[pid];
$brand=$_GET[theme];
$carage=$_GET[price];
echo $carage;


if($name="泵车" AND $brand="三一"){
$handmebuyinfo=M("handmebuyinfo");
$map['name']=$name;
$map['brand']=$brand;
//$map['carage']=$carage;
$row=$handmebuyinfo->where($map)->select();
dump($row);
}

if($name=='' OR $brand=='' OR $carage==''){
$handmebuyinfo=M("handmebuyinfo");
$map['name']=$name;
$map['brand']=$brand;
$map['carage']=$carage;
$map['_logic'] = 'OR';
$row=$handmebuyinfo->where($map)->select();
dump($row);
}

...全文
157 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
东风破1994 2015-07-07
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
你的这种筛选是 与(and)关系 如果组内有多选的话,那么组内才是 或(or)关系,比如同时选中 泵车 和 搅拌车 不过你目前并无此需求 你使用了 ORM,所以拼装工作是由 ORM 完成的 你只需要保证不向其传递空参数就可以 $_GET = array_diff($_GET, array('')); 最好传入的变量名与对应字段同名,这样就不需要编程对应数据了 好像 TP 用个名称映射功能,可以用一下
比较数组里的差集有点明白了,能给个例子让我看看吗?
xuzuning 2015-07-07
  • 打赏
  • 举报
回复
你的这种筛选是 与(and)关系 如果组内有多选的话,那么组内才是 或(or)关系,比如同时选中 泵车 和 搅拌车 不过你目前并无此需求 你使用了 ORM,所以拼装工作是由 ORM 完成的 你只需要保证不向其传递空参数就可以 $_GET = array_diff($_GET, array('')); 最好传入的变量名与对应字段同名,这样就不需要编程对应数据了 好像 TP 用个名称映射功能,可以用一下
东风破1994 2015-07-07
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
$a = array(
  'a' => 1,
  'b' => '',
  'c' => 0,
);
print_r(array_diff($a, array('')));
print_r(array_diff($a, array('', 0)));
Array
(
    [a] => 1
    [c] => 0
)
Array
(
    [a] => 1
)

这样就不需要 if($name=='') 这样一个个判断了
总算搞出来了,一开始用 //$map['name']='Null'; //$map['brand']=$map[brand]; //$map['carage']=$map[carage]; $row=$handmebuyinfo->where($map)->select(); dump($row);快捷查询查询不出数据,原来是这里面值不允许为空,所以去掉这些直接赋值查询就没问题了。
xuzuning 2015-07-07
  • 打赏
  • 举报
回复
$a = array(
  'a' => 1,
  'b' => '',
  'c' => 0,
);
print_r(array_diff($a, array('')));
print_r(array_diff($a, array('', 0)));
Array
(
    [a] => 1
    [c] => 0
)
Array
(
    [a] => 1
)

这样就不需要 if($name=='') 这样一个个判断了

4,250

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧