这个问题很实用,关于位置问题

彭哥 发布于 2012/04/11 20:19
阅读 1K+
收藏 6
PHP

具体情况如下:

1.数据库表格式如图所示

2.要生成如下格式:

您的位置:首页>新闻中心>公司新闻>今日浙江西湖市降落红雨>正文

其中公司新闻id=29,pid=3,今日浙江西湖...的记录id号为30,pid为29

最好也是用数组或调一次数据表就可以搞掂,谢谢!

加载中
0
泡不烂的凉粉
泡不烂的凉粉

传入的id 很可能就是你正文的 id, 这个应该存放在你 文章数据表里的内容。

pid , 就是你分类需要的内容。 pid 由于导航里面形成了层级, 所以会传递pid 给你,

如果不传递pid ,应该从文章默认分类里获取这个分类id. 分类信息 可以转化数组形式。

<?php
$array = array('1'=>array('pid'=>'0','v'=>'一级分类1'),
'2'=>array('pid'=>'0','v'=>'一级分类2'),
'3'=>array('pid'=>'1','v'=>'二级分类1'),
'4'=>array('pid'=>'1','v'=>'二级分类2'),
'5'=>array('pid'=>'3','v'=>'三级分类1'),
'6'=>array('pid'=>'3','v'=>'三级分类2'),
'7'=>array('pid'=>'5','v'=>'四级分类'),
'8'=>array('pid'=>'6','v'=>'四级分类')
);



function foo1($id, $array) {
	if(!$id) return '首页';
	$str = foo1($array[$id]['pid'],$array).'-->'.$array[$id]['v'];
	return $str;
}

function foo2($id,$array) {
	if(!$id) return '首页';
	$str = $array[$id]['v'].'-->'.foo2($array[$id]['pid'],$array);
	return $str;
}

echo foo1(8,$array);
echo '<br>';
echo foo2(8,$array);

比较一下。 多思考。给的只是思路。 这种问题都重复好多次了。 不能再这么重复下去了。

 

彭哥
彭哥
回复 @木人mr : 还是请帮我看看为什么我从数据库调出的数据就不能生成你说的那种格式呢?怎么回事呢?谢谢!
彭哥
彭哥
回复 @木人mr : 惨了,在图中显示的数据表,我生成不了array这样形式的数组怎么办怎么办
彭哥
彭哥
回复 @木人mr : 大侠你太帅了,帅得没话说了,要是这个能加上链接就更帅了!!!
泡不烂的凉粉
泡不烂的凉粉
我给你的就是我的方法。 为什么无输出内容。 这个我真的不知道。 帮不了你。 看来你需要另寻他发了。 我没藏着掖着。 我只说点我懂了。 不显示的问题我真的不懂。
彭哥
彭哥
回复 @木人mr : 呵呵,你就是高手嘛,你自已的程序应该最了解的啊!别掖着藏着,大方点摆出来啥!!!
下一页
0
0
子木007
子木007
……我只知道oracle可以简单搞定……
0
归海一刀
归海一刀

没有明白你的意思,你是做无限级分类?做成树型菜单?

彭哥
彭哥
我都用红色字标明了,怎么可能不明白,就是要一个您的位置的导航条,只不过是动态生成的
0
MUTEX
MUTEX

为了提高性能,在表的数据量不大的情况下,可以将表全部读入内存中预先生成各节点的完整路径,用数组存下来备用。如果数据量比较大,可以加一个字段保存完整路径,在插入、更新纪录的时候生成完整路径预存下来。所谓空间换时间。

彭哥
彭哥
回复 @MUTEX : 没时间啊,三二天全弄清数组,太复杂了,还是从项目熟悉比较快!
MUTEX
MUTEX
回复 @彭哥 : 复习下数据结构有关树的知识吧
彭哥
彭哥
回复 @MUTEX : 就是把数据库表的内容保存在一个变量中,但问题我通过参数ID,PID怎么生成具体的格式的内容,如:首页>新闻中心>公司新闻>某某省连续下暴雨三天
MUTEX
MUTEX
回复 @彭哥 : 所谓内存就是你保存全部分类完整路径的的数组。
彭哥
彭哥
回复 @MUTEX : 大侠,我的PHP内功修为不高,未达到运用到内存处理的层次,我只想要最简单最实用的办法!若你能把怎么运用内存来存取数据 来解决这个问题的方法教给我,在下感谢不以!
下一页
0
白黑白
白黑白

查出来的数据放在list里  在jsp中遍历加判断就OK了

彭哥
彭哥
要是PHP能做就更好,JSP还用到这么复杂!
0
归海一刀
归海一刀

给你一个地址 http://www.oschina.net/code/snippet_99943_2521

你调用里面的get_pos方法就可以了,这个方法返回的是一个数组,然后你直接在模板上循环打印出来就是你要的结果

彭哥
彭哥
不是一个意思,况且它得不到我需要的
彭哥
彭哥
看了它的评论后觉得不靠谱!
0
xoHome
xoHome
这个好做吧,导航为保证效率启动加载到内存,存储结构为树。提供一个方法,该方法传入参数ID,返回由该ID指定节点到根节点的逆向列表。 至于不在该表中的某新闻标题,可以在获取导航链时加入到链尾。
彭哥
彭哥
回复 @木人mr : 恩,看到你给出解决方案,喜,但未给出具体案例,马上心又凉了
泡不烂的凉粉
泡不烂的凉粉
你的回复充满喜感。 有点冷。呵呵。
xoHome
xoHome
回复 @彭哥 : 真抱歉,我不是搞PHP的,对PHP也不太了解,貌似memchche应该支持这个缓存结构,具体案例没有,真是爱莫能助了。
彭哥
彭哥
发现这个最靠谱了,大侠有没有具体案例,谢谢!最好精简版!
0
aviation
aviation
这个可以参考<sql 反模式>一书中的第三章--“单纯的树”
彭哥
彭哥
太复杂了,不习惯用大炮打鸟!呵呵!
0
彭哥
彭哥
有点难度啊,关键是怎么样使具体对应起来,并不是直接生成单种,有时候要生成首页》新闻中心。有时候就只生成首页》新闻中心》公司新闻。有时候却生成为首页》新闻中心》公司新闻》某条新闻的标题》正文,正因为有这几种方式,就显得比较复杂,我传递的参数就只有id和pid
返回顶部
顶部