2015-01-27 5 views
0

내 데이터베이스 테이블이 (대략적인 윤곽)처럼 보인다 보여주는 배수 : 여기PHP 루프 -

+--------+-----------+-------------+---------+------------+------------+ 
    | log_id | host_name | status | host_id | profile_id | event_date | 
    +--------+-----------+-------------+---------+------------+------------+ 
    | 1 | site1 | Online | 2 | 1  | <*date*> | 
    +--------+-----------+-------------+---------+------------+------------+ 
    | 2 | site1 | Online | 2 | 1  | <*date*> | 
    +--------+-----------+-------------+---------+------------+------------+ 
    | 3 | site1 | Offline | 2 | 1  | <*date*> | 
    +--------+-----------+-------------+---------+------------+------------+ 
    | 4 | site2 | Online | 4 | 1  | <*date*> | 
    +--------+-----------+-------------+---------+------------+------------+ 
    | 5 | site2 | Maintenance | 4 | 1  | <*date*> | 
    +--------+-----------+-------------+---------+------------+------------+ 

내 코드입니다 :

VIEW: 
<?php foreach($result as $row): ?> 
    ['<?php echo $row->host_name;?>',<?php echo $this->help_model->filter_online($id,$row->host_id, 'Online');?>, 
    <?php echo $this->help_model->filter_online($id,$row->host_id, 'Offline');?>, 
    <?php echo $this->help_model->filter_online($id,$row->host_id,'Maintenance');?>], 
<?php endforeach; ?> 

CONTROLLER: 
public function userreports() 
    {  
     $data['id']=$this->session->userdata('profile_id'); 
     $this->session->set_userdata('from_date', '2015-01-01'); 
     $from_date = $this->session->userdata('from_date'); 
     $date = date('Y-m-d',now()); 
     $this->session->set_userdata('to_date', $date); 
     $to_date = $this->session->userdata('to_date'); 
     $data['result'] = $this->help_model->all_logs($this->session->userdata('profile_id')); 
     $this->load->view('squidtopus1-host-reports', $data); 
    } 

MODEL: 
function all_logs($id) 
    { 
     $id = $this->session->userdata('profile_id'); 
     $this->db->select("*"); 
     $this->db->from('server_log'); 
     $this->db->where('profile_id',$id); 
     $query = $this->db->get()->result(); 
     return $query; 
    } 

function filter_online($data, $host_id, $status) 
    { 
     $from_date = $this->session->userdata('from_date'); 
     $to_date = $this->session->userdata('to_date'); 
     $id = $this->session->userdata('profile_id'); 
     $this->db->select()->from('server_log'); 
     $this->db->where('profile_id',$id); 
     $this->db->where('status',$status); 
     $this->db->where('host_id',$host_id); 
     $this->db->where('event_date >=',$from_date); 
     $this->db->where('event_date <=',$to_date); 
     $data = $this->db->get()->result(); 
     $stat_count = 0; 
     foreach ($data as $row) { 
      $stat_count++; 
     } 

     return $stat_count; 
    } 

제대로 표시됩니다 표시하는 데 필요한 정보 만 문제는 'profile_id = $ id'(이 경우, profile_id = 1)과 일치하는 데이터베이스의 각 행에 대해 반복적으로이를 표시한다는 것입니다.

['site1', 2,1,0], ['site2', 1,0,1] 

을하지만 대신 보여줍니다 : 이상적으로는 표시해야합니다

['site1', 2,1,0],['site1', 2,1,0],['site1', 2,1,0],['site2', 1,0,1],['site2', 1,0,1] 

내가 잘못 갔어요 어디 그래서이 문제를 해결에 어떤 통찰력이 크게 감사합니다 ... 확인할 수 없습니다. 미리 감사드립니다!

답변

0
function all_logs($id) 
{ 
    $id = $this->session->userdata('profile_id'); 
    $this->db->select("DISTINCT(host_id), host_name"); 
    $this->db->from('server_log'); 
    $this->db->where('profile_id',$id); 
    $query = $this->db->get()->result(); 
    return $query; 
} 

시도는 속임수를 썼는지

+0

위와 같이 함수를 변경합니다! 고맙습니다 user4496955! –