2016-08-22 51 views
1

這是我的數據庫字段。下拉列表中的所選值不應重複

cat_id | cat_name | parent | parent_id 
----------------------------------------------- 
    1  | Electronics| --  | 0 

    2  | Apparels |--   |0 

    3  | Mens  | Apparels |2 

這裏是我的數據庫結構,現在我開發,如果管理員想編輯類,他可以在那裏一些基本的CRUD操作,所以當他編輯選擇的類別名稱應在下拉菜單顯示以及其他的選擇,如果他想要改變,然後他可以。我在這裏向你展示重複的類別名稱。

這裏是我的領域:

Category Name: Mens 
Dropdown Menu: --Root Level-- 
       Apparels(Selected Value) 
       Electronics 
       Apparels 
       --Mens 

這是設計結構。這裏是我的php代碼:

<tr> 
       <td><h4>Update category</h4></td> 
      </tr> 
      <tr> 
       <td>Name:</td> 
       <td><?php $result=mysql_query("SELECT * from category Where cat_id='$id'"); 
          $row=mysql_fetch_array($result)?><input type="text" value="<?php echo $row["cat_name"]; ?>" /></td> 
      </tr> 
      <tr> 
       <?php 
         function fetchCategoryTree($parent = 0, $spacing = '', $user_tree_array = '') { 

         if (!is_array($user_tree_array)) 
          $user_tree_array = array(); 

         $sql = "SELECT `cat_id`, `cat_name`, `parent_id` FROM `category` WHERE 1 AND `parent_id` = $parent ORDER BY cat_id ASC"; 
         $query = mysql_query($sql); 
         if (mysql_num_rows($query) > 0) { 
          while ($row = mysql_fetch_object($query)) { 
          $user_tree_array[] = array("id" => $row->cat_id, "name" => $spacing . $row->cat_name); 
          $user_tree_array = fetchCategoryTree($row->cat_id, $spacing . '&nbsp;->', $user_tree_array); 
          } 
         } 
         return $user_tree_array; 
         }?> 

         <?php 
         $categoryList = fetchCategoryTree(); 
         ?> 
       <td> Category:</td><td><select name="parentcat" id="parentcat" onchange="getText(this)"> 
       <option value="Root">--Root Level--</option> 
       <option selected value="<?php echo $row["parent_id"];?>"><?php echo $row["parent"];?></option> 
        <?php foreach($categoryList as $cl) { 
         ?> 

        <option value="<?php echo $cl["id"] ?>"><?php echo $cl["name"]; ?></option> 
        <?php } ?> 
        </select> 
        <input type="hidden" id="catnamehidden" name="hdnCatname"> 

回答

1

當您調用$ categoryList = fetchCategoryTree();這是你沒有傳遞父類別ID,這就是爲什麼它給你所有從父類0開始的類別,所以你正在獲得重複的值。嘗試像這樣在該函數中傳遞父ID。

$categoryList = fetchCategoryTree($row["parent_id"],$spacing = '', $user_tree_array = '');