提交动态复选框表单并成对获取值

时间:2014-07-31 17:56:17

标签: php arrays forms loops

我有一个动态添加复选框的表单 - 每个复选框和一个隐藏字段。我只需要在提交时与隐藏字段成对显示的选中值。

这就是我所拥有的:

<input type="checkbox" name="valg[]" value="<?=$hent_data[id]?>" />
<input type="hidden" name="process_id[]" value="<?=$hent_data[process_id]?>" />

<?php
if($_POST[submit] != ""){

$arrlength=count($_POST[valg]);
for($x=0;$x<$arrlength;$x++) {
$dimen1 = $_POST[valg][$x];
$dimen2 = $_POST[process_id][$x];

echo $hest = "INSERT INTO chosen (kat_ref, prod_ref, process_id) VALUES ($dimen1, '', $dimen2)"."<br/>";
}


}
?> 

提交后,我检查了正确的行数,并使用正确的复选框值,但问题出在隐藏文本输入中。提交时,它会列出所有隐藏的值。

让我们以10个复选框(和隐藏文本输入)的形式说我已经勾选了3个复选框我希望确切的3个隐藏文本输入框与勾选的复选框一起收听,但它会将它们全部返回,这意味着无论我检查多少个复选框,它都会解析所有隐藏的值字段。

有什么想法吗?

我希望你明白 - 或者让我知道; - )

1 个答案:

答案 0 :(得分:1)

从讨论开始,对我来说,最好在key =&gt; value

中发送复选框
<input type="checkbox" name="valg[<?=$hent_data[id]?>]" value="<?=$hent_data[process_id]?>" />

这会在php端给你一个类似于

的结果
Array
(
    [valg] => Array
        (
            [uniqueKey3] => processID3
            [uniqueKey7] => processID7
            [uniqueKey8] => processID8
        )

)

因此在php中你可以这样做:

foreach($_POST['valg'] as $ID => $processID){
    echo $hest = "INSERT INTO chosen (kat_ref, prod_ref, process_id) VALUES ($ID, '', $processID)"."<br/>";
}