2016-08-22 81 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 = '');