function get_hierarchy_page()
{
$detail = $this->input->post('name');
$tree = $this->dashboard_model->get_detail($detail);
$this->load->view('layout/layout', $data);
if(isset($tree))
{
$data['hierarchy'] = $this->data_array_for_teacher($tree);
}
}
function data_array_for_teacher($tree)
{
if(!(isset($tree)))
return 0;
$data_query = mysql_query("select * from tbl_level");
while($result = mysql_fetch_assoc($data_query))
{
$id = $result['level_id'];
$data_array[$id] = $result;
}
//array to get level id
while($level_result = mysql_fetch_assoc($tree))
{
$level_array[] = $level_result['level_id'];
}
if(!(isset($level_array)))
return 0;
foreach($level_array as $level)
{
$p = $this->recursive_for_teacher($data_array,$level);
print_r($p);
}
}
function recursive_for_teacher($data_array,$level_once)
{
if(!isset($data_array,$level_once))
return 0;
$i = 0;
static $p = array();
$data = $data_array;
$y = $level_once;
$x = $data[$y]['level_parent'];
$z = $data[$y]['level_name'];
$y=$x;
array_push($p,$z);
$p[] = $z;
if($y!=0)
$this->recursive_for_teacher($data,$y);
return $p;
}
隣接リスト モデルを使用して、mysql に格納された階層データに基づくシステムに取り組んでいます。私は2つのテーブルtbl_user
とtbl_level
. tbl_level
次のフィールドがあります - level_id
、level_parent
、level_name
。これら 3 つのフィールドは、それぞれ標準データベース構造のid
、と同じです。parent_name
parent_id
表tbl_level
には多くの組織があり、それぞれが異なる階層構造を持っています。
特定の組織内の権限の階層全体を取得するという問題を解決する上記のコードを作成しました。
私が今直面している唯一の問題は、必要な答えを1つの配列で取得しているときです。
機関ごとに 1 つの配列が必要です。
Array(
[0] => Engineering and Technology
[1] => Univ1
[2] => Class
[3] => Master of Business Administration
[4] => Engineering and Technology
[5] => univ1
[6] => Class_cse
[7] => Computer Science
[8] => Bachelor of Technology
[9] => Engineering and Technology
[10] => univ1
)
誰でも問題のより良い解決策を提案できますか?