2016-09-07 25 views
0

我正在嘗試製作動態下拉菜單。我有數據庫表下拉菜單。物化下拉問題

表佈局 enter image description here

位置是指在菜單位置。下拉(0 - 沒有下拉,1 - 下拉「標題」與那個箭頭,2 - 下拉項目)。 dropdown-parent表示下拉標題的ID。

問題是我無法弄清楚如何實現它。

$query = $db->query("SELECT * FROM `menu` WHERE 
        `dropdown` = 0 OR `dropdown` = 1 ORDER BY `position` ASC"); 
foreach($query as $row) { 
     if($row['dropdown'] == 0) { 
     echo '<li><a href="'.$row['url'].'">'.$row['name'].'</a></li>'; 
     } 
     elseif($row['dropdown'] == 1) { 
      echo '<li><a class="dropdown-button" href="#" data-activates="dropdown'.$row['position'].'" data-beloworigin="true" data-hover="true">'.$row['name'].'<i class="material-icons right">arrow_drop_down</i></a></li>'; 
     } 
    } 

此代碼的工作,但對於下拉項目,我需要編輯這個

<ul id="dropdown2" class="dropdown-content"> 
    <li><a href="#">Test #1</a></li> 
</ul> 

你有任何想法如何實現它?

編輯

這就是我想要的

<ul id="dropdown1" class="dropdown-content"> 
    <li><a href="#">Test item #1 for dropdown1</a></li> 
    <li><a href="#">Test item #2 for dropdown1</a></li> 
    <li><a href="#">Test item #x for dropdown1</a></li> 
</ul> 
<ul id="dropdown2" class="dropdown-content"> 
    <li><a href="#">Test item #1 for dropdown2</a></li> 
    <li><a href="#">Test item #2 for dropdown2</a></li> 
</ul> 
<ul id="dropdownx" class="dropdown-content"> 
    <li><a href="#">Test item for dropdownx</a></li> 
</ul> 
<ul class="right hide-on-med-and-down"> 
    <li><a href="#">Header without dropdown</a></li> 
    <li><a class="dropdown-button" href="#" data-activates="dropdown1">Header with dropdown1 items</a></li> 
    <li><a class="dropdown-button" href="#" data-activates="dropdown2">Header with dropdown2 items</a></li> 
    <li><a class="dropdown-button" href="#" data-activates="dropdownx">Header with dropdownx items</a></li> 
</ul> 

我想這

$query = $db->query("SELECT * FROM `menu` WHERE `dropdown` = 2 ORDER BY position ASC"); 

foreach($query as $row) { 
    echo '<ul id="dropdown'.$row['dropdown-parent'].'" class="dropdown-content"> 
      <li><a href="'.$row['url'].'">'.$row['name'].'</a></li> 
     </ul>'; 
} 

但我會

<ul id="dropdown1" class="dropdown-content"> 
    <li><a href="#">Test item #1 for dropdown1</a></li> 
</ul> 
<ul id="dropdown1" class="dropdown-content"> 
    <li><a href="#">Test item #2 for dropdown1</a></li> 
</ul> 
<ul id="dropdown1" class="dropdown-content"> 
    <li><a href="#">Test item #x for dropdown1</a></li> 
</ul> 
<ul id="dropdown2" class="dropdown-content"> 
    <li><a href="#">Test item #1 for dropdown2</a></li> 
</ul> 
<ul id="dropdown2" class="dropdown-content"> 
    <li><a href="#">Test item #2 for dropdown2</a></li> 
</ul> 
<ul id="dropdownx" class="dropdown-content"> 
    <li><a href="#">Test item #1 for dropdownx</a></li> 
</ul> 

這個foreach存在問題,但我不知道解決這個問題。

+0

那麼你想創建2個下拉?一個爲0,另一個爲1?似乎有點不清楚。 – nerdlyist

+0

抱歉誤會。我已經用必要的東西編輯了問題。 – rootz159

回答

0

您需要根據某些邏輯製作<ul>。有三個步驟。你是第一個,你需要結束一個並創建另一個,你是最後一個。下面是一個未經嘗試的嘗試。應該讓你靠近。另外爲了清楚起見,我將$query更改爲$rows

$rows = $db->query("SELECT * FROM `menu` WHERE `dropdown` = 2 ORDER BY position ASC"); 

$start = true; // Just to know we are starting 

foreach($rows as $row) { 
    if($start){ // Need to only create an open ul tag 
     echo '<ul id="dropdown'.$row['dropdown-parent'].'" class="dropdown-content">'; 
     $start = false; // Never do this again. 
    } 

    if(isset($lastRowParent) && $lastRowParent != $row['dropdown-parent']){ 
     echo '</ul>'; //End the last dropdown 

     // Start the next one 
     echo '<ul id="dropdown'.$row['dropdown-parent'].'" class="dropdown-content">'; 
    }   

    echo '<li><a href="'.$row['url'].'">'.$row['name'].'</a></li>'; //Output the content 
    $lastRowParent = $row['dropdown-parent']; // Update the parent 
} 

echo '</ul>'; //When the loop ends the last ul will not be closed. close it. 
+0

謝謝!正是我想要的。 – rootz159

0

如果您可以使用開關盒取代其他位置。

$query = $db->query("SELECT * FROM `menu` WHERE `dropdown` = 0 OR `dropdown` = 1 ORDER BY `position` ASC"); 

    foreach($query as $row) { 
     SWITCH($row['dropdown']) { 
      CASE 0: 
       echo '<li><a href="'.$row['url'].'">'.$row['name'].'</a></li>'; 
       break; 
      CASE 1 : 
       echo '<li><a class="dropdown-button" href="#" data-activates="dropdown'.$row['position'].'" data-beloworigin="true" data-hover="true">'.$row['name'].'<i class="material-icons right">arrow_drop_down</i></a></li>'; 
       break; 
     } 
    } 
+0

抱歉誤會。我已經用必要的東西編輯了問題。 – rootz159