2016-06-09 253 views
0

我正在基於dataBase上註冊的類別動態創建菜單,我需要的是: 當有人點擊鏈接時,此選項應該有css類'active',顯示在用戶所在的頁面,甚至頁面都是動態創建的。 我不知道如何做到這一點,因爲我是PHP的學生,我無法在谷歌找到「動態菜單」的信息非常感謝。在php中動態創建動態類

所有的
<nav class="menu"> 
    <ul class="list"> 
     <li class="line"><a id="item" href="index.php">Home</a></li> 

     <?php 
     $categories = $db->select("select * from tbl_category"); 
     if($categories){ 
      while ($result = $categories->fetch_assoc()){ 
      echo <<<HTML 
      <li id="line" ><a class="item" href="categories.php?category=$result[id]">$result[name]</a></li> 
HTML; 
      } 
     } 
     ?> 
    </ul> 
<nav> 

回答

0

首先,你通過while迴路循環和加入「行」的ID爲每一位<li>元素。我建議你爲每個列表項目創建唯一的ID。我沒有必要提倡使用的代碼,你有它的方式,只是作爲一個例子,這裏是你的代碼編輯,以做到這一點:

if($categories){ 
     $i = 1; 
     while ($result = $categories->fetch_assoc()){ 
     $i++; 
     echo <<<HTML 
     <li id="line$i" ><a class="item" href="categories.php?category=$result[id]">$result[name]</a></li> 
     HTML; 
     } 
} 

然後當有人點擊你的鏈接,只需使用jQuery的東西,如這樣的:

$(".item").click(function() { 
    $(this).parent('li').addClass('active'); 
}); 
0

嘗試類似的東西:

<nav class="menu"> 
    <ul class="list"> 
     <li class="line"><a id="item" href="index.php">Home</a></li> 

     <?php 
     $current_page = isset($_GET['category']) ? $_GET['category']: -1; 

     $categories = $db->select("select * from tbl_category"); 
     if($categories){ 
      while ($result = $categories->fetch_assoc()){ 
      echo '<li id="line">'; 
      if($result['category'] === $current_page) { 
       // If we're currently in the active page then add the active class to the <a> 
       echo '<a class="item active" href="categories.php?category='. $result[id] .'">'; 
      } else { 
       echo '<a class="item" href="categories.php?category='. $result[id] .'">'; 
      } 
      echo  $result['name']; 
      echo '</a>'; 
      echo '</li>'; 
      } 
     } 
     ?> 
    </ul> 
<nav> 
0

謝謝大家的幫助,根據你的代碼,我解決了這樣:

menu.php:

<nav class="menu" id="menu"> 

    <ul id="list" class="list"> 

     <li id="line" class="<?php if($presentPage == '0')echo 'active';?>"><a id="item" class="item" href="index.php">Home</a></li> 

    <?php 
    function checked($pp, $id){ 
     if($pp == $id){ 
     $status = 'active'; 
     return $status; 
     } 
    } 
    $query = "select * from tbl_category"; 
    $category = $db->select($query); 
    if($category){ 
     while ($result = $category->fetch_assoc()){ 

     echo " 
      <li id='line' class='".checked($presentPage, $result['id'])."'><a id='item' class='item' href='categories.php?category=".$result['id']."'>".$result['name']."</a></li> 
     ";//end echo 

     }//end while 
    }//end if 
    ?> 
    </ul> 
</nav> 

在我的index.php:

<?php $presentPage = 0;?> 
    <?php require_once 'header.php';?> 
    <?php require_once 'menu.php';?> 

,並在我的categories.php:

<?php 
    if (!isset($_GET['category']) || $_GET['category'] == NULL) { 
     $presentPage = 0; 
    }else{ 
     $presentPage = intval($_GET['category']);//just to make sure that the variable is a number 
    } 
    ?> 

    <?php require_once 'header.php';?> 
    <?php require_once 'menu.php';?> 
    ///...my code... 

在我當然CSS:

.active{ 
    background: linear-gradient(#821e82, #be5abe); 
} 

這對我來說是完美的,感謝所有的幫助。