2016-04-22 55 views
0

我的代码有什么问题吗? 我选择了一个学生的标识符,并将其存储在会话中,然后对此进行了测试,以从表中选择相应的值,并从结果中找到我正在查找的表,但它不起作用。 继承人的情况,以及我有三个表absence_student(CNE,Idabsence),缺席(iabsence,....),我想从缺席行对应id_student(CNE)。加入使用外键codeigniter

public function absence(){ 
$id2= $this->session->CNE; 
$this->db->select('id_absence'); 
      $this->db->from('absence_etudiant'); 
      $this->db->where('CNE',$id2); 
      $query = $this->db->get(); 
      $row=$query->row(); 
if($query->num_rows() == 1) 
{ 

    $id_abs = $row->id_absence; 

} 

$this->db->select('*'); 
      $this->db->from('absence'); 
      $this->db->where('id_absence',$id_abs); 
      $query = $this->db->get(); 
      $result=$query->result(); 
$this->load->view('Etudiants/affi',$result); 


} 
+0

这是什么部分不起作用?你是否获得了'$ id_abs'的值?如果你是,并创下真的“由于缺少”满足条件'在哪里(“id_absence”,$ id_abs)'存在吗? – DFriend

回答

0

最简单的查询来获取您想要使用连接的数据。我将使用db->query()

public function absence(){ 
    $id2= $this->session->CNE; 
    $query = $this->db->query("Select * From absence_etudiant Inner Join absence On absence.id_absence = absence_etudiant.CNE Where absence_etudiant.CNE = $id2"); 

    $data['absences'] = $query->result(); 
    $this->load->view('Etudiants/affi', $data); 
} 

我可能没有加入正确的字段。我不确定我是否理解所涉及的表格结构。这是我最好的尝试,从你的问题的代码工作。

查询结果将在var $absences的视图中可用。在视图文件中,可以按如下方式创建每个缺席打印一行的表格。

<table> 
    <?php foreach($absences as $absence) : ?> 
     <tr> 
     <td><strong><?php echo $absence->id_absence; ?></strong></td> 
     <td><?php echo $absence->id_seance; ?></td> 
     <td><?php echo $absence->justification; ?></td> 
     <td><?php echo $absence->course; ?></td> 
     </tr> 
    <?php endforeach; ?> 
    </table> 

我不展示如何创建表的标题行,但如果你想要一个会的<table>标签和foreach环路之间放。

我应该补充一点,elddenmedio的其他答案在展示如何使用MVC主体构建此过程方面做得更好。他让控制器从模型中获取结果,然后将模型的返回传递给视图。

+0

如果我不是打扰如何将我显示的结果,请

​​id_absence <?PHP的foreach($数据 - >结果()为$ R){ ?> ​​<?php echo $ r-> id_absence;?> ?? ?? –

+0

请问如何显示$ data-> result为$ result?我没有得到它 –

+0

我已经更新了我的答案,以显示在视图中可以做什么。 – DFriend

0

可以发送更多ifno关于您的表关系。

我只能帮你这个查询

Controller.php这样

function absence(){ 
    $data['result'] = $this->model->get_absence($this->session->CNE); 

    $this->load->view('Etudiants/affi', $data); 
} 

model.php

function get_absence($id){ 
    $this->db->query('SELECT * FROM absence a WHERE a.id_absence IN (SELECT ae.id_absence FROM absence_etudiant ae WHERE ae.CNE = '.$id.' ORDER BY ae.CNE LIMIT 1)'); 
    $result = $this->db->get()->result(); 

    return $result; 
} 

希望,这帮助你

+0

现在即时得到这个错误数据库错误没有表使用 –

+0

您可以发送屏幕截图有关错误和有关您的2台 – elddenmedio

+0

有表absence_student(id_absence,CNE)缺席(id_absence,id_seance,理由,当然)学生(CNE,姓名)我希望学生能够通过课程检查他的缺席并证明它的合理性 –