Получить данные на основе идентификатора пользователя (CodeIgniter) - PullRequest
0 голосов
/ 01 ноября 2018

Я довольно новичок в php, поэтому, пожалуйста, потерпите меня. У меня есть две таблицы в моей базе данных, users и onlineform таблицы. Таблица onlineform имеет поле userid в качестве внешнего ключа для поля id в таблице users. Я пытаюсь отобразить данные из таблицы onlineform на основе текущего имени пользователя. Проблема в том, что он отображает данные всех пользователей, а не того, кто вошел в систему. Я настроил запрос в моем form_model, но я не знаю, является ли запрос правильным

это модель

form_model.php

function getEmployees() 
{
    $this->db->select("users.id, onlineform.date, onlineform.day, onlineform.in1, 
        onlineform.out1, onlineform.in2, onlineform.out2");
    $this->db->from('users');
    $this->db->join('onlineform','users.id = onlineform.userid', 'left');
    $this->db->order_by('date asc');
    $query = $this->db->get();
    return $query->result();
}

это контроллер

form.php

public function table()
{
    if($this->session->userdata('username') != '')  
       {     
            $this->load->model('form_model');
            $query = $this->form_model->getEmployees();
            $data['EMPLOYEES'] = null;
            if($query) {
                $data['EMPLOYEES'] =  $query;
            }
       } 

    else  
       {  
            redirect(base_url() . 'index.php/form/login');  
       }

            $this->load->view('table.php', $data);
}

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

Table.php

<?php 
        foreach($EMPLOYEES as $employee)
          {?>
         <tr>
          <td align="center" 
          <?php if($employee->day === "SAT" || $employee->day === "SUN"): ?> style="background-color:#A9A9A9; color: white;" <?php endif; ?>>
            <strong><?=$employee->day;?></strong>
          </td>
          <td align="center" 
          <?php if($employee->day === "SAT" || $employee->day === "SUN"): ?> style="background-color:#A9A9A9; color: white;" <?php endif; ?>>
            <strong><?=$employee->date;?></strong>
          </td>
          <td><?=$employee->out1;?></td>
          <td><?=$employee->in1;?></td>
          <td><?=$employee->out2;?></td>
          <td><?=$employee->in2;?></td>
         </tr>     
        <?php }?>

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Вы можете сохранить текущий зарегистрированный ИД пользователя в сеансе, а затем использовать его при извлечении данных из базы данных. измените свой код form_model.php на этот

function getEmployees() 
{
    $this->db->select("users.id, onlineform.date, onlineform.day, onlineform.in1, 
        onlineform.out1, onlineform.in2, onlineform.out2");
    $this->db->from('users');
    $this->db->join('onlineform','users.id = onlineform.userid', 'left');
    $this->db->where("users.id", $this->session->userdata('current_user_id'));
    $this->db->order_by('date asc');
    $query = $this->db->get();
    return $query->result();
}
0 голосов
/ 01 ноября 2018

Вы можете передать текущий зарегистрированный идентификатор пользователя в модель через getEmployees ($ userid)

$query = $this->form_model->getEmployees($userid); 

А затем используйте его в своем запросе, чтобы получить текущий идентификатор пользователя, который соответствует зарегистрированному пользователю, пользователю в базе данных;

function getEmployees($userid) 
{
    $this->db->select("users.id, onlineform.date, onlineform.day, onlineform.in1, 
    onlineform.out1, onlineform.in2, onlineform.out2");
    $this->db->from('users');
    $this->db->where('onlineform','users.id',$userid); //add this line
    $this->db->join('onlineform','users.id = onlineform.userid', 'left');
    $this->db->order_by('date asc');
    $query = $this->db->get();
    return $query->result();
}

А затем передайте его на ваше усмотрение.

Надеюсь, это поможет.

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