Working with checkbox from form array in php

佐手、 提交于 2019-12-20 07:48:31

问题


Am looping products out from product table to add them to cart table. only the selected product by checking the checkbox should be added, but if you select, the selected ones do not correspond.. HERE IS THE HTML GETTING THE PRODUCTS OUT

<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:


I used to do this the same way in the past, and have discovered what I think is a better way. Rather than having a hidden input that stores the ID, just use the ID as the index for all of the form variable keys:

<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;?>" />

Then, your PHP can be simplified:

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

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

So - basically, your $slected variable will contain an array of only items that are selected, AND you have the product ID built in to the $slected array.



来源:https://stackoverflow.com/questions/37306143/working-with-checkbox-from-form-array-in-php

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!