Как вставить данные из базы данных в массив и проверить это - PullRequest
0 голосов
/ 04 июля 2019

Мне нужно изменить представления в приложении, и у меня есть привилегии пользователя таблицы со структурой, подобной этой ниже

 id_staff |     feature        |            capabilities           
    1              reports                       view                    
    1              reports                       create   
    1              reports                       edit              
    2              reports                       view                    
    2              reports                       delete                    
    3              reports                       view       

Что мне нужно, так это когда пользователь, такой как id_staff 3, в отчетах функция имеет только одну возможность, например, пример, который он просто может просматривать, не может редактировать, редактировать или создавать. Тогда пользователь с идентификатором 3 видит только гиперссылку для просмотра страницы, он не видит гиперссылки для создания, редактирования или удаления страниц.

Для этого я попытался использовать запрос выбора, вставить его в массив и затем сравнить значение массива с получением условия, как указано выше

Я пытался закодировать, как это

<?php 
  $query = $this->db->query('SELECT * FROM tblstaff_permissions WHERE staff_id='.$id.'');  
  foreach ($query->result() as $row)
  {  
    if($row['feature']=='reports' and $row['capabilities']=='view'){ 
      <a href="view.php">View</a> 
    } elseif($row['feature']=='reports' and $row['capabilities']=='delete' ){ 
      <a href="delete.php">Delete</a> 
    }
  }      
?>    

И тогда страница пуста

Знаете ли вы, где ошибка?

Спасибо

Ответы [ 2 ]

1 голос
/ 04 июля 2019

Вы используете $ query-> result (), это даст вам массив объектов, а не массив массивов.Кроме того, вы не отражаете ваши ссылки в представлении.Еще одна вещь, которую вы не должны использовать одно и то же условие несколько раз.

В этом случае ваш код должен быть -

<?php 
     $query = $this->db->query('SELECT * FROM tblstaff_permissions WHERE staff_id='.$id.'');  
     foreach ($query->result() as $row) { 
       if($row->feature =='reports'){ 
         if($row->capabilities=='view'){ 
            echo '<a href="view.php">View</a>';
         } elseif($row->capabilities == 'delete' ){ 
            echo '<a href="delete.php">Delete</a>';
         }
       }
     }      
?>   
1 голос
/ 04 июля 2019

Вы можете улучшить его, уменьшив повторяющийся код, например, код $row['feature']=='reports', например:

$query = $this->db->query('SELECT * FROM tblstaff_permissions WHERE staff_id='.$id.'');  
foreach ($query->result_array() as $row)
{  

    if ($row['feature']=='reports') {
        if ($row['capabilities']=='view') {
            echo '<a href="view.php">View</a>';
        } elseif ($row['capabilities']=='delete') {
            echo '<a href="delete.php">Delete</a>';
        }
    }

}

Чтобы получить результат массива, используйте $query->result_array() вместо $query->result(), а такжеВы пропускаете оператор echo.

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