大家好~大侠好~
目前在做搜索的时候,遇到一个问题,就是搜索条件为多选,如果写php的条件语句?
搜索页面地址是:http://chuju750.welafa.com/sell/search.php
在搜索条件“适用范围”那里,我做成了多选,如何写php语句使得可以实现多选搜索?
补充:适用范围的字段名称是:rangeme
php目前搜索条件区域写法:
if($rangeme) $condition .= " OR rangeme LIKE '%$rangeme%'";
现在问题就是这样写,不能实现正确的多选搜索结果。
请大侠帮忙一下~

解决方案 »

  1.   

    为什么要使用like呢 值都是明确的. 这样写应该可以把用or.
    还可以用sphinx
      

  2.   

    你表单中是这样写的
    <input type=checkbox name=rangeme value=school/> 学校
    于是同名的 rangeme 就将被覆盖了,不能取到正确的值
    要这样
    <input type=checkbox name=rangeme[] value=school/> 学校
    foreach($_POST['rangeme'] as $rangeme)
      $condition .= " OR rangeme LIKE '%$rangeme%'";
      

  3.   

    谢谢楼上热心的朋友。我可能没把情况介绍清楚。
    是这样的:
    1、“适用范围rangeme”是信息的一个字段,这个字段在用户发布信息的时候就设为多选;
    2、在搜索的时候,希望根据“适用范围rangeme”来筛选出相应的信息(这个信息不是在文章中,是信息的字段属性)
    我后台有一个定义了搜索页调用“适用范围rangeme”的表单函数,如下:function select_search_checkbox($name,$tb,$fid){
            global $db;
            $title="";
            $r = $db->get_one("SELECT option_value FROM {$db->pre}fields WHERE name='$name' and tb='$tb'");
            $option_value=loseSpace($r["option_value"]);
            $ps = split("\*", $option_value);
            #var_dump($matchs);
            foreach ($ps as $s){
            //以*分割1|可用*=> 1, 可用
             if(!$s){
            continue;
             }
             list($num,$word) = split("\|", $s);
             $result[$num] = $word;
            }         
            foreach($result as $n => $v)
            {
            if ($n==$fid){
             $title .=" <label><input type=checkbox name=".$name." value=".$n." checked/> ".$v."</label>&nbsp;&nbsp;";
            }
            else{
             $title .=" <label><input type=checkbox name=".$name." value=".$n."/> ".$v."</label>&nbsp;&nbsp;";
            }
            }
            return $title;
    }
    前台搜索页面使用如下代码调取出来表单(这里面用到了我的自己做的标签,大家可以忽略写法):
    {select_search_checkbox(rangeme,sell,$rangeme)}我搜索页面对应的php文件,添加了如下的搜索条件代码:
    if($rangeme) $condition .= " OR rangeme LIKE '%$rangeme%'"; 至此,问题就这样出来了,问题2点如下:
    1、在筛选的时候,点击复选框以后进行搜索,不能激活当前选项(没有checked标志)
    2、无法正确筛选出搜索结果。不知道以上我说明白了没?烦请大侠帮忙看看。我可以追加积分奖励!
      

  4.   

    1、在筛选的时候,点击复选框以后进行搜索,不能激活当前选项(没有checked标志)
    是因为重载搜索表单时你没有给 chechbox 加上 checked 属性2、无法正确筛选出搜索结果。
    这点我已在 #2 的回复中说了虽说 select_search_checkbox 函数是为了预置 checkbox 状态的
    但因为没有说明,无法理解 option_value 字段的含义和来源
    提交时的范围复选框是否被勾选,似乎与数据库预置数据无关吧?
      

  5.   

    同名的 checkbox 必须以数组方式命名,这不是我的方法,而是 php 的约定。
    只能照做,否则无法取得复选的数据