【发布时间】:2013-01-31 04:20:04
【问题描述】:
我有一个表正在构建并由 while 循环填充。 while 循环正在从 mysql 数据库中获取并显示结果。
根据下面的代码,每行都有一个复选框,值等于唯一标识符loadnumber。
下一列是一个输入框,名称和 ID 为 correctedweight。再次, this 的值是由 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>
要解决这个问题,我可以将负载编号附加到每个输入字段的名称和 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['correctedweight.$checkbox'] 还是它是如何工作的?
另外,这是最好的方法吗?
一如既往地感谢您的帮助。谢谢
预填充 MySQL 数据的表单、输入和选择字段的图像。希望能够一次检查和编辑多个表行,但需要一个唯一标识符作为使用while 循环构建的表。再次感谢。
【问题讨论】:
-
试试
$correctedweight{$checkbox} -
感谢 DoSparKot,这是最佳实践和最佳方法吗?
-
通过
$_POST["correctedweight.$checkbox"]或$_POST['correctedweight'.$checkbox]访问索引而不是$_POST['correctedweight.$checkbox'].. 因为单引号字符串中的变量不会被解析。
标签: php forms input foreach while-loop