如何让我的复选框循环单独更新每个复选框,而不是在php和mySQL中同时更新它们?
我可以更新复选框,但它们不能完全正常工作。当两个框都为空时,我可以选中其中一个,并且两个框都会更新为选中。如果两个框都选中,我必须取消选中这两个框,以便将它们更新为未选中。我不能让一个框被选中,另一个框被取消选中 有什么想法吗 我真的很感谢你的帮助 mySQL表格如何让我的复选框循环单独更新每个复选框,而不是在php和mySQL中同时更新它们?,php,mysql,checkbox,mysqli,Php,Mysql,Checkbox,Mysqli,我可以更新复选框,但它们不能完全正常工作。当两个框都为空时,我可以选中其中一个,并且两个框都会更新为选中。如果两个框都选中,我必须取消选中这两个框,以便将它们更新为未选中。我不能让一个框被选中,另一个框被取消选中 有什么想法吗 我真的很感谢你的帮助 mySQL表格 id | departments_fk | qsps_fk | visible 270 | 1 | 218 | 1 271 | 22 | 218 |
id | departments_fk | qsps_fk | visible
270 | 1 | 218 | 1
271 | 22 | 218 | 0
272 | 1 | 219 | 0
273 | 22 | 219 | 1
274 | 1 | 220 | 1
275 | 22 | 220 | 1
HTML代码
<form action="edit-qsps.php?qspName=<?php echo $current_qsp["id"]; ?>" method="post">
<div class="qsp-name">QSP Name:
<input type="text" name="qsp_name" class="name-box" value="<?php echo $current_qsp["qsp_name"]; ?>" />
</div>
<div class="rev">QSP Rev:
<input type="text" name="qsp_rev" class="rev-box" value="<?php echo $current_qsp["qsp_rev"]; ?>" />
</div>
<div class="qsp-departments">Department:</div>
<?php
global $db_connection;
global $department_checked;
global $current_qsp;
global $id_department;
echo "<ul>";
$qsp_department_list = find_all_departments();
$department['id'] = $id_department;
while($department = mysqli_fetch_assoc($qsp_department_list)) {
echo htmlentities($department['department_name']);
echo " : ";
$qsp_department_checks = find_all_checks_for_department($current_qsp['id']);
$checks = $department_checked;
global $department_checked;
while($checks = mysqli_fetch_assoc($qsp_department_checks)) {
if ($current_qsp['id'] == $checks['qsps_fk'] && $checks['departments_fk'] == $department['id']) {
echo "<div class='department-checked'>";
echo "<input type='hidden' name='hidden-checkBoxes[]' value='";
echo htmlentities($checks['departments_fk']);
echo "' />";
echo "<input type='checkbox' name='department-checkBoxes[]' value='";
echo htmlentities($checks['departments_fk']);
echo "' ";
if($checks['checked'] == '1'){
echo "checked='checked'";
}
echo " />";
echo "</label>";
echo "</div>";
}
}
mysqli_free_result($qsp_department_checks);
}
mysqli_free_result($qsp_department_list);
echo "</ul>";
?>
<div class="create-btn">
<input type="submit" name="submit" value="UPDATE QSP" />
</div>
</form>
您需要循环查看“部门复选框”。现在您并没有得到它们的值,只是检查是否设置了整个POST变量
if(!empty($_POST['department-checkBoxes'])) {
foreach($_POST['department-checkBoxes'] as $check) {
echo $check;
//only checked checkboxes come to $POST
$query2 = "UPDATE junction_departments_qsps SET ";
$query2 .= "checked = 1 ";
$query2 .= "WHERE departments_fk = {$checked} ";
$query2 .= "AND qsps_fk = {$id_qsp} ";
$result2 = mysqli_query($db_connection, $query2);
}
形式
谢谢你的快速回答,但我不确定该在哪里使用此代码。是否在我的流程代码或表单中使用它?如果在流程代码中使用,是否需要运行第二个查询?在我完成第一个foreach循环和查询之后,我会使用它吗。$U POST中将只显示选中的复选框。感谢您的澄清,但我仍然无法使其正常工作。请粘贴您的最新代码并指定问题所在。我在上面添加了我的代码。数据库似乎根本没有更新。在我的原始代码中,它至少更新了两个复选框。非常感谢。
if (isset($_POST['submit'])) {
global $db_connection;
global $id_department;
$id_qsp = $current_qsp["id"];
$qsp_name = mysql_prep($_POST["qsp_name"]);
$qsp_rev = mysql_prep($_POST["qsp_rev"]);
$query1 = "UPDATE qsps SET ";
$query1 .= "qsp_name = '{$qsp_name}', ";
$query1 .= "qsp_rev = '{$qsp_rev}' ";
$query1 .= "WHERE id = {$id_qsp} ";
$query1 .= "LIMIT 1";
$result1 = mysqli_query($db_connection, $query1);
if(!empty($_POST['department-checkBoxes'])) {
foreach($_POST['department-checkBoxes'] as $check) {
echo $check;
//only checked checkboxes come to $POST
$query2 = "UPDATE junction_departments_qsps SET ";
$query2 .= "checked = 1 ";
$query2 .= "WHERE departments_fk = {$check} ";
$query2 .= "AND qsps_fk = {$id_qsp} ";
$result2 = mysqli_query($db_connection, $query2);
}
}
redirect_to("edit-qsps.php");
} else {
// Failure
$message = "Employee Update Failed.";
}
if(!empty($_POST['department-checkBoxes'])) {
foreach($_POST['department-checkBoxes'] as $check) {
echo $check;
//only checked checkboxes come to $POST
$query2 = "UPDATE junction_departments_qsps SET ";
$query2 .= "checked = 1 ";
$query2 .= "WHERE departments_fk = {$checked} ";
$query2 .= "AND qsps_fk = {$id_qsp} ";
$result2 = mysqli_query($db_connection, $query2);
}
<form action="edit-qsps.php?qspName=<?php echo $current_qsp["id"]; ?>" method="post">
<div class="qsp-name">QSP Name:
<input type="text" name="qsp_name" class="name-box" value="<?php echo $current_qsp["qsp_name"]; ?>" />
</div>
<div class="rev">QSP Rev:
<input type="text" name="qsp_rev" class="rev-box" value="<?php echo $current_qsp["qsp_rev"]; ?>" />
</div>
<div class="qsp-departments">Department:</div>
<?php
global $db_connection;
global $current_qsp;
echo "<ul>";
$qsp_department_list = find_all_departments();
while($department = mysqli_fetch_assoc($qsp_department_list)) {
echo htmlentities($department['department_name']);
echo " : ";
$qsp_department_checks = find_all_checks_for_department($current_qsp['id']);
while($checks = mysqli_fetch_assoc($qsp_department_checks)) {
$id_checked = htmlentities($checks['id']);
if ($current_qsp['id'] == $checks['qsps_fk'] && $checks['departments_fk'] == $department['id']) {
echo "<div class='department-checked'>";
echo "<input type='checkbox' name='hidden-checkBoxes[]' value='";
echo htmlentities($checks['id']);
echo "' style='display:none' checked='checked' />";
echo "<input type='checkbox' name='department-checkBoxes[]' value='";
echo htmlentities($checks['id']);
echo "' ";
if($checks['checked'] == '1'){
echo "checked='checked'";
}
echo " />";
echo "</label>";
echo "</div>";
}
}
mysqli_free_result($qsp_department_checks);
}
mysqli_free_result($qsp_department_list);
echo "</ul>";
?>
<div class="employee-category">Employee Category:</div>
<?php echo edit_employee_category_checkBoxes(); ?>
<div class="create-btn">
<input type="submit" name="submit" value="UPDATE QSP" />
</div>
</form>
<?php
if (isset($_POST['submit'])) {
global $db_connection;
$id_qsp = $current_qsp["id"];
$qsp_name = mysql_prep($_POST["qsp_name"]);
$qsp_rev = mysql_prep($_POST["qsp_rev"]);
$query1 = "UPDATE qsps SET ";
$query1 .= "qsp_name = '{$qsp_name}', ";
$query1 .= "qsp_rev = '{$qsp_rev}' ";
$query1 .= "WHERE id = {$id_qsp} ";
$query1 .= "LIMIT 1";
$result1 = mysqli_query($db_connection, $query1);
$departments_id = $_POST["hidden-checkBoxes"];
$hidden_depart = $_POST["department-checkBoxes"];
if(isset($_POST['hidden-checkBoxes'])) {
foreach ($departments_id as $depart_id){
$visible_check = in_array($depart_id, $hidden_depart) ? 1 : 0;
$query2 = "UPDATE junction_departments_qsps SET ";
$query2 .= "checked = {$visible_check} ";
$query2 .= "WHERE id = {$depart_id} ";
$result2 = mysqli_query($db_connection, $query2);
}
}
redirect_to("edit-qsps.php");
} else {
// Failure
$message = "Employee Update Failed.";
}
?>