下拉列表多级联动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容易被忽略而出错陷阱 数字与字符串比较
Nov 10 PHP
phpMyAdmin出现无法载入 mcrypt 扩展,请检查PHP配置的解决方法
Mar 26 PHP
php中time()和mktime()方法的区别
Sep 28 PHP
php限制上传文件类型并保存上传文件的方法
Mar 13 PHP
PHP MSSQL 分页实例
Apr 13 PHP
PHP中常用的数组操作方法笔记整理
May 16 PHP
thinkphp验证码的实现(form、ajax实现验证)
Jul 28 PHP
YII框架中使用memcache的方法详解
Aug 02 PHP
php+redis实现商城秒杀功能
Nov 19 PHP
PHP生成随机字符串实例代码(字母+数字)
Sep 11 PHP
PHP实现基本留言板功能原理与步骤详解
Mar 26 PHP
php让json_encode不自动转义斜杠“/”的方法
Apr 27 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
php 问卷调查结果统计
2015/10/08 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
jQuery选择器的工作原理和优化分析
2011/07/25 Javascript
JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性
2012/10/11 Javascript
关于火狐(firefox)及ie下event获取的两种方法
2012/12/27 Javascript
PHP abstract与interface之间的区别
2013/11/11 Javascript
使用javascript获取页面名称
2014/12/23 Javascript
javascript设计模式之中介者模式Mediator
2014/12/30 Javascript
JavaScript队列、优先队列与循环队列
2016/11/14 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
js实现文字向上轮播功能
2017/01/13 Javascript
js实现股票实时刷新数据案例
2017/05/14 Javascript
详解webpack分离css单独打包
2017/06/21 Javascript
详谈for循环里面的break和continue语句
2017/07/20 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
jQuery Ajax实现Select多级关联动态绑定数据的实例代码
2018/10/26 jQuery
使用react render props实现倒计时的示例代码
2018/12/06 Javascript
详解Node.js amqplib 连接 Rabbit MQ最佳实践
2019/01/24 Javascript
VSCode搭建Vue项目的方法
2020/04/30 Javascript
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
2020/07/09 Javascript
用js实现放大镜效果
2020/10/28 Javascript
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
python使用Tkinter显示网络图片的方法
2015/04/24 Python
Python处理Excel文件实例代码
2017/06/20 Python
python3 深浅copy对比详解
2019/08/12 Python
Python3 无重复字符的最长子串的实现
2019/10/08 Python
Html5实现iPhone开机界面示例代码
2013/06/30 HTML / CSS
moosejaw旗下的户外商品促销网站:Mountain Steals
2017/02/27 全球购物
优衣库美国官网:UNIQLO美国
2018/04/14 全球购物
英国奢侈品概念店:Base Blu
2019/05/16 全球购物
任命书范本大全
2014/06/06 职场文书
2014年党建工作汇报材料
2014/10/27 职场文书
2016年中学端午节主题活动总结
2016/04/01 职场文书
退休劳动合同怎么写?
2019/10/25 职场文书
python中的None与NULL用法说明
2021/05/25 Python
【海涛教你打DOTA】剑圣第一人称视角解说
2022/04/01 DOTA