2013-07-12 28 views
3

我有一个user_groups如何让Joomla中的用户组的所有孩子?

id parent_id  title 
1  0   Public 
2  1   Registered 
3  2   Author 
4  3   Editor 
12  2   Customer Group (Example) 

你可以在这里看到寄存器(2)有2个孩子ID(3,12)和ID(3)也有它的孩子(4)。所以它创建了一棵树。现在我需要在列表框中制作这样的树。所以我尝试过这样:

<?php 
$db = JFactory::getDbo(); 
$query = "select grp.id, grp.title from #__usergroups AS grp where parent_id=2"; 
$db->setQuery($query); 
$groups = $db->loadObjectList(); 
?> 
<tr> 
    <td>Select Group</td> 
    <td> 
    <select name="usergroup"> 
    <option value="0"><?='Select Group';?></option>     
    <? 
    foreach($groups as $group) { 

     $query = "select grp.id, grp.title from #__usergroups AS grp where parent_id=".$group->id; 
     $db->setQuery($query); 
     $groups2 = $db->loadObjectList(); 
    ?> 
    <option value="<?=$group->id?>"><?=$group->title?></option> 
    <? if($groups2!=''){ 
      foreach($groups2 as $group2){ 
       $query = "select grp.id, grp.title from #__usergroups AS grp where parent_id=".$group2->id; 
       $db->setQuery($query); 
       $groups3 = $db->loadObjectList(); 
      ?> 
      <option value="<?=$group2->id?>">--<?=$group2->title?></option> 
      <? 
       if($groups3!=''){ 
        foreach($groups3 as $group3){ 
         $query = "select grp.id, grp.title from #__usergroups AS grp where parent_id=".$group3->id; 
         $db->setQuery($query); 
         $groups4 = $db->loadObjectList(); 
         ?> 
         <option value="<?=$group3->id?>">----<?=$group3->title?></option> 
         <? 
         if($groups4!=''){ 
          foreach($groups4 as $group4){ 
           ?> 
           <option value="<?=$group4->id?>">--------<?=$group4->title?></option> 
           <? 
          } 
         } 
        } 
       } 
      } 
     } 
    }?> 
    </select> 
    </td> 
</tr> 

但是这不是最好的方法。如果我添加更多的子项目,那么这将无法使用,直到我再次进入。所以我需要有效的方法来做到这一点,所以我不需要在未来增加水平。请帮忙!

回答

0

您可以使用optgroup此类似,

<select> 
    <optgroup label="Group 1"> 
    <option>Option 1.1</option> 
    </optgroup> 
    <optgroup label="Group 2"> 
    <option>Option 2.1</option> 
    <option>Option 2.2</option> 
    </optgroup> 
    <optgroup label="Group 3" disabled> 
    <option>Option 3.1</option> 
    <option>Option 3.2</option> 
    <option>Option 3.3</option> 
    </optgroup> 
</select> 

阅读本https://developer.mozilla.org/en-US/docs/Web/HTML/Element/optgroup

+0

抱歉,这并不是我所期待for.By这样做,我们不能得到optgroup.I价值的解决方案需要获取每个父数据。 – user2182010

+0

首先显示父级下拉菜单并根据用户选择显示子级下拉菜单 – Sundar

+0

@Sundar但是我想显示所有父级项目,并且它在同一个列表框中显示为子级别。您可以看到我已经完成了该操作,但这不是最佳方式去做吧。 – user2182010

相关问题