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. AnjularJS系列4 —— 单个页面加载多个ng-App

    第四篇,插播, 单个页面加载多个ng-App 在写范例的时候发现的问题 一个页面有多个ng-app,angular只会处理第一个ng-app 需要加载两个ng-app,需要进行手动加载: angula ...

  2. php二维数组相同id的数量相加

    数组样式 $arr = array( array( , , , ), array( , , , ), array( , , , ), array( , , , ), ); 处理办法 $item=arr ...

  3. redis 常用命令

    临时启动:redis-server.exe redis.conf/redis-server redis.windows.conf安装Windows服务:redis-server.exe --servi ...

  4. 关于C中内存操作

     from:http://blog.csdn.net/shuaishuai80/article/details/6140979 malloc.calloc.realloc的区别 C Language ...

  5. eclipse设置快速提示符

    省掉废话,一个快速提示符真的能快速地提高编程效率. 下面介绍如何设置eclipse的快速提示符. 步骤如下: Windows --> preferences --> java --> ...

  6. [转]PhpStorm 超强语言模板的支持

    最近遇到一些PhpStorm编程的问题: 在使用Zen Coding插件时,PHPStorm不像Notepad++那样随便使用.PHPStorm只有在编辑识别为HTML的文件时才可以使用Zend Co ...

  7. codevs1002 搭桥

    题目描述 Description 有一矩形区域的城市中建筑了若干建筑物,如果某两个单元格有一个点相联系,则它们属于同一座建筑物.现在想在这些建筑物之间搭建一些桥梁,其中桥梁只能沿着矩形的方格的边沿搭建 ...

  8. 关于java中自增,自减,和拓展运算符的小讨论

    java中运算符很多,但是能深入讨论的不算太多.这里我仅仅以++,*=为例做讨论. 例:++ i=0; i=i++ + ++i;//i=1 i=++i+i++;//i=2 i=i++ -++i;//i ...

  9. rcu机制

    转载自:再谈Linux内核中的RCU机制-MagicBoy2010-ChinaUnix博客 http://blog.chinaunix.net/uid-23769728-id-3080134.html ...

  10. MySQL收藏

    MySQL手册:5.5手册 .5.6手册 cd /usr/local/mysql/bin mysql -uroot -p show processlist;   // 显示系统中正在运行的所有进程 M ...