下拉列表多级联动dropDownList示例代码


Posted in PHP onJune 27, 2013

视图:
cdnauto/views/config/index.php

echo CHtml::dropDownList('node', '', CHtml::listData(Node::model()->findAll(),'name','name'),array('empty'=>'--请选择节点--', 
'id' => 'node', 
'ajax'=>array( 
'type'=>'POST', 
'url'=>Yii::app()->createUrl('cdnauto/config/getNodeServersByNodeName'), 
'update'=>'#servers', 
'data'=>array('node_name'=>'js:$("#node").val()'), 
) 
) 
); 
echo "        "; 
echo CHtml::dropDownList('servers', '', array('--请选择服务器--'));

控制器:
cdnauto/controllers/ConfigController.php
public function actionGetNodeServersByNodeName(){ 
// if(!Yii::app()->request->isAjaxRequest) 
// throw new CHttpException(404); 
$node_name = $_POST['node_name']; 
$nodeid = Node::model()->getNodeId($_POST['node_name']); //通过节点名称获取该节点ID 
$server = GossServer::model()->getServerByNodeid($nodeid); //通过节点ID获取服务器信息 
//$server 为array类型,形如 $server = array(array('name'=>'name1'),array('name'=>'name2'));所以需要两次foreach 
if(isset($server)){ 
foreach ($server as $k=>$v){ 
foreach($v as $kk => $vv){ 
echo CHtml::tag('option', array('value'=>$kk), CHtml::encode($vv), true); 
} 
} 
}else{ 
echo CHtml::tag('option', array('value'=>''), 'servers', true); 
} 
}

模型:
GossServer.php
/** 
* 通过节点ID获取该节点下所有的服务器名称 
* @author ysdaniel 
*/ 
public static function getServerByNodeid($nodeid) 
{ 
$sql = "SELECT name FROM OSS_Server WHERE nodeid = '{$nodeid}' "; 
///$sql = "SELECT name,nodeid FROM OSS_Server WHERE nodeid = '{$nodeid}' "; //both ok 
$cmd = Yii::app()->db->createCommand($sql); 
$ret = $cmd->queryAll(); 
if (!$ret){ 
throw new Exception("找不到这个节点对应的服务器"); 
} 
return $ret; 
}

Node.php
/** 
* 通过nodename获取nodeid名 
* @author 
*/ 
public static function getNodeId($name) 
{ 
$sql = "SELECT id FROM OSS_Node WHERE name = '{$name}'"; 
$cmd = Yii::app()->db->createCommand($sql); 
$ret = $cmd->queryAll(); 
if (!$ret){ 
return null; 
//throw new Exception("找不到Node{$name}"); 
} 
return $ret[0]['id']; 
}

其它:
数据表结构
效果:
没有选择节点前:
下拉列表多级联动dropDownList示例代码 
细节有空再补上了。
PHP 相关文章推荐
php获得当前的脚本网址
Dec 10 PHP
discuz论坛 用户登录 后台程序代码
Nov 27 PHP
php学习之 认清变量的作用范围
Jan 26 PHP
php并发对MYSQL造成压力的解决方法
Feb 21 PHP
PHP面向对象教程之自定义类
Jun 10 PHP
PHP中ini_set与ini_get用法实例
Nov 04 PHP
php定义一个参数带有默认值的函数实例分析
Mar 16 PHP
fckeditor上传文件按日期存放及重命名方法
May 22 PHP
PHP查看当前变量类型的方法
Jul 31 PHP
thinkphp3.x中display方法及show方法的用法实例
May 19 PHP
php正则修正符用法实例详解
Dec 29 PHP
php远程请求CURL实例教程(爬虫、保存登录状态)
Dec 10 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
Jun 27 #PHP
PHP数组排序函数合集 以及它们之间的联系分析
Jun 27 #PHP
解析file_get_contents模仿浏览器头(user_agent)获取数据
Jun 27 #PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
Jun 27 #PHP
浅析php中抽象类和接口的概念以及区别
Jun 27 #PHP
领悟php接口中interface存在的意义
Jun 27 #PHP
CURL状态码列表(详细)
Jun 27 #PHP
You might like
缅甸的咖啡简史
2021/03/04 咖啡文化
php discuz 主题表和回帖表的设计
2009/03/13 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
2014/03/18 PHP
php动态生成函数示例
2014/03/21 PHP
php批量删除数据库下指定前缀的表以prefix_为例
2014/08/24 PHP
codeigniter中实现一次性加载多个view的方法
2015/03/20 PHP
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
php注册登录系统简化版
2020/12/28 PHP
php实现当前页面点击下载文件的简单方法
2016/09/22 PHP
Laravel 的数据库迁移的方法
2017/07/31 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
实现变速回到顶部的JavaScript代码
2011/05/09 Javascript
最好用的省市二级联动 原生js实现你值得拥有
2013/09/22 Javascript
Firefox和IE兼容性问题及解决方法总结
2013/10/08 Javascript
js 弹出框只弹一次(二次修改之后的)
2013/11/26 Javascript
基于jquery实现全屏滚动效果
2015/11/26 Javascript
JS+CSS实现滚动数字时钟效果
2017/12/25 Javascript
轻量级JS Cookie插件js-cookie的使用方法
2018/03/22 Javascript
jQuery实现的上传图片本地预览效果简单示例
2018/03/29 jQuery
element-ui循环显示radio控件信息的方法
2018/08/24 Javascript
vue+Element实现搜索关键字高亮功能
2019/05/28 Javascript
javascript中的this作用域详解
2019/07/15 Javascript
Nodejs实现WebSocket代码实例
2020/05/19 NodeJs
Python的网络编程库Gevent的安装及使用技巧
2016/06/24 Python
简单了解python单例模式的几种写法
2019/07/01 Python
Python txt文件如何转换成字典
2020/11/03 Python
Django视图类型总结
2021/02/17 Python
台湾最大银发乐活百货:乐龄网
2018/05/21 全球购物
文员岗位职责
2013/11/09 职场文书
幼儿园元旦家长感言
2014/02/27 职场文书
房产买卖委托公证书
2014/04/04 职场文书
团结就是力量演讲稿
2014/05/21 职场文书
我的梦想演讲稿500字
2014/08/21 职场文书
我的法兰西岁月观后感
2015/06/09 职场文书
青春雷锋观后感
2015/06/10 职场文书
Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解
2022/03/21 Java/Android