2017-02-05 5 views
0

Ich versuche, eine Liste von Studenten mit ihren entsprechenden Prüfungsschlüssel anzuzeigen. Aber mein Code dupliziert die Daten und die Prüfungsschlüssel sind den falschen Schülern zugeordnet (siehe das Bild, was ich meine). Kann mir jemand sagen, was mit meinem Code nicht stimmt? Ich vermute, dass es etwas mit meinem Modell zu tun hat, aber ich weiß nicht, was ich ändern soll.Duplizierung von Daten in View php codeigniter

Duplicate Data

Und hier sind meine Code.

-Controller

public function loadExamKey($examNo){ 
    $this->load->model('exam_model'); 
    $data = $this->addExamKey($examNo); 
    $data = $this->exam_logs($examNo); 

    $data['examKey'] = $this->exam_model->displayExamKeys($examNo); 
    $this->load->view('exam_key', $data); 
} 

Modell

public function displayExamKeys($examNo){ 

     $this->db->select('student.lastName'); 
     $this->db->select('student.firstName'); 
     $this->db->select('student.middleName'); 
     $this->db->select('student.student_no'); 
     $this->db->select('keys.exam_key'); 
     $this->db->from('student'); 
     $this->db->join('keys', 'student.course_id = keys.course_id'); 
     $this->db->where('exam_no', "$examNo"); 

     $query = $this->db->get(); 

     if($query->num_rows() > 0){ 
      return $query->result(); 
     } 
     else 
      return false; 

Ansicht

<table class="table table-striped table-advance table-hover"> 
         <tbody> 
          <tr> 
          <th><i class="">Student Number</th> 
          <th><i class=""></i> Name</th> 
          <th><i class=""></i> Exam Key</th> 

          </tr> 
       <?php 

       if($examKey != NULL){ 
       foreach ($examKey as $row) { 
        echo '<tr>'; 
        echo '<td>'.$row->student_no.'</td>'; 
        echo '<td>'.$row->lastName.",".$row->firstName." ".$row->middleName.'</td>'; 
        echo '<td>'.$row->exam_key.'</td>'; 

        echo '<tr>'; 
       } 

       } 

ich php codeigniter und postgresql verwende. Ich habe gerade angefangen das zu lernen und ich bin ein bisschen verwirrt.

+0

versuchen, diese Linie nach $ this-> db-> where ('exam_no', "$ examinNo"); $ this-> db-> group_by ('exam_no'); –

+0

@GeordyJames es funktioniert auch nicht und ich habe Fehler: Nachricht: pg_query(): Abfrage fehlgeschlagen: Fehler: Spalte "student.lastName" muss in der GROUP BY-Klausel erscheinen oder in einer Aggregatfunktion verwendet werden LINE 1: SELECT " student "." lastName "," student "." firstName "," student ...^ – dubiousconquest

+0

Können Sie alle Attribute (alle Spaltenfelder) der Schüler-Tabelle und der Schlüsseltabelle mit der Frage –

Antwort

0

Warum verwenden Sie zwei Funktion für die Daten, die diese Funktion

Verwendung in der Steuerung dieser Funktion

public function loadExamKey($examNo) 
{ 
    $data = $this->addExamKey($examNo); 
    $data = $this->exam_logs($examNo); 
    $data['examKey'] = $this->displayExamKey($examNo); 
    $this->load->view('exam_key', $data); 
} 

Einsatz im Modell zeigt

public function displayExamKeys($examNo) 
{ 
    $this->db->select('student.*,keys.exam_key'); 
    $this->db->from('student'); 
    $this->db->join('keys', 'student.course_id = keys.course_id'); 
    $this->db->where('student.exam_no', $examNo); 
    $this->db->group_by('exam_no'); 
    $query = $this->db->get(); 
    return $query->result(); 
} 
+0

Nein, es ist anders, das im Controller ist nur, um die displayExamKeys Funktion im Modell zu laden. Aber ich habe es bereits bearbeitet und das displayExamKey() im Controller entfernt, funktioniert aber immer noch nicht. – dubiousconquest

+0

Überprüfen Sie meine aktualisierte Ans @dubiousconquest –

+0

es funktioniert immer noch nicht. – dubiousconquest

0

Problem in Ihrer Join-Klausel ist. Der Rest des Codes sieht gut aus. Versuchen Sie zu aktualisieren, die Join-Klausel wie folgt:

$this->db->join('keys', 'student.course_id = keys.course_id', 'left'); 

Wenn nicht funktioniert, versuchen Sie, Ihre Abfrage zu visualisieren mit:

print_r($query); 

oder durch den Profiler ermöglicht:

$this->output->enable_profiler(TRUE); 
+0

Es funktioniert nicht. Ich benutzte print_r(), es zeigt auch doppelte Daten und falsche Zuordnung der Prüfungsschlüssel. – dubiousconquest