从类别树下拉列表中选择的类别值

时间:2016-08-31 09:22:31

标签: php

这是我创建n级别类别的代码。

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  `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;
}

$categoryList = fetchCategoryTree();

在下拉列表中显示所有类别

$id=$_GET['id'];
<td> Category:</td><td><select name="parentcat" id="parentcat" onchange="getText(this)">

    <option selected value="Root">--Root Level--</option>
        <?php
     foreach($categoryList as $cl) {
         ?>
         <option value="<?php echo $cl["id"] ?>"><?php echo $cl["name"]; ?></option>
     <?php }  ?>

现在我想在下拉列表中显示所选的父名称。如果类别名称为Laptop,则其父名称为'Electronics。我希望电子产品能够在下拉列表中出现。

我的数据库是这样的:

cat_id | cat_name   | parent_id
-------------------------------
 1     | Electronics| 0
-------------------------------
 2     | Laptops    | 1

我希望在下拉列表中显示Electronics如果我选择Laptops

1 个答案:

答案 0 :(得分:0)

你怎么知道在哪里选择? $ _GET [&#39; id&#39;]

的示例
function searchForId($id, $array) {
   foreach ($array as $key => $val) {
     if ($val['id'] === $id) {
       return true;
     }
   }
   return null;
}

$selected_id = (int)$_GET['id'];
?>
<option <?=(searchForId($selected_id,$categoryList))?'selected':''?> value="Root">--Root Level--</option>
<?php
foreach($categoryList as $cl) {
?>
   <option value="<?php echo $cl["id"] ?>"><?php echo $cl["name"]; ?></option>
<?php }  ?>