2013-07-12 2 views
3

나는 당신이 (2) 두 아이의 아이디 (3,12)와 ID를 가지고 여기에 (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) 

있다 (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> 

그러나 이것은 최선의 방법이 아니다. 하위 항목을 추가하면 다른 수준을 만들 때까지 작동하지 않습니다. 그래서 나는 그것을 할 수있는 효과적인 방법이 필요하므로 미래에 레벨을 추가 할 필요가 없습니다. 도와주세요! 당신이 등에 optgroup을 사용할 수 있습니다

답변

0

,

<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

관련 문제