2013-02-15 150 views
0

我有一个表正在构建并由while循环填充。 while循环获取并显示来自mysql数据库的结果。在while循环中创建唯一的表单输入ID和输入名称

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

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

我的sql查询结果有很多行,所以我的表中有几行深。我想要做的是允许用户选中复选框checkbox[],在同一行更改correctedweightcorrectedtrailer的值,然后提交表单。问题是如果我有几行,所有我的correctedweightcorrectedtrailer的名字都是一样的,所以我不能区分它们。

<? 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 ['校正重量。$复选框']或它是如何工作的?

此外,这是做到这一点的最佳方式?

帮助一如既往的赞赏。谢谢

我的表单,输入和选择字段预填充MySQL数据的图像。希望能够同时检查和编辑多个表格行,但需要一个唯一的标识符作为使用while循环构建的表格。再次感谢。 enter image description here

+0

尝试'$ correctionweight {$ checkbox}' – SparKot 2013-02-15 08:19:06

+0

感谢DoSparKot,这是最佳实践和最佳方式吗? – Smudger 2013-02-15 08:22:11

+0

访问经由 '$ _POST所述的indeces [ “correctedweight。$复选框”]' 或 '$ _POST [ 'correctedweight'。$复选框]' 和不'$ _POST [ 'correctedweight。$复选框']' .. ,因为单引号字符串中的变量不会被解析。 – mithunsatheesh 2013-02-15 08:39:39

回答

1

从我可以看到你正在循环访问数据库条目。我建议使用你的负载号作为所有字段的标识符,然后在后面循环,你可以像上面那样追加它。

事情是这样的:

<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']; 
} 

请记住,如果我记得正确的:)你只会得到这是选中的复选框

希望这有帮助,祝你好运!

+0

谢谢Werner,复选框的名称不需要保留复选框[]否则每个选中的复选框都将属于一个单独的数组? – Smudger 2013-02-15 09:11:26

+0

你可以这样做,但这样你的数组的键将是loadnumber而不是默认的0,1,2,3 ..这有助于如果你需要密钥以及:) – Wessel 2013-02-15 11:20:25

+0

哦,太棒了。谢谢韦塞尔。 – Smudger 2013-02-15 13:11:45