一次更新多个用户?

时间:2012-02-13 00:45:38

标签: php sql codeigniter

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

我正在开展一个页面,团队领导可以编辑团队中每个用户的“排名”。这些选项包括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);

}

MODEL:

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

我理解这段代码是错的,因为它不起作用,但我想我会分享到目前为止所做的一切。

1 个答案:

答案 0 :(得分:0)

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

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

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

然后$ this-&gt; input-&gt; 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.
}