2016-05-18 5 views
-1

製品表から製品をループしてカートの表に追加しています。チェックボックスをチェックすることによってのみ、選択した製品を追加する必要がありますが、あなたが選択した場合、選択されたものは対応していません。.. をHERE 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].' '[email protected]$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 
?> 
+0

あなたは 'var_dump($ key、$ product、$ slected [$ key])'をやろうとしましたか?それを行い、あなたのコードに何が間違っているかを見てください。 –

答えて

0

製品OUT得ています私はよりよい方法だと思ったことを発見しました。むしろ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が組み込まれています。

+0

完璧なソリューション、魔法のように働いてくれてありがとう – Ekumahost

関連する問題