我正在使用Yii框架,我想做一些搜索过滤,但在某些情况下我得到的结果如下:
我有2个复选框:加拿大和美国,如果我查看加拿大,我将只收到与加拿大相关的所有结果,而如果我检查美国,我将获得数据库中的所有结果,无论它与联合国有关状态与否,这个错误是绝对发生的,因为美国字符串是2部分所以它需要在引用中。这是我的代码:
视图页面:
echo '<div class="checkbox"><label>'.
CHtml::checkBox($m2->tag, false, array('value'=>"$m2->tag")).$m2->tag
.'</label></div>';
控制器:
$c = new CDbCriteria();
$c->order = "idJob DESC";
$model = Jobs::model()->findAll($c);
$model2 = Tags::model()->findAll();
$lcr = "";
$tag="";
foreach($model2 as $m2){
if(isset($_POST[$m2->tag])){
$tag = $_POST[$m2->tag];
if($m2->category=='Location')
$lcr[]= $tag;
}
}
if($lcr!="")
$c->addInCondition('location', $lcr, 'AND');
$model = Jobs::model()->findAll($c);
答案 0 :(得分:1)
好吧,听起来我发现了这个问题的解决方案并且它正常工作,这是解决方案:
在控制器中:
foreach($model2 as $m2){
if (strpos($m2->tag, ' ') !== FALSE)
$m2->tag = str_replace(" ","_",$m2->tag);
if(isset($_POST["$m2->tag"])){
....
因此,正如您在代码中看到的,如果tag
包含任何空格,它将被_
替换,而在HTML中,id属性将用{{1}替换空格自动,所以它们现在匹配。
答案 1 :(得分:0)
请检查代码中的以下代码,它将为您提供帮助
$criteria->addSearchCondition('location', 'YOUR SEARCH STRING', false);