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. Java中private、protected、public和default的区别

    public: 具有最大的访问权限,可以访问任何一个在classpath下的类.接口.异常等.它往往用于对外的情况,也就是对象或类对外的一种接口的形式. protected: 主要的作用就是用来保护子 ...

  2. Javascript提交表单

    <form action="login.do?act=login" method="post"> <input type="subm ...

  3. Redis五种数据结构简介

    Redis五种结构 1.String 可以是字符串,整数或者浮点数,对整个字符串或者字符串中的一部分执行操作,对整个整数或者浮点执行自增(increment)或者自减(decrement)操作. 字符 ...

  4. Python环境配置安装

    2016年12月20日14:15:23 -------------- 参考菜鸟教程: Python 环境搭建 | 菜鸟教程  http://www.runoob.com/python/python-i ...

  5. gdb可以调试python的pdb么

    1.如题: gdb可以调试python的pdb么? 答案:可以,实验如下. 2.实验: 生成一个a.py代码文件,代码如下: import pdb a = 1 print "111" ...

  6. Think twice before doing~

    1.遇到任何矛盾,对事不对人. 2.接到朋友等人的求助电话后,一定要先问清楚对方有什么事情,然后再告诉他(她)能不能帮她(他). 3.如果没有十足的把握和必要,就不要轻易说假话. 4.少提自己的私事, ...

  7. 使用vlc播放器做rtsp流媒体服务器

    可参考: 使用vlc播放器播放rtsp视频 web网页中使用vlc插件播放相机rtsp流视频 使用vlc进行二次开发做自己的播放器 首先需要安装vlc播放器,下载及安装步骤略 使用vlc播放器做rts ...

  8. psutil 模块

    psutil.pids()查看单个进程p = psutil.Process(2423) p.name()   #进程名p.exe()    #进程的bin路径p.cwd()    #进程的工作目录绝对 ...

  9. struts2 spring mybatis 整合(test)

    这几天搭了个spring+struts2+mybatis的架子,练练手,顺便熟悉熟悉struts2. 环境:myEclipse10+tomcat7+jdk1.6(1.8的jre报错,所以换成了1.6) ...

  10. uboot 第三天学习

    make jCPU_NUM 以CPU_NUM数量同时进行编译CPU_NUM = 当前PC的处理器数量*处理器的核心数 从上电开始1.系统上电,执行固化在IROM中的代码,目的初始化基本的系统功能,已经 ...