Yii 1 实现后台搜索,效果如下:

一. 下拉搜索:

  1.模型中和常规的一样

             if (isset($_GET['agency']['status']) && $_GET['agency']['status'] != 0)
{
$criteria->compare('status',$_GET['agency']['status']); }

  2.控制器中,先确定下拉选项,用一个数组储存下拉列表

         //审核状态
$checkStatusList = array( "0"=>"请选择审核...","1"=>"等待审核","2"=>"审核通过","3"=>"审核未通过","4"=>"禁用" );

  3.视图中,用dropDownList调出数据

 <?php echo CHtml::dropDownList( "agency[status]" ,
$_GET['agency']['status'] ,
$checkStatusList ,
array( "class"=>"form-control" , "style"=>"width:140px") ); ?>

二.多个字段查询

  1.模型中

 //名称.电话.手机.联系人
if (isset($_GET['agency']['agency_name']) && $_GET['agency']['agency_name'] != "")
{
$params = array();
//b2c_agency表里的agency_name,tel,mobile,contacts和输入的数据(这里是agency_name)对比。
$columns = array( 'agency_name' , 'tel' , 'mobile' , 'contacts' );
$keyword ='%'.strtr($_GET['agency']['agency_name'],array('%'=>'\%', '_'=>'\_', '\\'=>'\\\\')).'%'; foreach( $columns as $key )
{
$params[] = $key.' LIKE '.CDbCriteria::PARAM_PREFIX.CDbCriteria::$paramCount;
$criteria->params[CDbCriteria::PARAM_PREFIX.CDbCriteria::$paramCount++] = $keyword;
} $criteria->addCondition(implode(" OR ",$params), 'AND' );
}

  因为直接用CDbCriteria的addSearchCondition方法不能实现,他生成的sql不能生成我们想要的,所以我们自己想办法实现应该有的sql语句,其中$params = array() 用来存like语句。$columns = array( 'agency_name' , 'tel' , 'mobile' , 'contacts' ); 存储表里要比对的字段。然后 $keyword ='%'.strtr($_GET['agency']['agency_name'],array('%'=>'\%', '_'=>'\_', '\\'=>'\\\\')).'%'; 中用$_GET['agency']['agency_name']得到用户输入到搜索框的值。最后$criteria->addCondition(implode(" OR ",$params), 'AND' ); 实现“AND”连接。

  2.视图中

 <div class="form-group">
<input
name="agency[agency_name]"
type="text"
class="form-control"
style="width:170px;"
placeholder = "名称/电话/手机/联系人"
value=<?php echo $_GET['agency']['agency_name'] ; ?>
>
</div>

三.关联表搜索

  1.模型中 

 //代理的注册账户
'userInfo' => array( self::BELONGS_TO , 'B2cUsers' , 'user_id' ),

  先再relations()方法添加关系,这个关系要自己确定。

  然后  

 //用户账号
if (isset($_GET['agency']['user_id']) && $_GET['agency']['user_id'] != "")
{
//关联(user表)查找
$criteria->with = array( 'userInfo' ); $params = array();
$columns = array( 'userInfo.user_name' , 'userInfo.user_id', 'userInfo.office_phone', 'userInfo.mobile_phone' );
$keyword ='%'.strtr($_GET['agency']['user_id'],array('%'=>'\%', '_'=>'\_', '\\'=>'\\\\')).'%'; foreach( $columns as $key )
{
$params[] = $key.' LIKE '.CDbCriteria::PARAM_PREFIX.CDbCriteria::$paramCount;
$criteria->params[CDbCriteria::PARAM_PREFIX.CDbCriteria::$paramCount++] = $keyword;
} $criteria->addCondition(implode(" OR ",$params), 'AND' );
}

  调用建立的表关系 //关联(user表)查找 $criteria->with = array( 'userInfo' ); ,其中$colums有所不同, $columns = array( 'userInfo.user_name' , 'userInfo.user_id', 'userInfo.office_phone', 'userInfo.mobile_phone' );

  2.视图中 

 <div class="form-group">
<input
name="agency[user_id]"
type="text"
class="form-control"
style="width:140px;"
placeholder = "用户账号"
value=<?php echo $_GET['agency']['user_id'] ; ?>
>
</div>

