コードをコピーします コードは次のとおりです:
/*
作成者: Nick
日付: 2009.05.17
関数: SeletTree の生成
属性:
$result 結果セット
$id_field 自身の ID フィールド
$parent_field 親クラス ID フィールド
$option_text オプション表示名
$select_name ドロップの名前-down menu
$elected がデフォルトで選択されます
$no_top トップレベルのオプションが必要かどうか
$level レイヤの深さ
$parent_id 同じレイヤ内の ID
*/
クラスSelectTree{
public $result;
public $option_text;
public $parent_field; ;
public $level; >public $parent_id;
public $getarray;$option_text,$elected=0,$ no_top=0,$level=0 ,$parent_id=0){
$this->result =$result;
$this->id_field =$id_field; =$parent_field;
$ this->option_text =$option_text;
$this->select_name =$selected; ;no_top =$no_top;
$this->level =$level;
$this->getArray =self::getArray(); 🎜>}
/*
関数: ツリーの 2 次元配列を返します
*/
function getArray(){
$arrays=array();
while($row) =mysql_fetch_array($this->result) ){
$arrays[$row[$this->parent_field]][$row[$this->id_field]]=$row>}
return $arrays;
}
/*
関数: Get SelectTree
*/
function getSelectTree(){
$tree = '';
return $tree;
}
/*
関数: 再帰的にツリーを構築しますStructure
*/
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){
$tree .= '";
}else{
$tree .= '";
}
$tree .=self::buildTree($array ,&$tree, $option_value,$option_text,$selected,$level 1,$key);
}
}else{
$tree .=
}
}
}
/************************************************* **************************/
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"); SelectTree($result, 'id','bid','name','tree');
echo $tree->getSelectTree();