我有一个正在构建的表,并由while循环填充。 while循环正在获取并显示来自mysql数据库的结果。
根据以下代码,每行都有一个复选框,值等于唯一标识符loadnumber
。
下一列是名称和ID为correctedweight
的输入框。同样,这个值是由MySQL数据值预定义的。下一列是名为correctedtrailer
的选择框,并且所选值再次等于数据库结果。
我的sql查询结果有很多行,所以我的表格深了几行。我想要做的是,允许用户选中复选框checkbox[]
,更改同一行中correctedweight
和correctedtrailer
的值,然后提交表单。问题是,如果我有几行,我所有correctedweight
和correctedtrailer
的名称都是相同的,所以我无法区分它们。
<? while($row = $loads->fetch(PDO::FETCH_ASSOC)) { ?>
<tr>
<td><input type="checkbox" name="checkbox[]" id="checkbox[]" value="<? echo $row['loadnumber']; ?>"></td>
<td><input type="text" name="correctedweight" id="correctedweight" value="<? echo $row['weight']; ?>" class="inputsmall"></td>
<td><SELECT name="correctedtrailer" id="correctedtrailer" class="selectnarrow">
<OPTION value="<? echo $row['trailer']; ?>" selected ><? echo $row['trailer']; ?></option>
<option>
<?=$optionstrailer?>
</option>
</SELECT>
</td>
</tr>
要解决此问题,我可以将loadnumber附加到每个输入字段的名称和ID吗?
<input type="text" name="correctedweight<? echo $row['loadnumber']; ?>" id="correctedweight<? echo $row['loadnumber']; ?>" value="<? echo $row['weight']; ?>" class="inputsmall">
然后,这将为我的表单的每个输入提供唯一的名称。接下来的问题是如何为所选行调用此名称? checkbox[]
数组将包含加载号,因此在我的foreach($_POST['checkbox'] as $checkbox){
语句中,如何获取correctedweight<? echo $row['loadnumber']; ?>
的值?是$ _POST ['correctweight。$ checkbox']或它是如何工作的?
另外这是最好的方法吗?
一如既往的帮助。感谢
我的表单图像,输入和选择预填充MySQL数据的字段。希望能够一次检查和编辑多个表行,但需要一个唯一的标识符作为使用while
循环构建的表。再次感谢。
答案 0 :(得分:2)
从我可以看到你循环数据库条目。我建议您在所有字段中使用加载号作为标识符,然后在帖子中循环显示它,就像上面那样可以追加它。
这样的事情:
<td><input type="checkbox" name="checkbox[<? echo $row['loadnumber']; ?>]" id="checkbox[<? echo $row['loadnumber']; ?>]" value="<? echo $row['loadnumber']; ?>"></td>
<td><input type="text" name="correctedweight_<? echo $row['loadnumber']; ?>" id="correctedweight_<? echo $row['loadnumber']; ?>" value="<? echo $row['weight']; ?>" class="inputsmall"></td>
<td><SELECT name="correctedtrailer_<? echo $row['loadnumber']; ?>" id="correctedtrailer_<? echo $row['loadnumber']; ?>" class="selectnarrow">
<option value="<? echo $row['trailer']; ?>" selected ><? echo $row['trailer']; ?></option>
<option><?=$optionstrailer?></option>
</SELECT>
获取帖子中每个复选框的信息:
foreach($_POST['checkbox'] as $checkbox){
$correctedweight = $_POST['correctedweight_$checkbox'];
$correctedtrailer = $_POST['correctedtrailer_$checkbox'];
}
请记住,只有在我记得正确的情况下才能获得已选中的复选框:)
希望这有帮助,祝你好运!