PHP如何while双循环

idfidxmflxmzl1美容养生2医药保健3金银珠宝41美容51化妆62西药72中药83黄金93玉器上面是数据库里的表;如何输出成:[美容养生]美容化妆[医药保健]西... id fid xmfl xmzl
1 美容养生
2 医药保健
3 金银珠宝
4 1 美容
5 1 化妆
6 2 西药
7 2 中药
8 3 黄金
9 3 玉器
上面是数据库里的表;如何输出成:
[美容养生] 美容 化妆
[医药保健] 西药 中药
[金银珠宝] 黄金 玉器
<?php
include("sql.php");
$mysql="select * from `xmfl`";
$query=mysql_query($mysql);
$row=mysql_fetch_array($query);
$xmfl=$row[xmfl];
$id=$row[id];
while($row=mysql_fetch_array($query)){
if($row[xmfl])
echo "<a href=xm.php?id=$row[id]>[".$row[xmfl]."]</a>";
//第二个循环如何做,才能输出上面的样式呢?
if($row[fid] == $id)
echo "<a href=xm.php?id=$row[id]>".$row[xmzl]."</a>";
}

}
echo "<br/>";
?>
<?php
include("sql.php");
$mysql="select * from `xmfl`";
$query=mysql_query($mysql);
while($row=mysql_fetch_array($query)){
$xmfl=$row[xmfl];
$id=$row[id];
$fid=$row[fid];
if($xmfl)
echo "<a href=ind.php?id=$row[id]>[".$xmfl."]</a>";
while($row=mysql_fetch_array($query)){
echo "<a href=xm.php?id=$row[id]>".$row[xmzl]."</a>";
}
echo "<br/>";
}
?>
现在只能输出成:[美容养生] 美容 化妆
后面的就不循环了,我不知哪儿出问题了,求高手指点!
展开
 我来答
阿崔福绵
2010-07-08 · TA获得超过612个赞
知道小有建树答主
回答量:347
采纳率:0%
帮助的人:465万
展开全部
这个比较简单的呀.如果固定两层,嵌个循环就行,也可以用递归.
你里面再加一条SQL才行.
<?php
include("sql.php");
$mysql="select * from `xmfl`";
$query=mysql_query($mysql);
while($row=mysql_fetch_array($query)){
$xmfl=$row[xmfl];
$id=$row[id];
$fid=$row[fid];
if($xmfl)
echo "<a href=ind.php?id=$row[id]>[".$xmfl."]</a>";
//这里加一条.
mysql_query("select * from xmfl where fid=$id");
while($row=mysql_fetch_array($query)){
echo "<a href=xm.php?id=$row[id]>".$row[xmzl]."</a>";
}
echo "<br/>";
}
?>
duyueping
2010-07-06 · TA获得超过374个赞
知道小有建树答主
回答量:130
采纳率:0%
帮助的人:136万
展开全部
先不管 子类 直接循环大类 这样就是

[美容养生]
[医药保健]
[金银珠宝]

每一个大类会有一个对应的大类ID 也就是1 2 3 在你循环的时候是可以取出来的

然后在 循环的里面 以 大类的ID 读取数据表 分列循环 出来 思路是这样如果不明白可以HI 我
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
swg0110
2010-07-05 · TA获得超过469个赞
知道小有建树答主
回答量:1074
采纳率:0%
帮助的人:622万
展开全部
<?php
$arr=array(
array('id'=>1,'fid'=>'','xmf1'=>'美容养生','xmzl'=>''),
array('id'=>2,'fid'=>'','xmf1'=>'医药保健','xmzl'=>''),
array('id'=>3,'fid'=>'','xmf1'=>'金银珠宝','xmzl'=>''),
array('id'=>4,'fid'=>1,'xmf1'=>'','xmzl'=>'美容'),
array('id'=>5,'fid'=>1,'xmf1'=>'','xmzl'=>'化妆'),
array('id'=>6,'fid'=>2,'xmf1'=>'','xmzl'=>'西药'),
array('id'=>7,'fid'=>2,'xmf1'=>'','xmzl'=>'中药'),
array('id'=>8,'fid'=>3,'xmf1'=>'','xmzl'=>'黄金'),
array('id'=>9,'fid'=>3,'xmf1'=>'','xmzl'=>'玉器')
);

// while($res=mysql_fetch_array($query))
// $arr[]=$res;

foreach($arr as $k=>$v)
{
if($v['fid']=='')
{
echo "[".$v['xmf1']."]\t\t";
foreach($arr as $k1=>$v1)
{
if($v1['fid']==$v['id'])
echo $v1['xmzl']."\t\t";
}
echo "<br>";
}
else
continue;
}

//调试过,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
goto999
2010-07-06 · TA获得超过172个赞
知道小有建树答主
回答量:131
采纳率:0%
帮助的人:50.3万
展开全部
我的实现分两步 sql语句需要加order by fid asc,不然下面的整理数据会乱
1,整理从数据库取出的数据:
while($row=mysql_fetch_array($query)){
if($row['fid']>0){//子类别
$arr[$row['fid']][]="<a href=xm.php?id={$row['id']}>{$row['xmzl']}</a>";
}else{//父类别
$arr[$row['id']][]="<a href=xm.php?id={$row['id']}>[{$row['xmfl']}]</a>";
}
}
2,打印数据
forecah($arr as $v){
echo implode(" ",$v)."<br />";//用一个空格符连接
}
建议你写程序时数组key加引号,如$arr['id'],这是一个好习惯,程序的移植性也比较好
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
游北哀吉
2020-03-16 · TA获得超过1114个赞
知道小有建树答主
回答量:1329
采纳率:100%
帮助的人:5.8万
展开全部
这个比较简单的呀.如果固定两层,嵌个循环就行,也可以用递归.
你里面再加一条SQL才行.
<?php
include("sql.php");
$mysql="select
*
from
`xmfl`";
$query=mysql_query($mysql);
while($row=mysql_fetch_array($query)){
$xmfl=$row[xmfl];
$id=$row[id];
$fid=$row[fid];
if($xmfl)
echo
"<a
href=ind.php?id=$row[id]>[".$xmfl."]</a>";
//这里加一条.
mysql_query("select
*
from
xmfl
where
fid=$id");
while($row=mysql_fetch_array($query)){
echo
"<a
href=xm.php?id=$row[id]>".$row[xmzl]."</a>";
}
echo
"<br/>";
}
?>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式