Dinamik bir ağaç menüsü oluşturmak için dinamik olarak codeigniter ve mysql kullanarak, ağaç yapısı için css & jquery ile ilgili herhangi bir sorunum yok.Kod yapısı ve mysql ile ağaç yapısını dinamik olarak oluşturma
function getOrganization(){
$this->db->select('organization.*, organization.id as id, parent.id as parent_id, parent.title as organization_parent, organization_class.title as organization_class, organization.title as title');
$this->db->from('organization');
$this->db->join('organization_class', 'organization.organization_class_id = organization_class.id', 'left');
$this->db->join('organization as parent', 'organization.parent_organization_id = parent.id', 'left');
$this->db->order_by('organization.organization_class_id', 'asc');
$query = $this->db->get();
return $query;
}
Sadece yapabilirsiniz: Bu benim modeli
$str ='';
$lastListLevel=0;
$firstRow=true;
foreach($organization->result() as $row){
$currentListLevel=$row->parent_organization_id -1 ; // minus one to correct level to Level 0
$differenceLevel=$currentListLevel-$lastListLevel;
$rootLevel=false;
if($differenceLevel==0){
if($firstRow){
$firstRow=false;
}else{
$str .='</li>';
}
$str .='<li>';
}elseif($differenceLevel>0){
for($j=0;$j<$differenceLevel;$j++){
$str .='<ul><li>';
}
}elseif($differenceLevel<0){
for($j=$differenceLevel;$j<=0;$j++){
if($j==0){ // root level reached
$rootLevel=true;
$str .='</li>';
}else{
$str .='</li></ul>';
}
}
$str .= ($rootLevel) ? '<li>' : '<ul>';
}
$str.='<span><i class="icon-minus-sign"></i>'.$row->parent_organization_id.'-'.$row->organization_class_id.'-'.$row->id.'--'.$row->title.'--'.$row->organization_class.'</span>'.'<button type="button" class="btn btn-info btn-small" data-toggle="modal" data-target="#editorganizationModal'.$row->id.'"><i class="icon-paste"></i></button>';?>
<?php
$lastListLevel=$currentListLevel;
}echo $str.'<br>Lowest organization level. Please define new lower level to add.<br />';?>
şudur: Bu benim işlevi
(id, parent_org_id, org_class_id, title)
(1, 0, 1, Company Name)
(2, 0, 1, Company2 Name)
(3, 1, 2, Departement Name)
(4, 2, 2, Departement2 Name)
(5, 4, 3, Division2 Name)
(id, org_class_title, order_no)
(1, 0, 1)
(2, 0, 2)
(3, 1, 3)
geçerli:
İki tablo, masa organizasyonu & organizasyon sınıfı var organization_parent
için ağaç ve sonuç şöyle:
-- Company Name - Company
-- Company Name 2 - Company
--Departement Name - Departement
--Departement2 Name - Departement
--Division Name2 - Division
ve böyle bir sonuç yapmak istiyorum:
-- Company Name - Company
--Departement Name - Departement
-- Company Name2 - Company
--Departement2 Name - Departement
--Division2 Name - Division
veya HTML eğer sonuç böyle olacaktır: $organization->result()
görürseniz
<ul>
<li>Company Name - Company
<ul>
<li>Departement Name - Departement</li>
</ul>
</li>
<li>Company Name2 - Company
<ul>
<li>Departement Name2 - Departement
<ul>
<li>Divison Name2 - Division</li>
</ul>
</li>
</ul>
</li>
</ul>
Verileri ilk önce ağaç yapınızla ilgili bir dizi yapısına mı koyuyorsunuz? – Edward
Modelimi ekledim, –
Genel bir ipucu olarak, bu tür görevlerde, ağaç düğümlerini oluşturan bir işlevi tanımlamanız gerekir ve bu işlev, koşullu olarak, çocuk düğümü eklemek için kendisini çağırır. i.e 'fonksiyonu dTree() {// code; if (koşul) {dTree();}}' Durum, düğümün bir çocuğu olup olmadığını kontrol etmek üzere. – SaidbakR