Отображение одного значения вне таблицы из объединенных таблиц в Codeigniter - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть три таблицы, к которым я присоединился, эти таблицы: посещаемость, сотрудник и подразделение

это моя модель для отображения данных

function lihatData()
{
    $this->db->select('attendance.emp_code, attendance.emp_name,division.name_division,attendance.date,attendance.time_in, attendance.time_out');    
    $this->db->from('attendance');
    $this->db->join('employee', 'employee.emp_code = attendance.emp_code');
    $this->db->join('division', 'employee.id_division = divisiob.id_division');
    $this->db->where_in('division.id_division',$this->session->userdata('id_division')
}

это мой взгляд

    <table class="table table-striped table-bordered table-hover">
        <thead>
            <tr>
                <th><center>No</center></th>
                <th><center>EMP CODE</center></th>
                <th><center>NAME</center></th>
                <th><center>DIVISION</center></th>
                <th><center>DATE</center></th>
                <th><center>TIME IN</center></th>
                <th><center>TIME OUT</center></th>

            </tr>
        </thead>
        <tbody>
        <?php 
        $no = 1;
        if(is_array($data)){
        foreach($data as $row){
        ?>
            <tr>
                <td><?php echo $no++;?></td>
                <td><?php echo $row->emp_code; ?></td>
                <td><?php echo $row->emp_name; ?></td>
                <td><?php echo $row->name_division; ?></td>
                <td><?php echo date("d-m-Y", strtotime($row->date))?></td>
                <td><?php echo $row->time_in; ?></td>
                <td><?php echo $row->time_out; ?></td>
            </tr>
        <?php } }?>

        </tbody>
    </table>

Вот что я получил из своего кода: this is the result

Итак, что мне нужно, чтобы изменить результаты примерно так:

                 Division : Redaksi (based on user's division)
-------------------------------------------------------------------
|    emp code   |    name   |   date   |   time in   |   time out  |
-------------------------------------------------------------------

ОБНОВЛЕНИЕ: мне уже удалось сгруппировать деление в таблицу, и вот результат:

table after grouped

Как вы видите, на нем уже отображаются данные деления пользователя. но мне нужно удалить таблицу деления и изменить ее на какое-то имя таблицы или поместить имя деления вверху таблицы на основе имени пользователя

Ответы [ 3 ]

0 голосов
/ 03 сентября 2018

Ключ заключается в том, как сгруппировать результат по подразделению. Я думаю, что вы можете отсортировать массив результатов по подразделению или сгруппировать его следующим образом:

$sortedResult = [];
foreach ($data as $row) {
    $sortedResult[$row->name_division] = $row;
}

//Render
<?php foreach ($sortedResult as $devision => $data) { ?>
<div><?php echo $devision; ?></div>
<table class="table table-striped table-bordered table-hover">
    <thead>
        <tr>
            <th><center>No</center></th>
            <th><center>EMP CODE</center></th>
            <th><center>NAME</center></th>
            <th><center>DATE</center></th>
            <th><center>TIME IN</center></th>
            <th><center>TIME OUT</center></th>

        </tr>
    </thead>
    <tbody>
    <?php
    $no = 1;
    foreach($data as $row){
    ?>
        <tr>
            <td><?php echo $no++;?></td>
            <td><?php echo $row->emp_code; ?></td>
            <td><?php echo $row->emp_name; ?></td>
            <td><?php echo date("d-m-Y", strtotime($row->date))?></td>
            <td><?php echo $row->time_in; ?></td>
            <td><?php echo $row->time_out; ?></td>
        </tr>
    <?php }?>

    </tbody>
</table>
<?php } ?>
0 голосов
/ 03 сентября 2018

возможным решением было бы извлечь данные из вашего первого array элемента, что-то вроде следующего должно работать

<?php
if (is_array($data) && count($data) > 0)
{
?>
<h1><?=$data[0]->nama_division; ?></h1>
<?php
}
?>
<table class="table table-striped table-bordered table-hover">
 <thead>
 <tr>
    <th><center>No</center></th>
    <th><center>EMP CODE</center></th>
    <th><center>NAME</center></th>
    <th><center>DATE</center></th>
    <th><center>TIME IN</center></th>
    <th><center>TIME OUT</center></th>

 </tr>
 </thead>
 <tbody>
 <?php 
 $no = 1;
 if(is_array($data))
 {
    foreach($data as $row){
 ?>
     <tr>
        <td><?php echo $no++;?></td>
        <td><?php echo $row->emp_code; ?></td>
        <td><?php echo $row->emp_name; ?></td>
        <td><?php echo date("d-m-Y", strtotime($row->date))?></td>
        <td><?php echo $row->time_in; ?></td>
        <td><?php echo $row->time_out; ?></td>
     </tr>
<?php 
    } 
 }
?>
</tbody>
</table>
0 голосов
/ 03 сентября 2018

функция lihatData () {

$this->db->from('attendance');
$this->db->join('employee', 'employee.emp_code = attendance.emp_code');
$this->db->join('division', 'employee.id_division = divisiob.id_division');
$this->db->where_in('division.id_division',$division);
return $this->db->get()->result(); 

}

попробуйте это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...