当前位置:编程学习 > php >>

新手求助PHP 程序 CI框架开发 高手进来看一眼吧

我用的CI框架开发 我要做的是一个从数据库里面调用一些栏目,然后栏目下面还有子栏目,我想把子栏目显示在主栏目的下面,子栏目跟主栏目的区别是id 跟uid 比方说 主栏目是5 那么子栏目的uid就是5 我用了个判断 如果 id = uid 就让他显示,不知道为什么 会显示在最底下,也就是等主栏目循环完了之后才会循环子栏目,代码如下: <ul style="margin-top:20px; border-top:dashed 1px #666666;"> <li style="font-weight:600;">栏目名称</li> <?php foreach ($news as $news_item): echo "<li>".$news_item['title']."</li>"; if($news_item['id'] = $news_item['uid']){ echo "<li>"."ss".$news_item['title']."</li>"; } endforeach ?> </ul>
补充:以上是后台的,前台也需要这样显示,前台需要分开来做,结构基本是<li></li><ul><ul>
li里面放的是主菜单,ul里面是对应的几个子菜单,  然后会做个js来点击显示隐藏这个子菜单的ul   希望高手解答
‘谢谢
追问:
        	
				
不行,试了,用这个循环的话  循环了两次,
汗!!! 我以为我回答的够清楚了,你想实现两级栏目,不循环两次怎么能实现,你好好研究研究吧。。。
不是    我的意思是    有主栏目    然后有很多子栏目,   主栏目下面显示子栏目,
数据库中  基本是   id   uid    title    这样的  id是主栏目的   uid  是子栏目的吧,  如果我要加主栏目 比方说     id  1   uid 0   title   燃气    我加了一个  id是1 的   标题是燃气的, 因为是主栏目   所以uid是0    然后我要添加燃气的子栏目  我可以 这么加    id 2   uid  1   title  燃气工程   这样的吧
答案:常规的方法是ul嵌套,即主菜单ul-li里嵌套子菜单ul,要用到两级循环
首先循环主菜单,要有固定的条件来判断出主菜单,比如主菜单的uid==0或者其它。。。


<ul style="margin-top:20px; border-top:dashed 1px #666666;">
<li style="font-weight:600;">栏目名称</li>
<?php foreach ($news as $news_item): //循环一次
        if($news_item['uid'] == 0){ //判断并得到主菜单

                echo "<li>".$news_item['title'] . '<ul>';
                foreach ($news as $child_item): //循环二次
                        if($news_item['id'] == $child_item['uid']){ //判断并得到对应子菜单
                                echo "<li>"."ss".$child_item['title']."</li>";
                        }
                endforeach;
                echo "</ul></li>";
        }

endforeach; ?>
</ul>


当然这仅限于两级菜单,多级或无限极,可以使用函数递归
function menu($uid=0){ //设置缺省从主菜单开始
        global $news;
        foreach ($news as $news_item):

                if($news_item['uid'] == $uid){

                        echo "<li>".$news_item['title'] . '<ul>';
                        menu($news_item['id']); //递归调用

                        echo "</ul></li>";
                }

        endforeach;

}
------ 调用方法 ------------------------------
<ul style="margin-top:20px; border-top:dashed 1px #666666;">
<li style="font-weight:600;">栏目名称</li>
<?php menu();?>

</ul>



当然有时需要判断是否有子菜单存在,你可以根据实际情况加一个判断是否有子菜单的函数,用来判断是否打印子菜单的外部标签<ul></ul>
其他:没看明白你的意思,我猜测你是要实现以下的效果
<?php foreach ($news as $news_item):
        if($news_item['uid'] ==0){

                echo "<li>".$news_item['title']."</li>";
                foreach ($news as $vv){

                        if($vv['uid']==$news_item['id'])

                          echo "<li>"."ss".$vv['title']."</li>";

                }
        }
endforeach ?> 

上一个:下的php程序怎么打开
下一个:没有dreamweaver就能打开php程序,有dreamweaver就打不开php程序

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,