ホームページ >バックエンド開発 >PHPチュートリアル >PHPドロップダウンリストのマルチレベル連携dropDownListのサンプルコード

PHPドロップダウンリストのマルチレベル連携dropDownListのサンプルコード

怪我咯
怪我咯オリジナル
2017-07-12 15:45:412456ブラウズ

DropDownList コントロールは、ドロップダウン リスト ボックス コントロールとも呼ばれます。コントロール リスト内の複数行のデータは、ユーザーが「下の三角形」グラフィックをクリックすることで、暗黙的な形式で表現されます。表示された後、ユーザーはデータ項目を選択するだけで済みます。 DropDownList コントロールは実際にはリスト項目のコンテナであり、ドロップダウン リスト ボックスは Items コレクションを使用して各項目の内容を表します。 ASPの場合。 NET ページで、DropDownList コントロールの列とテーブル オプションを 1 つずつ手動で入力する場合、リスト項目が多数ある場合、変更するのはさらに面倒で面倒になります。 DropDownList コントロールはデータベースに動的に接続され、指定された条件に従ってデータベースからリスト オプション データをクエリし、それをコントロールにバインドします。これにより、複数のドロップダウン オプションを迅速かつ簡単に表示できます。 同時に、データベース内のデータを変更することで、ドロップダウン オプションを動的に変更できます。たとえば、講師選択システムでは、大学院生の講師が応募情報を入力するときに応募タイプを選択する必要があり、同じ情報が複数のページに表示されます。データベース内の応募タイプ テーブルのデータをバインドします。 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('--请选择服务器--'));

コントローラー

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

その他

: データテーブル構造 効果:
ノードが選択されない前:


以上がPHPドロップダウンリストのマルチレベル連携dropDownListのサンプルコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。