Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 基于用户id检索数据(CodeIgniter)_Php_Codeigniter - Fatal编程技术网

Php 基于用户id检索数据(CodeIgniter)

Php 基于用户id检索数据(CodeIgniter),php,codeigniter,Php,Codeigniter,我对php相当陌生,所以请容忍我。我的数据库中有两个表,users和onlineform表。onlineform表将userid字段作为users表中id字段的外键。我试图根据当前用户登录名显示在线表单表中的数据。问题是,它显示所有用户的数据,而不是登录用户的数据。我已经在我的表单_model中设置了一个查询,但我不知道该查询是否正确 这就是模型 form_model.php: function getEmployees() { $this->db->select("use

我对php相当陌生,所以请容忍我。我的数据库中有两个表,
users
onlineform
表。
onlineform
表将
userid
字段作为
users
表中
id
字段的外键。我试图根据当前用户登录名显示
在线表单
表中的数据。问题是,它显示所有用户的数据,而不是登录用户的数据。我已经在我的
表单_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);
}
<?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 }?>
这就是我的观点

table.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);
}
<?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 }?>

style=“背景色:#A9A9;颜色:白色;”>

style=“背景色:#A9A9;颜色:白色;”>


您可以通过getEmployees($userId)将当前登录的userId传递到模型中

然后在查询中使用它来获取当前用户ID,该用户ID与数据库中的登录用户相匹配

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();
}
然后正常地将其传递给您的视图


希望这有帮助。

您可以在会话中保存当前登录的用户ID,然后在从数据库检索数据时使用它。 将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();
}

现在它给我这个错误,消息:为foreach()提供的参数无效。谢谢。它可以工作,只需要对代码进行一些调整。非常感谢你,伙计