Table
id name level delete_user
1 visitor 1 N
2 user 2 N
3 moderator 3 N
4 administrator 4 Y
Then I fetch array from database:
$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')
);
Then I create simple FORM to show actual settings of groups.
<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>
Question: How to check if checkbox checked or not, and if checked then change it in database?
My work:
This is raw idea, but not pretty ...
<?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);
}
}