用户
 找回密码
 入住 CI 中国社区
搜索
查看: 5276|回复: 11
收起左侧

[已解决] 怎样在V层循环再循环?

[复制链接]
发表于 2009-4-24 00:05:26 | 显示全部楼层 |阅读模式
本帖最后由 mrcml945 于 2009-4-24 08:20 编辑


类别1:     
三国志
版块:




类别2:
信长野望
版块:
织田家
武田家
德川家

如果要用MVC模式做个循环,按上面的格式输出出来,怎么输出?因为算出来的类id:  如$row->id 是在V层得出的 那怎么把V层的$row->id传到下一层子循环呢?  我想了3个小时都没写出来 各位大大 教教小弟 不胜感激

在V层里通过循环能循环出 类别,但是该类别下的版块...我怎么也循环不出来
发表于 2009-4-24 08:49:51 | 显示全部楼层
都抓到二给数组中就可以了。
建议,把这个过程放在控制器中实现。
发表于 2009-4-24 10:13:20 | 显示全部楼层
我想问一下楼主,如果用纯 PHP,你怎么实现?
 楼主| 发表于 2009-4-24 11:24:18 | 显示全部楼层
纯PHP很好实现啊
比如
$sql="select * from sanguo";
$res=mysql_query($sql);
echo "<table>";
while($Catrow=mysql_fetch_assoc($res))
{
      echo "<tr>";
      echo "<td>".$Catrow['name']."</td>";
      echo "</tr>";
      $sql2="select * from inCat where cat_id=".$Catrow['id'];
      $res2=mysql_query($sql2);
      $num2=mysql_num_rows($res2);
      if($num2==0)
      {
           echo "<tr><td>类里没有子类</td></tr>";
      }
      else
      {
           while($inCatrow=mysql_fetch_assoc($res2))
           {
                 echo "<tr><td>";
                 echo $inCatrow['inCatname'];
                 echo "</td></tr>";
           }
      }
}
echo "</table>";
 楼主| 发表于 2009-4-24 11:26:18 | 显示全部楼层
怎么在控制器里实现?
我在view里实现了 嵌套子循环
如:
<table align="center" width="978" border="1" align="left" cellpadding="1" cellspacing="1">
<?php foreach($category as $row): ?>
  <tr>
    <td align="left"><strong><?php echo $row->category; ?></strong></td>
  </tr>
  <?php foreach($forum as $row2):
                 if($row->id==$row2->cat_id): ?>
                       
                        <tr><td align="left"><a href="<?php echo site_url('luntan/forum')."/".$row2->id ?>"><?php echo $row2->name; ?></a><br /><?php echo $row2->description; ?></td></tr>
                       
                        <?php endif;
                        endforeach; ?>
                        <tr><td height="20px"></td></tr>
<?php endforeach; ?>
</table>

但是控制器里要怎么实现?大大教我!
发表于 2009-4-24 12:08:33 | 显示全部楼层
我没看出来 CI 和 PHP 有什么区别,都是一样的循环。
循环请求数据库,现在也是循环请求数据库,然后把数据放到数组里,你之前是直接输出。
没什么区别,还是要用发散思维。
 楼主| 发表于 2009-4-24 12:10:10 | 显示全部楼层
Hex大大,那你写个小片断出来 给我看下啊 不然我想到100岁都想不出
发表于 2009-4-24 13:55:55 | 显示全部楼层
我没看出来 CI 和 PHP 有什么区别
Hex 发表于 2009-4-24 12:08

我太赞同你这几话,CI和PHP就是没什么区别,而其他的PHP框架和PHP区别就大了,学其他PHP框架,相当于又学了一门新语言。
发表于 2009-4-24 14:17:11 | 显示全部楼层
你需要构建一个具备所有数据的二维数组。
在查询数据库的时候,不要 echo,而是存到数组中,也就是在根类别的一个项目中加上子类别的内容,形如

array('根类别1' => array('此类别的信息' => 'xxxx', '子类数组' => array(.........)),
'根类别2' => array('此类别的信息' => 'xxxx', '子类数组' => array(.........)),
...
);

我认为构建上面这样的数组是编程基本功。
发表于 2009-4-25 11:39:34 | 显示全部楼层
数组是编程基本功,数组也很常用吧。

本版积分规则