2012-01-23 8 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; 
    } 
} 

私はCodeIgniterのを使用しています。 ありがとうございます。

+0

まず、有効なPHPを書くことをお勧めします。つまり、 '<?php echo $ status?>'ではなく、 '<?php echt $ status; ?> 'あなたのコントローラーから直接エコーするとどうなるでしょうか?それでも '0 0 0 0'か' 0 3 1 0'ですか? –

+0

モデルからエコーされた場合、例えば、私が$ 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"; 
} 

更新

もっとコードを確認した後。 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

関連する問題