CodeIgniter отображает пользователей из БД, которые не являются администраторами

Итак, я успешно создал методы в контроллере, поэтому, когда кто-то входит на мой сайт, и это администратор (значение 1 в столбце admin от db, а обычные пользователи имеют значение 0), перенаправить его на страницу, на которой только он можно увидеть. Теперь я хочу отобразить всех пользователей, которые не являются администраторами, для администратора, но я не знаю, как заставить это работать честно.

Модель:

 public function display_users() {

$query = $this->db->query('SELECT id, fname, email, username, password FROM register WHERE admin = 0');
return $query->result();
}

также попробовал это в модели:

  $this->db->select('id', 'fname', 'lname', 'email', 'username', 'password')
->where('admin', 0)
->get('register')
->result_array();

контроллер:

   public function admin() {

$isLogged = $this->session->userdata('email');

if ($isLogged) {
$check_admin = $this->signup_model->admin();

if ($check_admin == 1) {
$this->signup_model->display_users();

$this->load->view('navbar');
$this->load->view('header');
$this->load->view('admin');
$this->load->view('footer');
} else {
redirect('users/login');
}
}
}

Посмотреть:

<table class="usersTable">
<thead>
<tr class="column">
<th class="cell">ID</th>
<th class="cell">First Name</th>
<th class="cell">Last Name</th>
<th class="cell">Email</th>
<th class="cell">Username</th>
<th class="cell">Password</th>

</tr>
</thead>

<tbody>
<?php
if ($result->num_rows > 0) {

while ($row = $result->fetch_assoc()) {
?>
<tr>
<td class="cell"><?php echo $row->id; ?> </td>
<td class="cell"><?php echo $row->fname; ?> </td>
<td class="cell"><?php echo $row->lname; ?> </td>
<td class="cell"><?php echo $row->email; ?> </td>
<td class="cell"><?php echo $row->username; ?> </td>
<td class="cell"><?php echo $row->password; ?> </td></tr>
<?php }} ?>
</tbody>

0

Решение

Не используйте функции БД на ваш взгляд. Вам нужно установить переменную в вашем контроллере и отправить ее на ваш взгляд, примерно так:

модель

public function display_users() {

$query = $this->db->query('SELECT id, fname, email, username, password FROM register WHERE admin = 0');
return $query->result_array();
}

контроллер

public function admin() {
$return = array();
$isLogged = $this->session->userdata('email');

if ($isLogged) {
$check_admin = $this->signup_model->admin();

if ($check_admin == 1) {
$return['users'] = $this->signup_model->display_users();

$this->load->view('navbar');
$this->load->view('header');
$this->load->view('admin', $return);
$this->load->view('footer');
} else {
redirect('users/login');
}
}
}

Посмотреть :

<table class="usersTable">
<thead>
<tr class="column">
<th class="cell">ID</th>
<th class="cell">First Name</th>
<th class="cell">Last Name</th>
<th class="cell">Email</th>
<th class="cell">Username</th>
<th class="cell">Password</th>

</tr>
</thead>

<tbody>
<?php foreach ($users as $user) { ?>
<tr>
<td class="cell"><?php echo $user['id']; ?> </td>
<td class="cell"><?php echo $user['fname']; ?> </td>
<td class="cell"><?php echo $user['lname']; ?> </td>
<td class="cell"><?php echo $user['email']; ?> </td>
<td class="cell"><?php echo $user['username']; ?> </td>
<td class="cell"><?php echo $user['password']; ?> </td>
</tr>
<?php } ?>
</tbody>
2

Другие решения

Попробуй это:

// Get the role id of logged in user in some variable like $roleId

if($roleId == 1)   // Visible only for admin
{
$resultSet = $this->db->query("SELECT id, fname, email, username, password FROM register WHERE role != '1'");
// It will give you the user list other than admin role.
return $resultSet;
}

контроллер:

if ($ check_admin == 1) {
$ result = $ this-> signup_model-> display_users ();

        // pass this variable on the view so that you can use it there.

$this->load->view('navbar');
$this->load->view('header');
$this->load->view('admin', $result);   // like that
$this->load->view('footer');
} else {
redirect('users/login');
}
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector