2017-09-26 12 views
0

id(sittername)の代わりにdbから名前を表示しようとしていますが、すべての行に同じ名前が表示されています。 私が望むのは、$ ids配列のすべてのidに対してdbから名前を取得することです。 私があなたを助けてくれることを願っています。idの代わりにdbからの表示名

$results = $this->Admin_model->getSitter_Requests($config["per_page"], $page); 

     foreach ($results as $item) 
     { 
      $data['data1'] = []; 
      $sitter_job_id = $item['sitter_job_id']; 

私の問題は、コードのこの部分では、sitternameは私の$のidの配列の最後のidから来るだけで一つの名前を持っているされています。私は私のコントローラ... CodeIgniterのフレームワークで

をMVCを使用しています。私が望むのは、$ id配列内のすべてのidに対してdbから名前を取得することです。

$ids = $item['sitter_id']; 

    foreach ((array)$ids as $id) 
    { 
     if($id != 0 && $id != null){ 
      $sittername = $this->Admin_model->get_sitter_name($id[0]); 
      $data["sittername"] = $sittername; 
     } 

    } 
    } 


     $data["results"] = $results; 
     $data["links"] = $this->pagination->create_links(); 

     $this->load->view('admin/superadmin_sitter_requests',$data); 

マイモデル:

public function getSitter_Requests($limit, $start) 
    { 
     $this->db->select('*'); 
     $this->db->limit($limit, $start); 
     $query = $this->db->get('ps_sitter_jobs'); 
     if ($query->num_rows() > 0) { 
      foreach ($query->result_array() as $row) { 
       $data[] = $row; 
      } 
      return $data; 
     } 
     return array(); 

    } 
function get_sitter_name($id) { 

     $this->db->select('fname'); 
     $this->db->where('id', $id); 
     $query = $this->db->get('ps_cms_users'); 
     return $query->row()->fname; 

    } 
ps_sitter_jobs table columns: 
sitter_job_id     | int(11) PRI     
sitter_id      | int(11) FK from ps_cms_users(id)     
seller_sitter_id    | int(11)     
token_trans_id     | varchar(255)    
camp_id      | int(11)     
book_id      | int(11)     
sitter_status     | enum('0','1','2','3','4') 
created_date     | datetime     
modify_date     | datetime     
assign_new_sitter_btn_disabled | int(11)     
refund_btn_disabled   | int(11)  
=================================================== 
ps_cms_users table columns: 
id   | int(11)  PRI 
email  | varchar(128) 
password  | varchar(128) 
fname  | varchar(128) 
lname  | varchar(128) 
mobile  | varchar(20) 
roleId  | int(4)  
createdBy | int(11)  
createdDtm | datetime  
updatedBy | int(11)  
updatedDtm | datetime  
partner_type | int(11)  
state  | int(11)  
city   | int(11)  
userDesc  | varchar(255) 
================================================== 

マイビュー:完全にあなたがここで達成しようとしているのか理解が、私はあなたがJOINを使用することができると思うのは非常に簡単ではありません

if(count($results) > 0){ 
    foreach ($results as $result){ 
     $result_id = $result['sitter_job_id']; 
    ?> 
     <tr> 
      <td> 
       <?php echo '#'.$result_id; ?> 
      </td> 
      <td> 
       <?php 
       if($result['sitter_id'] == 0 || $result['sitter_id'] == null) 
       { 
        echo "Sitter Not Assigned yet"; 
       } 
       else 
       {     
        echo $sittername; 

       } 
    } 
    ?> 
+0

この質問を簡単に解決できるように、表とその列を記載してください。 ps_sitter_jobsとps_cms_usersが外部キー関係を持っている場合、内部結合を行うことができます(テーブルとデータがクリアされていないため) –

+0

私はすでにテーブル構造と私の特定の問題を追加しています。ありがとう –

答えて

1

あなたの最初の結果をループする代わりに。ここに提案があります。

あなたのコントローラー

$data["results"] = $this->Admin_model->getSitter_Requests(); 
$this->load->view('admin/superadmin_sitter_requests', $data); 

あなたのモデル(Admin_model.php)

public function getSitter_Requests() 
{ 
    $this->db->join('ps_cms_users', 'ps_cms_users.id = ps_sitter_jobs.sitter_id'); 
    return $this->db->get('ps_sitter_jobs')->result(); 
} 

ビュー(管理者/ superadmin_sitter_requests)(Iは、明確にする目的のために書式設定改ページとHTMLを残しています)

foreach ($results as $result) 
{ 
    echo 'SITTER_JOB_ID = ' . $result['sitter_job_id']; 
    echo 'SITTER_ID = ' . $result['sitter_id']; 
    echo 'SITTER_FIRSTNAME = ' . $result['fname']; 
} 

私はこれが役立つことを願っています。

+1

Thaaaanls @Klaasこれはまさに私が欲しいものです。君は。あなたのモデルコードの小さなもの。 result()の代わりにresult_array()を使うべきです。再度、感謝します –

関連する問題