>  기사  >  백엔드 개발  >  PHP 드롭다운 목록 다단계 연결 dropDownList 샘플 코드

PHP 드롭다운 목록 다단계 연결 dropDownList 샘플 코드

怪我咯
怪我咯원래의
2017-07-12 15:45:412416검색

DropDownList 컨트롤은 드롭다운 목록 상자 컨트롤이라고도 합니다. 컨트롤 목록의 여러 줄 데이터는 사용자가 원하는 목록 항목을 선택해야 할 때 "아래쪽 삼각형" 그래픽을 클릭하여 암시적으로 표현됩니다. 표시하려면 사용자는 데이터 항목만 선택할 수 있습니다. DropDownList 컨트롤은 실제로 목록 항목의 컨테이너이며 드롭다운 목록 상자는 Items 컬렉션을 사용하여 각 항목의 내용을 나타냅니다. ASP에 있는 경우. NET 페이지에서는 DropDownList 컨트롤의 열과 테이블 옵션을 하나씩 수동으로 입력합니다. 목록 항목이 많으면 수정하기가 더 번거롭고 번거롭습니다. DropDownList 컨트롤은 데이터베이스에 동적으로 연결되고 지정된 조건에 따라 데이터베이스에서 목록 옵션 데이터를 쿼리한 다음 이를 컨트롤에 바인딩하므로 여러 드롭다운 옵션을 빠르고 쉽게 표시할 수 있습니다. 동시에 데이터베이스의 데이터를 수정하여 드롭다운 옵션을 동적으로 변경할 수 있습니다. 예를 들어, 튜터 선택 시스템에서 졸업생 튜터가 지원 정보를 입력할 때 지원 유형을 선택해야 하는데, 동일한 정보가 데이터베이스에 있는 지원 유형 테이블의 data를 바인딩합니다. DropDownList 컨트롤을 사용하여 좋은 문제 해결을 비교합니다. 이 글에서는

드롭다운 목록

다단계 연결 dropDownListView의 구체적인 구현 코드를 소개합니다.

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('--请选择服务器--'));

Controller

: 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); 
} 
}

Model:

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']; 
}

Others

: 데이터 테이블 구조효과:
노드가 선택되지 않기 전 :


위 내용은 PHP 드롭다운 목록 다단계 연결 dropDownList 샘플 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.