-
-
/* - 作成者: nick
- 関数: SeletTree の生成
- 属性:
- $result 結果セット
- $id_field 自身の ID フィールド
- $parent_field 親クラス ID フィールド
- $option_textオプションの表示名
- $select_name ドロップダウン メニューの名前
- $elected デフォルトで選択されています
- $no_top 最上位のオプションが必要かどうか
- $level レイヤの深さ
- $parent_id 同じレイヤ内の ID
- */
- class SelectTree{
- public $result;
- public $ select_name;
- public $option_text;
- public $elected;
- public $id_field;
- public $parent_field;
- public $no_top;
- public $level;
- public $parent_id;
- public $getarray;
- function __construct($result,$ id_field,$parent_field,$option_text,$select_name='',$elected=0,$no_top=0,$level=0,$parent_id=0){
- $this->result = $result;
- $this->id_field =$id_field;
- $this->parent_field =$parent_field;
- $this->option_text =$option_text;
- $this->select_name =$select_name;
- $this ->選択済み =$選択済み ;
- $this->no_top =$no_top;
- $this->level =$level;
- $this->parent_id =$parent_id;
- $this->getarray =self ::getArray();
- }
/*
- Function: ツリーの二次元配列を返す
- */
- function getArray(){
- $arrays=array();
- while($ row=mysql_fetch_array($this->result)){
- $arrays[$row[$this->parent_field]][$row[$this->id_field]]=$row;
- }
- return $arrays ;
- }
/*
- 関数: SelectTree を取得
- */
- function getSelectTree(){
- $tree = '
- if( $no_top){
- $tree .= '';
- }
- self::buildTree($this->getarray, &$tree,$this ->id_field,$this->option_text,$this->selected,$this->level,$this->parent_id); // ツリー構造を生成します
- $tree 。 = '
- return $tree;
- }
/*
- Function: ツリー構造を再帰的に構築します
- */
- function buildTree($array,&$tree, $option_value,$option_text, $selected,$level=0,$parent_id=0){
- if(is_array($array[$parent_id])){
- for($i=0;$i$space .= ' '; //オプションのインデントの深さ
- foreach($array[$parent_id] as $key => $value){
- if($value[$option_value] == $selected){
- $ツリー .= '< ;option value="'.$value[$option_value].'" selected="選択済み">'.$space.$value[$option_text]."";
- } else{
- $tree .= '";
- }
- $tree .=self ::buildTree($array,&$tree,$option_value,$option_text,$selected,$level+1,$key);
- }
- }else{
- $tree .= '';
- }
- }
- }< ;/p>
/*----------*/
- header("CONTENT-TYPE:TEXT/HTML;CHARSET=UTF-8");
- mysql_connect ("localhost", "root","root");
- mysql_select_db("tree");
- mysql_query('set names utf8');
- $result = mysql_query("select * from tvmenu");
- $tree= new SelectTree($result ,'id','bid','name','tree');
- echo $tree->getSelectTree();
- ?>
-
コードをコピーします
|