我是PHP新手,我正在制作一个html表单,它基本上包含两个选项:首先,客户端选择一系列复选框(来自设备的部分),然后写入每个所选复选框的数量。 ..
<td><input id="11.11.015.0002" name="pecas[]" type="checkbox" value="11.11.015.0002 - BATERIA CHUMBO ACIDO 6V/4AH" /></td>
<td><input name="qntd[]" size="7" type="text" /></td>
并在php中:
if(isset($pecas))
{
$mensagem .= "Peças Selecionadas:<br /><br />";
}
else {
echo "<script>alert('Selecione as Peças Desejadas!'); location.href='http://www.lyuz.com.br/pecas/erro';</script>";
exit;
}
foreach ($pecas as $pecas_s) {
} $mensagem .= " - ".$pecas_s."<br />";
这给了我所有选中的复选框(部分),现在我试图只获得与这些选中的复选框关联的input_text(金额)..
我被困住了。救命。
答案 0 :(得分:0)
在每个元素的名称中指定一个键。使用数字,并确保pecas[1]
与qntd[1]
相对应。然后当你遍历其中一个数组时,其他数组中的键将是相同的。例如:
<?php
$count = 0;
foreach($itemList as $item){
echo "<tr>\n";
echo " <td><input type='checkbox' id='{$item['id']}' name='pecas[{$count}]'></td>\n";
echo " <td><input type='test' id='{$item['id']}' name='qntd[{$count}]'></td>\n";
echo "</tr>\n";
$count++;
}
如果有3个复选框和数量框,可以说第1和第3个框被选中,但不是第2个。你的帖子数组看起来像:
array(
'pecas'=> array(
0 => 'some value', //notice, no 1 key because the second checkbox was not checked.
2 => 'some other value'
),
'qntd' => array(
0 => 'some qntd',
1 => '' //1 was not checked, so nothing should have been entered in the second textbox.
2 => 'some other qntd'
)
);
密钥0
(第一个复选框)和2
(第三个)将存在于'pecas'数组中,并与'{}中的密钥0
和2
对应qntd'数组。然后,您可以遍历数据,如:
//check that at least one checkbox was checked
if(!empty($_POST['pecas'])){
//loop over the checkboxes getting key ($k) and value ($v).
foreach($_POST['pecas'] as $k=>$v){
//display a message
echo "Pecas {$v} ({$k}) was checked with a qntd of {$_POST['qntd'][$k]}<br>";
}
}
答案 1 :(得分:0)
更改
foreach ($pecas as $pecas_s) {
$mensagem .= " - ".$pecas_s."<br />";
}
到
for($x = 0; $x < count($pecas); ++$x) {
$mensagem .= " - ".$pecas[$x]. ": " . $qntd[$x] . "<br />"; //Example
}
因为看起来每个$ pecas都有$ qntd,所以你只需要获得$ pecas的索引位置,并在$ qntd中获取相同的索引位置
-
但是我要补充说,只有在选中它们时才会传递复选框,输入框总是会被传递。所以你可能会有一个差异,索引不对齐!如果未选中其复选框,您可能需要使用某些javascript来禁用输入框。
答案 2 :(得分:0)
好吧,我设法在@Jonathan Kuhn的帮助下用一点点不同的方法来解决这个问题。
在HTML表单中,我为每个元素提供了索引,
<td><input id="11.11.015.0002" name="pecas[1]" type="checkbox" value="11.11.015.0002 - BATERIA CHUMBO ACIDO 6V/4AH" /></td>
<td><input name="qntd[1]" size="7" type="text" /></td>
在PHP文件中,我替换
foreach ($pecas as $pecas_s) {
$mensagem .= " - ".$pecas_s."<br />";
}
到
array('pecas'=> array(), 'qntd' => array());
if(!empty($_POST['pecas']))
{
foreach($_POST['pecas'] as $k=>$v)
{
$mensagem .= "- {$v} - QUANT.: {$_POST['qntd'][$k]}<br>";
}
}
最后,当复选框被选中时,我的邮件会返回每个文本框的值! \ O /