codeigniter循环显示多个条目

时间:2017-07-12 05:26:42

标签: php mysql codeigniter

截至7/12/17 3PM我已经编辑了修复代码的控制器,视图和模型(不再有多行,虽然还有其他错误,我通过删除一些代码并调用它来修复它table_model中time_sign表中的id)谢谢。

我的Codeigniter项目中有这个查看文件,我需要帮助。

<?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; ?>

这是我的控制器,用于显示该视图:

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

姓名 - Stacy

在表格中:

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();
}

1 个答案:

答案 0 :(得分:1)

初步了解一下......你的模型有点混乱,你没有使用$ 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个条目,因此重复。

这里有更多关于你的观点的讨论,但这就是我所有的时间。