php - codeigniter 循环显示多个条目

标签 php mysql codeigniter

截至 2017 年 7 月 12 日下午 3 点,我已经编辑了修复代码的 Controller 、 View 和模型(不再多行,虽然还有另一个错误,但我已通过删除一些代码并调用table_model 中的 time_sign 表中的 id)谢谢。

我的 Codeigniter 项目中有这个 View 文件,我需要这方面的帮助。

<?php foreach ($users as $user): ?>
           <tr>
               <td class="hidden"><?=$user->id;?></td>
               <td><?=$user->name;?></td>
               <td><?=$sign->timein;?></td>
               <td><?=$sign->timeout;?></td>
               <td width="100px">
                   <a href="<?php echo base_url()."index.php/tabledisplay/recTime/".$user->id; ?>">
                       <button type="submit" class="btn btn-success" name="time-in">Sign In</button>
                   </a>
               </td>
               <td width="100px">
                   <a href="<?php echo base_url()."index.php/tabledisplay/recOut/".$user->id; ?>">
                       <button type="submit" class="btn btn-info" name="time-in">Sign Out</button>
                   </a>
               </td>
           </tr>
          <?php endforeach; ?>

这是我用于显示该 View 的 Controller :

function index()
{
    $data = array();
    $id = $this->uri->segment(3);
    $data['users'] = $this->table_model->display_table();
    $this->load->view('table_view', $data);
}

现在它输出的是表中每个用户的三个副本。 举例来说:

ID - 1

姓名 - 约翰

ID - 2

姓名 - 史黛西

表中:

1.约翰 。时间:08:00。超时:3:00。登入 。退出

1.约翰 。时间:08:00。超时:3:00。登入 。退出

1.约翰 。时间:08:00。超时:3:00。登入 。退出

2.史黛西.时间:08:00。超时:3:00。登入 。退出

2.史黛西.时间:08:00。超时:3:00。登入 。退出

2.史黛西.时间:08:00。超时:3:00。登入 。退出

(那个登录/退出实际上是按钮) 另一点是,当我单击按钮时,当我只希望单个用户能够记录时间时,它会更新所有记录。

现在的输出是:

1 .约翰 。时间:6:00。超时:8:00。登入 。退出

2 .史黛西.时间:08:00。超时:3:00。登入 。退出

对于模型记录时间(按钮):

function recordTime($id)
{

     $this->db->select("time-id, timein, timeout");
     $this->db->set('timein', 'NOW()', FALSE);
     $this->db->update('time_sign');
      $query = $this->db->get('time_sign');
      return $query->result();
}

此外,我没有包含用于显示的模型,所以这里是:

function display_table ()
{
      $this->db->select("time_sign.indexuser, CONCAT(lname, ', ', fname, ' ', mname) AS name, users.position, time_sign.timein, time_sign.timeout");
      $this->db->from('users');
      $this->db->join('time_sign', 'time_sign.indexuser = users.id', 'LEFT');
      $query = $this->db->get();
      return $query->result();
}

最佳答案

初步看看这个...您的模型有点困惑,并且您没有使用 $id。

首先,您传入 $id 但不使用它。 其次,您混淆了有关执行更新的数据库调用的意图并选择...

我认为你想做的是......

function recordTime($id)
{
    // Perform the Update
    $this->db->set('timein', 'NOW()', FALSE);
    $this->db->where('id',$id); //Specify the user we want to change
    $this->db->update('time_sign');

    // Now perform a read back
    $this->db->select("time-id, timein, timeout");
    $this->db->where('id',$id); // Specify the user we want to read back
    $query = $this->db->get('time_sign');
    return $query->result();
}

我会检查您当前的表,因为您的表中似乎有 3 个条目,因为您的内部循环正在获取所有 3 个条目,因此会重复。

关于您的观点,这里还有更多要讨论的内容,但这就是我的时间。

关于php - codeigniter 循环显示多个条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45049073/

相关文章:

php - 限制已经出现在在线考试系统中的学生参加考试

mysql - 以正确的方式使用 PRIMARY KEYS(处理语言环境)

php - 如何将 PHP 时区字符串(例如 Europe/Berlin)转换为 codeigniter 时区(例如 UP1)

php - 使用php将图像从一个数据库保存到另一个数据库

mysql - 从表 WHERE 中选择 x

php - 如何使事件记录多对多关系更容易在codeigniter中开发?

php - Codeigniter 3.1 IFNULL 和 Coalesce 不起作用?

使用套接字的 PHP 多播服务器

php - 在 Cakephp 中显示除外键以外的字段

PHP - 来自 HTML 表单的未定义索引 - 显示为 NULL