Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在while循环中创建唯一的表单输入ID和输入名称_Php_Forms_Input_Foreach_While Loop - Fatal编程技术网

Php 在while循环中创建唯一的表单输入ID和输入名称

Php 在while循环中创建唯一的表单输入ID和输入名称,php,forms,input,foreach,while-loop,Php,Forms,Input,Foreach,While Loop,我有一个正在构建的表,并由while循环填充。while循环从mysql数据库获取和显示结果 根据下面的代码,每行上都有一个复选框,其值等于唯一标识符loadnumber 下一列是一个输入框,其名称和id为correctedweight。这个值也是由MySQL数据值预定义的。下一列是名为correctedtrailer的选择框,所选值再次等于数据库结果 我的sql查询结果中有许多行,因此我的表有几行深。我想做的是,允许用户选中复选框[],更改同一行上correctedweight和Correct

我有一个正在构建的表,并由while循环填充。while循环从mysql数据库获取和显示结果

根据下面的代码,每行上都有一个复选框,其值等于唯一标识符loadnumber

下一列是一个输入框,其名称和id为correctedweight。这个值也是由MySQL数据值预定义的。下一列是名为correctedtrailer的选择框,所选值再次等于数据库结果

我的sql查询结果中有许多行,因此我的表有几行深。我想做的是,允许用户选中复选框[],更改同一行上correctedweight和CorrectedRailer的值,然后提交表单。问题是,如果我有几行,那么我所有的correctedweight和CorrectedRailer的名称都是相同的,因此我无法区分它们

<? 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中吗


从我看到的情况来看,您正在遍历数据库条目。我建议在所有字段中使用您的负载号作为标识符,然后在帖子中循环使用它,您可以像上面那样附加它

大概是这样的:

<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> 
请记住,如果我记得正确,您将只获得选中的复选框:


希望这有帮助,祝你好运

试试$correctedweight{$checkbox}谢谢DoSparKot,这是最好的做法和最好的方法吗?通过$\u POST[correctedweight.$checkbox]或$\u POST['correctedweight.$checkbox]而不是$\u POST['correctedweight.$checkbox']访问索引。。因为单引号字符串中的变量将不会被解析。谢谢Werner,复选框名称是否不需要保留复选框[],否则每个选中的复选框将属于一个单独的数组?您可以这样做,但这样数组的键将是loadnumber,而不是默认的0,1,2,3。。如果你还需要钥匙,这会很有帮助:哦,太棒了。谢谢韦塞尔。
foreach($_POST['checkbox'] as $checkbox){
    $correctedweight = $_POST['correctedweight_$checkbox'];
    $correctedtrailer = $_POST['correctedtrailer_$checkbox'];
}