我正在构建一个管理表单,该表单允许其他团队更新其自身数据的各个方面,因此他们不必致电我为他们做这些事情。
它们通过复选框或文本字段更新数据。还要求他们能够一次编辑多行。因此,表单要求他们选择要更新或已更新的行。到目前为止一切都很好。
因此,我的问题是:如果第一个记录选中了一个复选框,第二个记录选中了3个复选框,则在提交表单并回显数据时,第一个记录显示3个值,第二个记录显示1个值,指示记录1本身已经从记录2中获取了值。我知道情况并非如此,但无法弄清楚为什么数据没有保留在记录2中。
我绕过这个问题,搜索并找到了许多应该起作用的示例,但是它们只是使用单个文本字段而不是复选框。所以,我希望这里的人可以帮助我解决问题。
<?php
if(isset($_POST['updateRecord'])) {
// echo "Update Record Outer Check<br>";
if ((strtolower($_POST['updateRecord']) == "update")) {
foreach ($_POST['update'] as $key => $update) {
$id = $_POST['id'][$key];
$regOK = (
isset($_POST['regOK'][$key]) ?
$_POST['regOK'][$key] : false
);
$paidOK = (
isset($_POST['paidOK'][$key]) ?
$_POST['paidOK'][$key] : false
);
$ebdOK = (
isset($_POST['ebdOK'][$key]) ?
$_POST['ebdOK'][$key] : false
);
$appOK = (
isset($_POST['appOK'][$key]) ?
$_POST['appOK'][$key] : false
);
echo "RECORD ID: ".$id."<br>";
echo " REG: ".$regOK."<br>";
echo "PAID: ".$paidOK."<br>";
echo " EBD: ".$ebdOK."<br>";
echo " APP: ".$appOK."<br><br>";
}
}
}
echo "<br><br>";
?>
<style type="text/css">
th,td {text-align:center;}
</style>
<form action="" method="post" name="theForm">
<table cellpadding="2" cellspacing="0" class="resultsTable">
<tr>
<th>REG</th>
<th>PAID</th>
<th>EBD</th>
<th>APP</th>
<th>Update Record</th>
</tr>
<tr>
<td><input type="checkbox" name="regOK[]" id="regOK" value="1" checked></td>
<td><input type="checkbox" name="paidOK[]" id="paidOK" value="1"></td>
<td><input type="checkbox" name="ebdOK[]" id="ebdOK" value="1"></td>
<td><input type="checkbox" name="appOK[]" id="appOK" value="1"></td>
<td>
<input type="checkbox" class="test" name="update[]" id="update" value="1">
<input type="hidden" name="updateRecord[]" id="updateRecord" value="update">
<input type="hidden" name="id[]" id="id" value="1" />
</td>
</tr>
<tr>
<td><input type="checkbox" name="regOK[]" id="regOK" value="1" checked></td>
<td><input type="checkbox" name="paidOK[]" id="paidOK" value="1"></td>
<td><input type="checkbox" name="ebdOK[]" id="ebdOK" value="1"></td>
<td><input type="checkbox" name="appOK[]" id="appOK" value="1"></td>
<td>
<input type="checkbox" class="test" name="update[]" id="update" value="2">
<input type="hidden" name="updateRecord[]" id="updateRecord" value="update">
<input type="hidden" name="id[]" id="id" value="2" />
</td>
</tr>
<tr>
<td><input type="checkbox" name="regOK[]" id="regOK" value="1"></td>
<td><input type="checkbox" name="paidOK[]" id="paidOK" value="1"></td>
<td><input type="checkbox" name="ebdOK[]" id="ebdOK" value="1"></td>
<td><input type="checkbox" name="appOK[]" id="appOK" value="1"></td>
<td>
<input type="checkbox" name="update[]" id="update" value="3">
<input type="hidden" name="updateRecord" id="updateRecord" value="update">
<input type="hidden" name="id[]" id="id" value="3" />
</td>
</tr>
<tr><td colspan="5" ><input type="submit" name="updateFormData" id="updateFormData" value="Update All Records"></td></tr>
</table>
</form>
选中前两个复选框。不理会第1行,并选中记录2的第二个复选框,选择前两行的更新复选框,然后提交表单。我希望看到的是:
记录ID:1 REG:1 已付: EBD: APP:
记录ID:2 REG:1 付费:1 EBD: APP:
在这个例子中我得到的是: 记录ID:1 REG:1 付费:1 EBD: APP:
记录ID:2 REG:1 已付: EBD: APP:
您可以看到第一条记录显示第二行数据的位置。
答案 0 :(得分:1)
检查此。我在这里做什么:
id
直接分配给表单数据并简化调试步骤更具可读性和更漂亮的代码,并清除不必要的行
<?php
$ids = range(1, 3); // [1, 2, 3];
$true = "true";
$false = "false";
if(isset($_POST['update'])) {
foreach ($_POST['update'] as $id => $update) {
if ($_POST['update'][$id]) {
$regOK = isset($_POST['regOK'][$id]) ? $true : $false;
$paidOK = isset($_POST['paidOK'][$id]) ? $true : $false;
$ebdOK = isset($_POST['ebdOK'][$id]) ? $true : $false;
$appOK = isset($_POST['appOK'][$id]) ? $true : $false;
echo "RECORD ID: ".$id."<br>";
echo " REG: ".$regOK."<br>";
echo "PAID: ".$paidOK."<br>";
echo " EBD: ".$ebdOK."<br>";
echo " APP: ".$appOK."<br><br>";
}
}
}
echo "<br><br>";
?>
<style type="text/css">
th,td {text-align:center;}
</style>
<form action="" method="post" name="theForm">
<table cellpadding="2" cellspacing="0" class="resultsTable">
<tr>
<th>REG</th>
<th>PAID</th>
<th>EBD</th>
<th>APP</th>
<th>Update Record</th>
</tr>
<?php foreach($ids as $id) { ?>
<tr>
<td><input type="checkbox" name="regOK[<?=$id?>]" id="regOK" value="1" checked></td>
<td><input type="checkbox" name="paidOK[<?=$id?>]" id="paidOK" value="1"></td>
<td><input type="checkbox" name="ebdOK[<?=$id?>]" id="ebdOK" value="1"></td>
<td><input type="checkbox" name="appOK[<?=$id?>]" id="appOK" value="1"></td>
<td><input type="checkbox" class="test" name="update[<?=$id?>]" id="update" value="1"></td>
</tr>
<?php } ?>
<tr><td colspan="5" ><input type="submit" name="updateFormData" id="updateFormData" value="Update All Records"></td></tr>
</table>
</form>
答案 1 :(得分:0)
代码中的错误正在建立索引,使用索引处理表单会解决
<?php
if(isset($_POST['updateRecord'])) {
// echo "Update Record Outer Check<br>";
if ((strtolower($_POST['updateRecord']) == "update")) {
foreach ($_POST['update'] as $key => $update) {
$id = $_POST['id'][$key];
$regOK = (
isset($_POST['regOK'][$key]) ?
$_POST['regOK'][$key] : false
);
$paidOK = (
isset($_POST['paidOK'][$key]) ?
$_POST['paidOK'][$key] : false
);
$ebdOK = (
isset($_POST['ebdOK'][$key]) ?
$_POST['ebdOK'][$key] : false
);
$appOK = (
isset($_POST['appOK'][$key]) ?
$_POST['appOK'][$key] : false
);
echo "RECORD ID: ".$id."<br>";
echo " REG: ".$regOK."<br>";
echo "PAID: ".$paidOK."<br>";
echo " EBD: ".$ebdOK."<br>";
echo " APP: ".$appOK."<br><br>";
}
}
}
echo "<br><br>";
?>
<style type="text/css">
th,td {text-align:center;}
</style>
<form action="" method="post" name="theForm">
<table cellpadding="2" cellspacing="0" class="resultsTable">
<tr>
<th>REG</th>
<th>PAID</th>
<th>EBD</th>
<th>APP</th>
<th>Update Record</th>
</tr>
<tr>
<td><input type="checkbox" name="regOK[]" id="regOK" value="1" checked></td>
<td><input type="checkbox" name="paidOK[]" id="paidOK" value="1"></td>
<td><input type="checkbox" name="ebdOK[]" id="ebdOK" value="1"></td>
<td><input type="checkbox" name="appOK[]" id="appOK" value="1"></td>
<td>
<input type="checkbox" class="test" name="update[]" id="update" value="1">
<input type="hidden" name="updateRecord[]" id="updateRecord" value="update">
<input type="hidden" name="id[]" id="id" value="1" />
</td>
</tr>
<tr>
<td><input type="checkbox" name="regOK[1]" id="regOK" value="1" checked></td>
<td><input type="checkbox" name="paidOK[1]" id="paidOK" value="1"></td>
<td><input type="checkbox" name="ebdOK[1]" id="ebdOK" value="1"></td>
<td><input type="checkbox" name="appOK[1]" id="appOK" value="1"></td>
<td>
<input type="checkbox" class="test" name="update[1]" id="update" value="2">
<input type="hidden" name="updateRecord[1]" id="updateRecord" value="update">
<input type="hidden" name="id[]" id="id" value="2" />
</td>
</tr>
<tr>
<td><input type="checkbox" name="regOK[2]" id="regOK" value="1"></td>
<td><input type="checkbox" name="paidOK[2]" id="paidOK" value="1"></td>
<td><input type="checkbox" name="ebdOK[2]" id="ebdOK" value="1"></td>
<td><input type="checkbox" name="appOK[2]" id="appOK" value="1"></td>
<td>
<input type="checkbox" name="update[2]" id="update" value="3">
<input type="hidden" name="updateRecord" id="updateRecord" value="update">
<input type="hidden" name="id[]" id="id" value="3" />
</td>
</tr>
<tr><td colspan="5" ><input type="submit" name="updateFormData" id="updateFormData" value="Update All Records"></td></tr>
</table>
</form>