2015-10-11 22 views
4

我想在選擇列表(下拉列表)中顯示類別和子類別,如下圖所示。在HTML中列出類別和子類別SELECT

enter image description here

這是我試圖在PHP:

// Fetch all the records: 
while ($stmt->fetch()) {   
    $cats[$parent][$id] = $name;   
} 

function displayList(&$cats, $parent, $level=0) { 

    if ($parent==0) { 
     foreach ($cats[$parent] as $id=>$nm) { 
      displayList($cats, $id); 
     } 
    } 
    else { 
     foreach ($cats[$parent] as $id=>$nm) { 
      echo "<option>$nm</option>\n"; 
      if (isset($cats[$id])) { 
       displayList($cats, $id, $level+1); //increment level 
      } 
     } 
    } 
} 

echo '<select>'; 
    displayList($cats, 0); 
echo '</select>'; 

此代碼顯示我的所有類別在我的下拉列表中。但我需要爲我的子類別添加縮進。

任何人都可以告訴如何去做。

謝謝。

+0

您shoupd使用父母 – kotapeter

+0

@KótaPéter,我不知道如何修改這個PHP函數。你能幫助我嗎?謝謝。 – user3733831

回答

2

嘗試增加的小類"&nbsp;",這是HTML的方式來增加你想要

功能顯示列表(& $貓,$父,$水平= 0){

if ($parent==0) { 
    foreach ($cats[$parent] as $id=>$nm) { 
     displayList($cats, $id); 
    } 
} 
else { 
    foreach ($cats[$parent] as $id=>$nm) { 
     $space = ""; 
     foreach ($level){ 
      $space .= "&nbsp;&nbsp;"; 
     } 
      echo "<option>".$space."$nm</option>\n"; 
      if (isset($cats[$id])) { 
       displayList($cats, $id, $level+1); //increment level 
      } 

    } 
} 

儘可能多的空間}

+0

你能告訴我如何修改我的php函數嗎?謝謝。 – user3733831

+0

嘗試使用更新後的答案,請繼續閱讀,如果您只有1個子類別,則@Kóta-Péter的optgroup建議是正確的方法 – CDrosos

+0

檢查使用optgroup用於許多子類別的最佳答案http://stackoverflow.com/questions/5288792/how-to-indent-multiple-levels-select-optgroup-with-css – CDrosos

2

如果你想使用OPTGROUP嘗試:

// Fetch all the records: 
while ($stmt->fetch()) { 
    $cats[$parent][$id] = $name; 
} 

function displayList(&$cats, $parent, $level = 0) { 

    if ($parent == 0) { 
     foreach ($cats[$parent] as $id => $nm) { 
      displayList($cats, $id); 
     } 
    } 
    else { 

     foreach ($cats[$parent] as $id => $nm) { 

      if (isset($cats[$id])) { 
       echo "<optgroup label='$nm'>"; 
       displayList($cats, $id, $level + 1); 
       echo "</optgroup>"; 
      } else { 
       echo "<option>$nm</option>"; 
      } 
     } 
    } 
} 

echo '<select>'; 
displayList($cats, 0); 
echo '</select>'; 
+0

只是檢查,並不適合我。 – user3733831

+0

我修改了代碼。請檢查 – kotapeter

+0

是的..其工作非常..非常感謝您的幫助。 – user3733831