Обновить несколько пользователей одновременно? - PullRequest
1 голос
/ 13 февраля 2012

На моем сайте пользователи могут создавать команды (кланы) и приглашать других пользователей присоединиться к ним.

Сейчас я работаю над страницей, где руководители групп могут редактировать «ранги» каждого пользователя в команде. Этими опциями являются «Основатель», «Капитан», «Участник», «Неактивно» и «Удар» (которые полностью удаляют пользователя из команды).

Я включил быстрый скриншот того, как выглядит страница, чтобы объяснить, чего я надеюсь достичь.

http://cl.ly/E9Gb

Таким образом, руководители команд могут пройти и изменить ранг каждого пользователя, а затем нажать «Обновить».

Как лучше всего это сделать?

Вот некоторые выдержки из моего кода в настоящее время:

CONTROLLER:

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

Я понимаю, что этот код неправильный, так как он не работает, но подумал, что поделюсь тем, что я сделал до сих пор.

1 Ответ

0 голосов
/ 13 февраля 2012

В вашей 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.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...