2012-01-23 69 views
0

我正在尝试计算符合特定条件的表的行数。我的代码工作正常,并相应地返回行数。但我有问题呼应行的数量我认为传递到codeigniter中查看

我的控制器:

function index(){ 
    $data['states'] = $this->state_model->get_cities(); 
    $data['status'] = $this->state_model->get_status(); 

    $this->load->view('testviewad', $data); 
} 
在第二行

存储的行数。如果我在我看来,做

<?php echo $status?> 

它显示

0 
    0 
    0 
    0 

但我要表明

0 
    1 
    3 
    0 

如果我从模型行的计数值正确显示呼应。所以我的查询工作。但我认为我在传递观点时犯了错误。任何人都可以告诉我我做错了什么。

我的模型:

function get_status(){ 
    $states = $this->db->get('state'); 
    $like = array(); 

    foreach ($states->result() as $state){ 
    $cities = $this->db->get_where('city', array('state_id'=> $state->id)); 
    foreach ($cities->result() as $v){ 
     $s=$v->city_id."<br/>"; 
     $this->db->where('city_city_id',$v->city_id); 
     $this->db->where('status_status_id',1); 
     $q=$this->db->get('info'); 
     $sql = $q->num_rows(); 
    } 
    return $sql; 
    } 
} 

我用笨。 在此先感谢。

+0

首先,它是编写有效的PHP一个很好的做法。也就是说,不要'<?php echo $ status?>',而是'<?php echt $ status; ?>'。从控制器直接回显时,你会得到什么?它仍然是'0 0 0 0'还是'0 3 1 0'? – 2012-01-23 19:12:21

+0

如果从模型回显,例如,如果我确实echo $ sql它显示正确的答案。 – user1052462

+0

将你的'return $ sql;'向上移动一行,在'}' – Anil

回答

2

我的猜测是$data['status']越来越被覆盖每次迭代,留下的值为0当它传递给视图。

这很难确切地告诉没有看到“上下文”的相关代码,但你可以这样做:

$data['states'] = $this->state_model->get_cities(); 
$data['status'][] = $this->state_model->get_status(); // adding brackets - now $status will be an array 

,那么你可以通过在视图$status环:

foreach ($status as $s) 
{ 
    echo $s . "\n"; 
} 

UPDATE

在审查更多的代码后。看来你在get_status()模型方法中覆盖$sql。修改成这样:

function get_status(){ 
    $states = $this->db->get('state'); 
    $like = array(); 

    foreach ($states->result() as $state){ 
    $cities = $this->db->get_where('city', array('state_id'=> $state->id)); 
    foreach ($cities->result() as $v){ 
     $s=$v->city_id."<br/>"; 

     $this->db->where('city_city_id',$v->city_id); 
     $this->db->where('status_status_id',1); 
     $q=$this->db->get('info'); 
     $sql[] = $q->num_rows(); // add the array brackets 
    } 
    } 
    // move this down outside of the first foreach loop 
    return $sql; // now $sql is an array of values 
} 

然后,你要$data['status'] = $this->state_model->get_status();调用返回一个数组,可以通过在视图中循环:

所有的
foreach ($status as $s) 
{ 
    echo $s . "\n"; 
} 
+0

之前显示0,0,0,0,0与我的输出相同:( – user1052462

+0

你能显示更多的控制器吗?整个循环会帮助你 - 因为这就是我认为我们遇到问题的地方,而且,更多的视图背景将会有帮助, – swatkins

+0

我的完整控制器和模型如上所示 – user1052462