myskl 发表于 2011-4-18 23:28:38

请问我这样的遍历类应该怎么应用在ci呢?

其实就是利用里面的star方法和show方法在循环。但是发现ci里面的模型不能直接这样用?

以前是用while($row = mysql_fetch_array($res))作循环的,
但是现在用while ($row = $res->row_array()) 好像无效。怎么办呢?




$tree = new tree();
$a = $tree->star();
print_r($a);



class tree {
function star()
{
$this->db = $conn;
$sql = "select * from tvmenu where bid=0";
$this->res = mysql_query($sql, $this->db);
$this->arr = array();
$this->show($this->res,1,0);
return $this->arr;
}
function show($res,$i,$ii){
   
    while($row = mysql_fetch_array($res))
    {
   $sql = "select * from tvmenu where bid=$row";
       $res_sub = mysql_query($sql, $this->db);
       $num_sub = mysql_num_rows($res_sub);
      
   if($num_sub > 0)
   {
      $array=array();
      echo "<li>+,{$row['id']},{$row['name']},{$i},{$ii}</li>";
      $array['id'] = $row['id'];
      $array['name'] = $row['name'];
      $array['exp'] = 'Y';
      $array['layer'] = $i;
      array_push ($this->arr, $array);
         $i++;
         $this->show($res_sub,$i,$ii);
         $i--;
      }else{
         $array=array();
         echo "<li>-,{$row['id']},{$row['name']},{$i},{$ii}</li>";
      $array['id'] = $row['id'];
      $array['name'] = $row['name'];
      $array['exp'] = 'N';
      $array['layer'] = $i;
      array_push ($this->arr, $array);
         }   
    }
   
}
}

Hex 发表于 2011-4-19 01:08:14

用 foreach 循环,请仔细揣摩手册的例子。

myskl 发表于 2011-4-19 16:51:50

用 foreach 循环,请仔细揣摩手册的例子。
Hex 发表于 2011-4-19 01:08 http://codeigniter.org.cn/forums/images/common/back.gif


    已经解决了。我用foreach($res->result_array() as $row)来代替。

tangjianft 发表于 2012-4-2 18:12:47


用 foreach 循环,请仔细揣摩手册的例子。
效果不是一样的,如果查询的数据非常多,怎么办呢?

kissgxd 发表于 2012-4-3 22:04:31

tangjianft 发表于 2012-4-2 18:12 static/image/common/back.gif
用 foreach 循环,请仔细揣摩手册的例子。
效果不是一样的,如果查询的数据非常多,怎么办呢?
...

我觉得一般数据不会超过1千行吧,超过一千行就可以分页了。
页: [1]
查看完整版本: 请问我这样的遍历类应该怎么应用在ci呢?