我有以下用户角色的 ranks
表
---------------------------------------------------------------------------
| rank | areas | intranet_view | intranet_writer | admin_users |
---------------------------------------------------------------------------
| 1 | 'AREA I' | 1 | 0 | 0 |
| 2 | 'AREA VI' | 1 | 1 | 0 |
| ... | ... | ... | ... | ... |
---------------------------------------------------------------------------
我以前是这样更新的
// form for selecting allowed areas
echo "<select size=\"10\" class=\"form-control\" name=\"areas[]\" multiple>";
$kysely = $pdo->query("SELECT * FROM customer_areas");
while($areas = $kysely->fetch(PDO::FETCH_ASSOC)) {
$areaArray = explode(',',$result['areas']);
echo "<option value=\"".$areas['customer_area_code']."\""; if(in_array($areas['customer_area_code'], $areaArray)){ echo " selected"; } echo ">".$areas['customer_area_name']."</option>";
}
echo "</select>";
// and this form is for selecting allowed privileges
$kysely = $pdo->query("SELECT * FROM ranks");
$rights = $kysely->fetch(PDO::FETCH_ASSOC);
foreach($rights as $key => $value) {
if($key == 'rank' || $key == 'areas') {
} else {
echo "<div class=\"checkbox\"><label><input type=\"hidden\" name=\"".$key."\" value=\"0\" /><input type=\"checkbox\" name=\"".$key."\" value=\"1\""; if($result[$key] == '1'){ echo " checked"; } echo ">".mb_strtolower($key)."</label></div>";
}
}
// following is the form action page
if (isset($_POST['areas'])) {
$areas = implode(",", $_POST['areas']);
} else {
$areas = "";
}
try {
$pdo->beginTransaction();
$kysely = $pdo->query("SELECT * FROM ranks");
$rights = $kysely->fetch(PDO::FETCH_ASSOC);
$i = 0;
$sql = "";
foreach ($rights as $key => $value) {
if ($key == 'rank' || $key == 'areas') {
} else {
if ($i != 0) {
$sql .= ", ";
}
$sql .= $key . " = '" . $_POST[$key] . "'";
$i++;
}
}
$kysely = $pdo->prepare("UPDATE ranks SET areas = ?, $sql WHERE rank = ?");
$kysely->execute(array($areas, $id));
$pdo->commit();
} catch (PDOException $e) {
$pdo->rollback();
}
我想知道是否有一些好的方法也可以在多选中拥有这些特权。当我制作这段代码时,我的智力不足以进行多选,所以我制作了复选框。
问题是我不知道如何将列名放入多项选择中以便更新正常进行。我需要添加例如name=\"option".[$key]."\"
之类的。我不知道如何执行此操作。
提前致谢。
最佳答案
是的,您可以通过名称检索 name=\"option".[$key]."\"
喜欢
<?php
foreach($options $key => $value):
echo '<input type="checkbox" name="option['.$key.']" value="$vlaue">';
endforeach;
?>
所以它看起来像这样
<input type="checkbox" name="option[0]" value="some_value0">
<input type="checkbox" name="option[1]" value="some_value1">
<input type="checkbox" name="option[2]" value="some_value2">
关于php - 让 MySQL 列从多个选择中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32068028/