【发布时间】:2014-06-06 03:31:01
【问题描述】:
表格
id name level delete_user
1 visitor 1 N
2 user 2 N
3 moderator 3 N
4 administrator 4 Y
然后我从数据库中获取数组:
$groups = array (
array ( 'id' => 1, 'name' => 'visitor', 'level' => 1, 'delete_user' => 'N'),
array ( 'id' => 2, 'name' => 'user', 'level' => 2, 'delete_user' => 'N'),
array ( 'id' => 3, 'name' => 'moderator', 'level' => 3, 'delete_user' => 'N'),
array ( 'id' => 4, 'name' => 'administrator', 'level' => 4, 'delete_user' => 'Y')
);
然后我创建简单的表格来显示组的实际设置。
<form action="" method="post">
<table class="groups">
<thead>
<tr>
<td>name</td>
<td>level</td>
<td>delete user</td>
</tr>
</thead>
<tbody>
<?php foreach ($groups as $group) { ?>
<?php
$checkbox['delete_user_' . $group['id']] = 'N';
$checked = ($group['delete_user'] === 'Y') ? 'checked="checked"' : '';
?>
<tr>
<td><?php echo $group['name']; ?></td>
<td><?php echo $group['level']; ?></td>
<td>
<input type="checkbox" name="delete_user_<?php echo $group['id']; ?>" <?php echo $checked; ?> value="Y">
</td>
</tr>
<?php
}
?>
</tbody>
</table>
<input type="submit" name="save_groups" value="Save" class="save_button">
</form>
问题:如何检查复选框是否选中,如果选中则在数据库中更改它?
我的工作:
这是一个原始的想法,但并不漂亮......
<?php
if (isset($_POST['save_groups'])) {
foreach ($_POST as $k => $v) {
if (array_key_exists($k, $checkbox)) {
$checkbox[$k] = $v;
}
}
echo 'NEW';
print_r($checkbox);
echo '<hr>';
foreach($checkbox as $k => $v) {
$id = str_replace('delete_user_', '', $k);
echo 'changing '. $id . ' to '. $v. '<br>';
// changing value
/**
* $id int - id of group
* $v string - value in delete_user ('Y' / 'N')
*/
$this->change_value($id, $v);
}
}
【问题讨论】:
-
是否必须在检查或按下按钮时发送
-
提交表单时,按下按钮时出现