Yii 1开发日记 -- 后台搜索功能下拉及关联表搜索的更多相关文章

  1. 自定义SWT控件三之搜索功能下拉框

    3.搜索功能下拉弹出框 package com.view.control.select; import java.util.ArrayList; import java.util.LinkedList ...

  2. ios开发视频播放后台下载功能实现 :1,ios播放视频 ,包含基于AVPlayer播放器,2,实现下载,iOS后台下载(多任务同时下载,单任务下载,下载进度,下载百分比,文件大小,下载状态)(真机调试功能正常)

    ABBPlayerKit ios开发视频播放后台下载功能实现 : 代码下载地址:https://github.com/niexiaobo/ABBPlayerKit github资料学习和下载地址:ht ...

  3. Ajax跨域:Jsonp实例--百度搜索框下拉提示

    Ajax跨域:Jsonp实例--百度搜索框下拉提示 一.总结 一句话总结:a.找好接口:b.用script标签的src引入文件(json数据):c.定义及实现上一步引入文件中的函数 1.如何找到一个网 ...

  4. Yii 1开发日记 -- 搜索功能及Checkbox的实现

    用yii 1实现后台的搜索功能,效果如下图: 1.模型中: public function search() { $criteria = new CDbCriteria; //独立高级搜索 if(is ...

  5. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 辅助类:显示下拉式功能

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  6. Android搜索功能的案例,本地保存搜索历史记录......

    开发的APP有一个搜索功能,并且需要显示搜索的历史记录,我闲暇之余帮她开发了这个功能,现把该页面抽取成一个demo分享给大家. 实现效果如图所示:  本案例实现起来很简单,所以可以直接拿来嵌入项目中使 ...

  7. jqGrid的搜索框下拉

    当需要在jqGrid的搜索框里配置搜索条件时,如下拉,日期等,代码如下: datePick = function(elem) { jQuery(elem). } colNames : [ " ...

  8. Yii CGridView 关联表搜索排序实例

    在这篇文章中,我准备讲解如何在CGridView中搜索或者排序关联表中的某一行,通过给Yii Blog demo添加一个list页面. 首先,检查你的blog demo里的protected\mode ...

  9. Web前端开发实战1:二级下拉式菜单之CSS实现

    二级下拉式菜单在各大学校站点.电商类站点.新闻类站点等大型?站点非经常见,那么它的实现原理是什么呢? 学习了Web前端开发的知识后,我们是能够实现这种功能的.复杂的都是从基础效果上加入做出来的.原理和 ...

随机推荐

  1. 生成GUID唯一值的方法汇总(dotnet/javascript/sqlserver)

    一.在 .NET 中生成1.直接用.NET Framework 提供的 Guid() 函数,此种方法使用非常广泛.GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的任何两台计 ...

  2. 深入理解JS的闭包

    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域 ...

  3. ubuntu右上角时间不显示

    重启unity sudo killall unity-panel-service

  4. Java Annotation概述

    @(Java)[Annotation|Java] Java Annotation概述 用途 编译器的相关信息,如用于检测错误和一些警告 编译时和部署时的处理,如一些软件用于自动生成代码之类的 运行时处 ...

  5. git rebase

    git rebase -i HEAD~[number_of_commits] git rebase -i HEAD~2

  6. ebay api接口开发基本步骤

    因公司项目需求,要进行ebay api开发,网上很多资料已过时,自己记录一下. 准备工作 一.注册账号 1开发者账号注册 https://developer.ebay.com/signin?retur ...

  7. JS 工具类

    之前工作用的JavaScript比较多,总结了一下工具类,和大家分享一下,有不足之处还请多多见谅!! 1. 数组工具类(arrayUtils) var arrayUtils = {}; (functi ...

  8. SQL拼接自己需要的字符串

    SQL行转列有多种写法,如果想把多行数据拼接成为新的一行,比如: 首先,将查询转为XML 替换XML的标签 将第一个字符,去掉试用 STUFF函数 sql STUFF用法 1.作用 删除指定长度的字符 ...

  9. bootstrap中popover.js(弹出框)使用总结+案例

    bootstrap中popover.js(弹出框)使用总结+案例 *转载请注明出处: 作者:willingtolove: http://www.cnblogs.com/willingtolove/p/ ...

  10. 2016百度之星 初赛2B ACEF

    做了1001 1003 1005 1006 看题:http://bestcoder.hdu.edu.cn/contests/contest_show.php?cid=702 交题:http://acm ...