从mysql取数据时,php循环的问题.

假如mysql表中有id,pid两个字段,,id自增,pid即为父id数据aid=1,pid=0,数据b为数据a的子数据id=2,pid等于a的id,即1,数据c为数据b... 假如mysql表中有id,pid两个字段,,id自增,pid即为父id
数据a id=1,pid=0,
数据b为数据a的子数据 id=2,pid等于a的id,即1,

数据c为数据b的子数据 id=3,pid等于b的id,即2,
......
每条数据可以不止一个子数据,
请问要怎么才能通过循环打印出所有和a相关的数据出来(即a的子数据极其子数据的子数据...)
谢谢大家~
展开
 我来答
windblast
2012-08-29 · 知道合伙人软件行家
windblast
知道合伙人软件行家
采纳数:5633 获赞数:13623
毕业于空军第一航空学院电子专业,1991年开始接触电脑,从事多年计算机编程,具有较丰富的经验。

向TA提问 私信TA
展开全部
你的问题实际是就是常见的树结构的问题,以下是示例代码:

数据库设计:
--
-- 数据库: `test`
--
-- --------------------------------------------------------
--
-- 表的结构 `menu`
--
CREATE TABLE IF NOT EXISTS `menu` (
`ID` int(10) unsigned NOT NULL auto_increment,
`PID` int(11) NOT NULL,
`TITLE` varchar(200) NOT NULL,
`REMARK` varchar(200) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;
--
-- 导出表中的数据 `menu`
--
INSERT INTO `menu` (`ID`, `PID`, `TITLE`, `REMARK`) VALUES
(1, 0, '公司', '根'),
(2, 1, '财务部', '部门'),
(3, 1, '销售部', '部门'),
(4, 1, '人事部', ''),
(5, 2, '会计', ''),
(6, 3, '业务员', ''),
(7, 4, '人事总管', '');

<?php
include "config.php";
include "mysql.php";
$db = new Mysql('test'); //几个简单的类,不用列出来大家也看得懂。就是实例化一个数据库连接而已。
function RootMenu ($PID,$n){
global $arr,$db;
$sql = "select * from menu where `PID` =$PID";
$result = $db->query($sql);
while ($i=$db->fetch_array($result)){
$i["TITLE"] =str_repeat('--',$n).$i["TITLE"];
$arr[] =$i;
RootMenu($i["ID"],($n+4));
}
return $arr;
}
$arr = RootMenu(0,0);
?>
匿名用户
2012-08-29
展开全部
先把所有结果集存放到数组里、
定义一个顶层节点的id数组
定义个函数
再在函数里定义一个当前层级节点的id数组,及pid相同的数组,此时可以打印
然后递归调用此函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式