Php 多级选择框
我在构建多级选择框时遇到问题。我有一个具有以下结构的类别表:id、parent\u id、name。如果parent_id=0,则为顶层。我不知道水平深度,所以可能是2,3-5级。 如何使用查询“从猫中选择*”来构建它 结果看起来像Php 多级选择框,php,html,Php,Html,我在构建多级选择框时遇到问题。我有一个具有以下结构的类别表:id、parent\u id、name。如果parent_id=0,则为顶层。我不知道水平深度,所以可能是2,3-5级。 如何使用查询“从猫中选择*”来构建它 结果看起来像 <select> <option>cat_name</option> <option>--cat_name_l1</option> <option>--cat_name_l1</optio
<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>
猫的名字
--cat_名称_l1
--cat_名称_l1
----类别名称
----类别名称
猫的名字
您能帮助我吗?请尝试以下方法以生成所需的下拉列表:
$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>";
function\u buildTree($data、$idParent、$indentSymbol、$level)
{
$cat=array();
foreach($行数据){
如果($row['parent\u id']==$idParent){
如果($SYMBOL和$level>0){
$symbols=数组填充(0,$level,$indentSymbol);
$cat[$row['id']]=内爆('''.$symbols)。$row['name'];
}否则{
$cat[$row['id']=$row['name'];
}
$cat=$cat+\u buildTree($data,$row['id'],$indentSymbol,$level++);
}
}
返回$cat;
}
$result=mysql_查询(“从猫中选择*);
$data=array();
while($row=mysql\u fetch\u assoc($result)){
$data[]=$row;
}
$select='';
foreach(_buildTree($data,0',-',0)作为$key=>$option){
$select.=''.$option';
}
$select.='';
我认为您应该创建多个组合框:如果需要,通过js添加新的组合框
echo $opt;
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>';