если условие в sql |codeigner - PullRequest
       2

если условие в sql |codeigner

0 голосов
/ 21 сентября 2018

У меня есть 2 таблицы, одна для:

информация о пользователе

секунда для:

"последнее действие пользователя"

У меня есть код для извлечения и отображения всех пользователей на странице, каждый пользователь должен отображать свое состояние, - все работает, как показано в моем коде

НО

  • Я хочу сделать свой код чистым , поэтому я хочу переместить «если условие» на странице просмотра на страницу модели, когда состояние в таблице пустое,

  • Я хочу отобразить всех моих пользователей с состоянием пользователей на моей странице без использования условия if на странице просмотра.

Мой код:


База данных:

enter image description here

Моя страница:

enter image description here

Просмотр:

<?php   foreach($Users as $c){  ?>

<th>Firstname</th>
<th>Lastname</th> 
<th>Last Activity Time</th>
 <th>State</th>
 <th>User ID</th>
   </tr>
    <tr>
  <td><?php echo $c->email ?></td>
<td><?php echo $c->type ?></td> 
<td><?php echo $c->last_activity ?></td>


<td>
    <!-- this code is run good , but i want to change it to contolloer to make the code clean  , 
    and if i changed to controller hw i can call the state here --> 
   <?php $current_timestamp = strtotime(date("Y-m-d H:i:s") . '- 10 second');
    $current_timestamp = date('Y-m-d H:i:s', $current_timestamp); 
     if($c->last_activity > $current_timestamp)
            {
            echo "online";
            }
        else
            {
            echo "offline";
            } ?> 

Модель:

 public function getAllUsers() //from 1 table
   { 

 $this->db->select('m.user_id, m.email , m.type, u.last_activity   ,u.id  ,u.state');
$this->db->from('tbl_user m');
$this->db->join('tbl_user_activity u ', 'u.user_id = m.user_id' ,'LEFT');
$this->db->select_max('u.last_activity');
// $this->db->where($where);
$this->db->group_by('m.user_id');// add group_by
$query = $this->db->get();

 foreach ($query as $c)
 {     
    $current_timestamp = strtotime(date("Y-m-d H:i:s") . '- 10 second');
    $current_timestamp = date('Y-m-d H:i:s', $current_timestamp);

        if('$c->last_activity' > $current_timestamp) //try
            { // here must to be function to checl the last user activity and get it

             // here must to set the u.state to online 

            }
        else if($query < $current_timestamp) //try
            {

            } 

 }
return $query->result();

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Попробуй это.Это создаст новую коллекцию данных с новой строкой под названием «состояние»;Возвращаемое значение является массивом, поэтому вы, вероятно, должны изменить свое представление на цикл вместо массива.

$query = $this->db->get()->result_result_array();
$new_record = array();

foreach($query as $old_record)
{
    $current_timestamp = strtotime(date("Y-m-d H:i:s") . '- 10 second');
    $current_timestamp = date('Y-m-d H:i:s', $current_timestamp);

        if('$c->last_activity' > $current_timestamp) //try
            { 
              $new_record[]['state'] = 'online';
              $new_record[] = $old_record;
            }
        else if($query < $current_timestamp) //try
            {
              $new_record[]['state'] = 'offline';
              $new_record[] = $old_record;
            }
}

return $new_record;
0 голосов
/ 21 сентября 2018

Что если вы проверите и установите "состояние" на странице МОДЕЛЬ / КОНТРОЛЛЕР

MODEL PAGE
<?php
    //your code, 
    $last_activity = $c->last_activity; //make sure it won't return NULL

    if($last_activity > $current_timestamp) { //return true if online,
        $state = "online";
    }else{
        $state = "offline";
    }
    //your code, 
?>

, просто прочитайте состояние на странице ПРОСМОТРА

VIEW PAGE
<?php
    //your code, 
    $new_state = $c->state; //so $new_state = "online" or $new_state = "offline"
    //your code, 
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...