Выбирайте продукты из таблицы продуктов, чтобы добавить их в корзину. нужно добавить только выбранный продукт, установив флажок, но если вы выберете, выбранные не будут соответствовать. ЗДЕСЬ – 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 ?>
Раньше я делал это так же в прошлом и обнаружил, что я думаю, что это лучший способ. Вместо того, чтобы иметь скрытый ввод, который хранит идентификатор, просто используйте идентификатор в качестве индекса для всех ключей переменной формы:
<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 array.