2016-04-22 4 views
0

Что не так с моим кодом, пожалуйста? Я выбрал идентификатор студента, и я его сохранил в сеансе, а затем я проверил на нем, чтобы выбрать соответствующее значение из таблицы, и из результата я хочу получить таблицу, которую я ищу, но она не работает , У меня есть ситуация, ну у меня есть три таблицы отсутствия_студента (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'? Если да, действительно ли запись действительно существует в «absense», удовлетворяющей условию 'where ('id_absence', $ id_abs)'? – DFriend

ответ

0

Самый простой запрос, чтобы получить данные, которые вы хотите использовать, используя соединение. Вместо того, чтобы использовать Query Builder, я буду использовать 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

, если им не беспокоит, как бы я показать результат, пожалуйста

результат() в $ г) { ?> ?? –

+0

пожалуйста, как отобразить это результат foreach $ data-> result as $ 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

теперь im получение этой ошибки ошибки базы данных не используется таблица –

+0

вы можете отправить снимок экрана об ошибке, а информация о ваших двух таблицах – elddenmedio

+0

- это отсутствие исключений в отсутствии_student (id_absence, CNE) (id_absence, id_seance, justification, course), студент (CNE, имя) Я хочу, чтобы учащийся смог проверить его отсутствие по курсам и оправдать его –

id_absence
id_absence;?>