使用php中的表单数组中的复选框

时间:2016-05-18 17:11:31

标签: php html checkbox

从产品表中循环产品,将它们添加到购物车表中。只应选中复选框选中的产品,但如果选择,则选中的产品不对应.. 这是获取产品的HTML

<html>     
    <form action="#" id="" class="horizontal-form" method="post">
    <?php
    $LISTP = "SELECT * FROM products ORDER BY id";          

$sn = 0;
                    $stmt = $pdo->prepare($LISTP);
                    $stmt->execute();

                    while($list = $stmt->fetch(PDO::FETCH_ASSOC)){
                    $sn = $sn + 1;
                    $ID = $list['id'];
                    $NAME = $list['name'];
                   ?>
                     <input type="checkbox" name="slected[]" class="checkboxes" value="1" /> 
                     <input type="hidden" name="productid[]" class="" value="<?php echo $ID;?>" />
                     <input type="text" name="name[]" class="" value="<?php echo $NAME;?>" />
                    <?php }?> </form>

<?php 
// now when we submot the form
$slected = $_POST['slected'];
$prod = $_POST['productid'];
$name = $_POST['name'];

foreach($prod as $key => $product){
if($slected[$key]>0){

echo $product.' '.$name[$key].' '.@$slected[@$key].'--<br>';
}

// the problem is here, if you check all product it will work well, but if            you check the second one
// it would echo the second one giving it the name of the first one which     was not checked at all 
?>

1 个答案:

答案 0 :(得分:0)

我过去常常以同样的方式做到这一点,并且发现了我认为更好的方法。不要使用存储ID的隐藏输入,只需使用ID作为所有表单变量键的索引:

<input type="checkbox" name="slected[<?php echo $ID; ?>]" class="checkboxes" value="1" /> 
<input type="text" name="name[<?php echo $ID; ?>]" class="" value="<?php echo $NAME;?>" />

然后,您的PHP可以简化:

// now when we submot the form
$slected = $_POST['slected'];
$name = $_POST['name'];

foreach( (array)$slected as $ID => $on ) {
    echo $product . ' ' . $name[$ID] . ' ' . $ID . '--<br>';
}

所以 - 基本上,你的$slected变量将包含一系列仅被选中的项目,并且你已经在$ slected数组中内置了产品ID。