一次更新多个用户


Update multiple users at once?

在我的网站上,用户可以创建团队(氏族)并邀请其他用户加入。

我现在正在开发一个页面,团队领导可以编辑团队中每个用户的"排名"。这些选项包括Founder、Captain、Member、Inactive和Kick(这将使用户完全退出团队)。

我附上了一张页面外观的快速截图,以帮助解释我希望实现的目标。

http://cl.ly/E9Gb

因此,团队领导可以查看并更改每个用户的排名,然后点击更新。

对此,最好的方法是什么?

以下是我目前代码的一些摘录:

控制器:

if ($this->input->post('update_roster'))
{
    $member_id = $this->input->post('user_id');
    $member_rank = $this->input->post('member_rank');
    $this->clan_model->update_roster($clan_id, $member_id, $member_rank);
}

型号:

public function update_roster($clan_id, $user_id, $rank)
{
    $data = array(
       'rank' => $rank
    );
    $this->db->where('clan_id', $clan_id);
    $this->db->where('user_id', $user_id);
    if ($this->db->update('clan_joined', $data))
    {
        return TRUE;
    }
}

视图:

<h3>Roster</h3>
<?php
$member_rank = array(
    '1' => 'Founder',
    '2' => 'Captain',
    '3' => 'Member',
    '4' => 'Inactive',
    '5' => 'Kick'
);
?>
<?php $attributes = array('id' => 'update_roster', 'class' => 'nice'); ?>
<?php echo form_open('clan/manage/' . $this->uri->segment(3) . '#roster', $attributes); ?>
<table width="100%">
<thead>
    <tr>
        <th class="text-center">#</th>
        <th>Username</th>
        <th>Rank</th>
    </tr>
</thead>
<?php form_open('clan/manage/' . $this->uri->segment(3) . '#roster', $attributes); ?>
<?php foreach ($members AS $member) : ?>
<tr>
    <td class="text-center"><a href="<?php echo site_url('people') . '/' . $member->username; ?>"><?php echo avatar(32, $member->username, $member->avatar_uploaded); ?></a></td>
    <td><?php echo $info->clan_tag; ?> / <?php echo $member->username; ?></td>
    <td><?php echo form_dropdown('member_rank', $member_rank, $member->rank); ?></td>
</tr>
<?php echo form_hidden('user_id', $member->username); ?>
<?php endforeach; ?>
</table>
<?php echo form_submit('update_roster', 'Update'); ?>
<?php echo form_close(); ?>

我知道这个代码是错误的,因为它不起作用,但我想我会分享我迄今为止所做的事情。

在HTML表单上,将下拉列表和隐藏输入更改为数组:

<td><?php echo form_dropdown('member_rank[]', $member_rank, $member->rank); ?></td>

<?php echo form_hidden('user_id[]', $member->username); ?>

然后$this->input->post('member_rank')和'user_id'将分别接收一个数组。您可以在PHP中循环遍历数组,并为循环的每次迭代调用UPDATE代码:

for ($i = 0; $i < count($member_id); $i++) {
    $current_member_id = $member_id[$i];
    $current_member_rank = $member_rank[$i];
    // Call your update code.
}