登录时查看/获取记录的用户数据 - CodeIgniter



我的问题是我的数据被立即获取,所有这些数据。当我在不同的登录用户上时,我需要查看每个用户的数据。例如:对于user1我需要Product1user2我需要Product2但现在我得到的只是我可以获取所有用户的数据。

这是我的模型

如您所见,我添加了连接查询,但仍在获取所有数据

public function showAllReviewers(){
$this->db->join('teachers', 'teachers.id = reviewers.user_id');
$query = $this->db->get('reviewers');
if($query->num_rows() > 0){
return $query->result();
}else{
return false;
}
}

我的控制器

public function showAllReviewers()
{
$result = $this->reviewer_model->showAllReviewers();
echo json_encode($result);
}

的观点

<tbody id="showdata">
</tbody>

我正在使用 ajax/js 来获取我的数据,所以这是我的 ajax/js 脚本以获取更多信息

//function
function showAllReviewers(){
$.ajax({
type: 'ajax',
url: '<?php echo base_url() ?>reviewers/showAllReviewers',
async: false,
dataType: 'json',
success: function(data){
var html = '';
var i;
for(i=0; i<data.length; i++){
html +='<tr class="table-info">'+
'<td>'+data[i].subject+'</td>'+
'<td>'+data[i].category+'</td>'+
'<td>'+data[i].set_rev+'</td>'+
'<td>'+data[i].group_name+'</td>'+
'<td>'+
'<a href="javascript:;" class="btn btn-info item-edit" data="'+data[i].id+'"> <span class="iconify" data-icon="bx:bx-edit" data-inline="false"></span> </a> '+
'<a href="javascript:;" class="btn btn-danger item-delete" data="'+data[i].id+'"> <span class="iconify" data-icon="bx:bx-trash" data-inline="false"></span> </a>'+
'</td>'+
'</tr>';
}
$('#showdata').html(html);
},
error: function(){
alert('Could not get Data from Database');
}
});
}

编辑:登录控制器

// Log in teacher
public function login(){
$this->form_validation->set_rules('code', 'Code', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
if($this->form_validation->run() === FALSE){
$this->load->view('templates/header');
$this->load->view('teachers/login');
$this->load->view('templates/footer');
} else {
// Get code
$code = $this->input->post('code');
// Get and encrypt the password
$password = $this->input->post('password');
// Login user
$user = $this->teacher_model->login($code, $password);
if($user){
// Create session
$user_data = array(
'user_id' => $user->id,
'name' => $user->name,
'code' => $code,
'logged_in' => true
);
$this->session->set_userdata($user_data);
redirect('teacher/home');
} else {
redirect('teachers/login');
}
}
}

好吧,当用户登录时,您可以在会话中存储用户数据,例如id等,如下所示在控制器中:

$this->session->set_userdata('user_details', $user_data); // say user_details is the key we store it in

在您的模型中,您可以执行以下操作:

<?php

public function showAllReviewers(){
$this->db->join('teachers', 'teachers.id = reviewers.user_id');
$this->db->where('reviewers.user_id',$this->session->userdata('user_details')['user_id']);
$query = $this->db->get('reviewers');
if($query->num_rows() > 0){
return $query->result();
}else{
return false;
}
}

或者更好的方法是让一个私有变量说user_id并在构造函数中设置值。这将确保无论何时访问控制器中的模型实例,您都已经在模型中拥有它,而不是总是从会话中检索。

<?php
class YourModel extends CI_Model{
private $user_id;
function __construct(){
$this->user_id = $this->session->userdata('user_details')['user_id'];
}
public function showAllReviewers(){
$this->db->join('teachers', 'teachers.id = reviewers.user_id');
$this->db->where('reviewers.user_id',$this->user_id);
$query = $this->db->get('reviewers');
if($query->num_rows() > 0){
return $query->result();
}else{
return false;
}
}
}

您必须通过传递当前登录的用户/教师 ID 在 showAllReviewers(( 函数的 Sql 查询中添加一个 where 条件,或者在 CI 的情况下,您可以使用 isLogged/getId 函数获取相同的条件,该函数曾经存在于系统/库/客户中。

相关内容

  • 没有找到相关文章

最新更新