首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多级选择框

多级选择框
EN

Stack Overflow用户
提问于 2012-07-05 19:02:46
回答 2查看 1.6K关注 0票数 2

我有一个关于建立多级选择框的问题。我有一个类别表的结构: id,parent_id,name。如果parent_id =0,则为顶级。我不知道级别深度,所以可能是2,3-5级。我如何使用查询"SELECT * FROM cats“结果构建它,假设如下所示

代码语言:javascript
运行
复制
<select>
<option>cat_name</option>
<option>--cat_name_l1</option>
<option>--cat_name_l1</option>
<option>----cat_name_l2</option>
<option>----cat_name_l2</option>
<option>cat_name</option>
</select>  

你能帮帮我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-05 19:32:41

代码语言:javascript
运行
复制
function _buildTree($data, $idParent, $indentSymbol, $level)
{
    $cat = array();
    foreach($data as $row){
        if($row['parent_id'] == $idParent){
            if($indentSymbol AND $level > 0){
                $symbols = array_fill(0, $level, $indentSymbol);
                $cat[$row['id']] = implode('', $symbols) . $row['name'];
            }else{
                $cat[$row['id']] = $row['name'];
            }

            $cat = $cat + _buildTree($data, $row['id'], $indentSymbol, $level++);
        }
    }
    return $cat;
}

$result = mysql_query("SELECT * FROM cats");

$data = array();
while($row = mysql_fetch_assoc($result)){
    $data[] = $row;
}

$select = '<select>';

foreach(_buildTree($data, 0, '-', 0) as $key=>$option){
    $select .= '<option value=' . $key . '>' . $option . '</option>';
}

$select .= '</select>';
票数 2
EN

Stack Overflow用户

发布于 2012-07-05 19:26:16

尝试此操作以生成所需的下拉列表:

代码语言:javascript
运行
复制
$result=mysql_query("SELECT * FROM cats");
$opt='<select>';
while($row=mysql_fetch_array($result))
{
    $cat[$row['id']][0]=$row['parent_id'];
    $cat[$row['id']][1]=$row['name'];
}
foreach($cat as $ct)
{
    $level=0;
    $temp=$ct;
    while($temp[0]!=0)
    {
        $temp=$cat[$temp[0]];
        $level++;
    }
    $opt.="<option>";
    for($i=0;$i<$level;$i++)
    {
        $opt.="--";
    }
    $opt.=$ct[1];
    $opt.="</option>";
}
$opt.="</select>";

然后,您可以将其用作:

代码语言:javascript
运行
复制
echo $opt;
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11342995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档