这是我的数据库字段。
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 . ' ->', $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">
答案 0 :(得分:1)
当你调用$ categoryList = fetchCategoryTree();这个你没有传递父类别id,这就是为什么它从父0开始给你所有的类别,所以你得到重复的值。尝试在这个函数中传递父ID。
$categoryList = fetchCategoryTree($row["parent_id"],$spacing = '', $user_tree_array = '');