2016-04-23 2 views
1

КонтроллерОтображение вложенного Еогеасп с, если еще в PHP CodeIgniter

public function admin() 
{ 
    // get the current date employee logged in details 
    $data['get_attendance'] = $this->attendance_model->get_attendance(); 

    // get the active employee details 
    $data['get_employee'] = $this->attendance_model->get_employee(); 

    //print_r($data['get_employee']); exit(); 

    // attendance page 
    $data['header'] = "Employee"; 
    $data['sub_header'] = "Attendance employee"; 
    $data['main_content'] = 'attendance/admin_list'; 
    $this->load->view('employeelayout/main',$data); 
} 

Модель

public function get_attendance() 
{ 
    return $this->db->where('date',date('Y-m-d'))->get('attendance')->result_array(); 
} 

public function get_employee() 
{ 
    return $this->db->where('is_active',1)->get('employee')->result_array(); 
} 

Просмотров

<?php $count = 1 ?> 
<?php foreach ($get_employee as $employee) { ?> 
<tr class="gradeX"> 
    <td><?php echo $count++ ?></td> 
    <td><?php echo $employee['first_name'] . ' ' . $employee['last_name'] ?></td> 
    <td><?php echo $employee['employee_number'] ?></td> 
     <?php foreach ($get_attendance as $attendance) : ?> 
     <!-- if employee exists --> 
      <?php if($employee['employee_id'] == $attendance['employee_id']) { ?> 
      <td><?php echo date('M-Dj-Y',strtotime($attendance['date'])) ?></td> 
      <td><?php echo $attendance['mark_in_time'] ?></td> 
       <td>mark out going</td> 
       <td>Active</td> 
      <?php break; ?> 

     <?php } elseif($employee['employee_id'] != $attendance['employee_id']) { ?> 
      <td><?php echo "i'm absent" ?></td> 
      <?php break; ?> 
     <?php } ?> 
     <?php endforeach; ?> 
    </tr> 

    <?php } ?> 

Я тусклый t для отображения текущего зарегистрированного (текущего) сотрудника и отображения отсутствующих сотрудников. Я получаю детали сотрудника из таблицы сотрудников. и данные о посещаемости из таблицы посещаемости. если сотрудник отсутствует, и я хочу отобразить отсутствующее другое, отобразите данные для входа. где здесь цикл foreach не отображается должным образом с условием if. что не так с петлей.

ответ

0

попробовать это:

<?php foreach ($get_employee as $employee) : ?> 
    <tr class="gradeX"> 
     <td><?php echo $count++ ?></td> 
     <td><?php echo $employee['first_name'] . ' ' . $employee['last_name'] ?></td> 
     <td><?php echo $employee['employee_number'] ?></td> 
      <?php foreach ($get_attendance as $attendance) : ?> 
      <!-- if employee exists --> 
      <?php if($employee['employee_id'] == $attendance['employee_id']) : ?> 
       <td><?php echo date('M-Dj-Y',strtotime($attendance['date'])) ?></td> 
       <td><?php echo $attendance['mark_in_time'] ?></td> 
        <td>mark out going</td> 
        <td>Active</td> 

      <?php elseif ($employee['employee_id'] != $attendance['employee_id']) : ?> 
       <td><?php echo "i'm absent" ?></td> 

      <?php else : ?> 

      <?php endif; ?> 

      <?php endforeach; ?> 
    </tr> 
<?php endforeach; ?> 
+0

попробовал, но теперь использует. – Rakesh

+0

ошибка по прежнему петле – Rakesh

+0

какая ошибка? – ichadhr

0

Применить левое соединение вместо двух разных запросов.

Поскольку в настоящее время вы применили две петли и их сравнения, они будут потреблять много времени выполнения. И я не думаю, что это хороший код. Если вы получаете тысячи данных, чем определенно, вы можете анализировать время выполнения.

Так что лучше применить запрос присоединения.