переходя к просмотру в codeigniter - PullRequest
0 голосов
/ 23 января 2012

Я пытаюсь подсчитать количество строк в моей таблице, которые соответствуют определенным критериям. Мой код работает нормально и возвращает количество строк соответственно. Но у меня проблема с отображением количества строк в моем представлении

мой контроллер:

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

  $this->load->view('testviewad', $data);
}

во 2-й строке хранится количество строк. если я сделаю

<?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. Заранее спасибо.

1 Ответ

2 голосов
/ 23 января 2012

Я предполагаю, что $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";
}

ОБНОВЛЕНИЕ

После просмотра большего количества кода.Кажется, вы перезаписываете $sql в методе get_status() модели.Измените это на следующее:

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";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...