这是我的表kindkind_fid为0的是主类别,子类的上一级类别在kind_fid里,
现在想要把这些类别分类输出,例如这样想到的就是select * from kind
取回结果集然后存入一个二维数组
然后再根据二维数组的键值循环输出但是实际操作不知道怎么弄~~能否给段代码参考一下~~谢谢
现在想要把这些类别分类输出,例如这样想到的就是select * from kind
取回结果集然后存入一个二维数组
然后再根据二维数组的键值循环输出但是实际操作不知道怎么弄~~能否给段代码参考一下~~谢谢
<?php
//数据库存连接串
$query = $db->query("select * from kind where kind_fid=0 order by id desc"); // 查询记录集
while($class_list=$db->fetch_array($query))
{
$g_id=$class_list["id"];
$big_class=$class_list["kind_name"];
$query2 = $db->query("select * from kind where kind_fid=".$g_id." order by id desc"); // 查询记录集
while($sclass_list=$db->fetch_array($query2))
{
$small_class=$small_class.$sclass_list["kind_name"].'|';
}
echo $big_class.':'.$small_class;
$small_class='';
}
?>
//数据库存连接串
$query = $db->query("select * from kind order by kind_fid desc"); // 查询记录集
while($row=$db->fetch_array($query))
{
$result[$row["kind_fid"]]=$row;
}
foreach($result as $k => $v){
if(isset($result[$v["kind_fid"]])){
$result[$v["kind_fid"]]["children"] [] = $v;
unset[$result[$k]];
}
}
print_r($result);
?>
应该是这样吧 支持多级分类 只需查询一次数据库
PS:代码没测试过 只是个想法
已经把相应的字段改成我的数据库字段~~~
#2的输出是空白页面
#3的输出是Notice: Undefined variable: result in C:\wamp\www\project\program\kindtest.php on line 8Notice: Undefined variable: result in C:\wamp\www\project\program\kindtest.php on line 14
<?php
//数据库存连接串
$query = $db->query("select * from kind order by kind_fid desc"); // 查询记录集
while($row=$db->fetch_array($query))
{
$result[$row["fid"]][]=$row;
}
foreach($result as $k => $v){
if(isset($result[$v["kind_fid"]])){
$result[$v["kind_fid"]]["children"] [] = $result[$k];
unset[$result[$k]];
}
}
print_r($result);
?>重新发一遍
如果想要一开始说的那种输出效果数组该怎么输出呢Array ( [2] => Array ( [0] => 6 [kind_id] => 6 [1] => 2 [kind_fid] => 2 [2] => 小区园林 [kind_name] => 小区园林 [children] => Array ( [0] => Array ( [0] => 6 [kind_id] => 6 [1] => 2 [kind_fid] => 2 [2] => 小区园林 [kind_name] => 小区园林 ) ) ) [1] => Array ( [0] => 5 [kind_id] => 5 [1] => 1 [kind_fid] => 1 [2] => 卧室装修 [kind_name] => 卧室装修 [children] => Array ( [0] => Array ( [0] => 5 [kind_id] => 5 [1] => 1 [kind_fid] => 1 [2] => 卧室装修 [kind_name] => 卧室装修 ) ) ) [0] => Array ( [0] => 3 [kind_id] => 3 [1] => 0 [kind_fid] => 0 [2] => 工业设计 [kind_name] => 工业设计 [children] => Array ( [0] => Array ( [0] => 3 [kind_id] => 3 [1] => 0 [kind_fid] => 0 [2] => 工业设计 [kind_name] => 工业设计 ) ) ) )
说实话看到这个数组有点晕
还有就是大哥能否说说原理让我琢磨一下呢~~谢谢
但是$query2查询放在while循环里面
这个不太可取因为面临着高并发
很容易出现问题~~~~
所以还是得想想一次查询放进数组里~~~再来进行分类输出
参考 http://bbs.csdn.net/topics/370094009
版主能否解释一下你写的这个的33行这个if( $item[$pid] ) { $t[$item[$pid]]['child'][$item[$id]] =& $t[$k]; }<?php
require('conn.php');
$query = mysql_query("select * from mission_kind order by kind_id desc");
while($result=mysql_fetch_array($query))
{
$resultarr[]=array(
"id"=>$result['kind_id'],
"fid"=>$result['kind_fid'],
"name"=>$result['kind_name']
);
}$tree=gettree($resultarr,0);
print_r($tree);function gettree($data,$pId)
{ $tree = '';
foreach($data as $k =>$v)
{ if($v['fid'] ==$pId)
{ //父亲找到儿子
$v['children']=gettree($data,$v['id']);
$tree[] = $v;
}} return $tree; }
?>