2012-02-22 21 views
2

私は、ユーザーが動的に生成されたMySQLリストから製品を選択し、ラジオボタンを使用して製品を評価することを可能にするフォーム選択があります。チェックボックスの選択に基づいた複数のダイナミックラジオボタン

私は私が選択した各製品をfor_eachする必要がありますが、私はトラブルを考え出すを持っています知っているMySQLのテーブルに製品を「確認」

----------------- 
| ProdID(a) | 3 | 
| ProdID(b) | 1 | 
----------------- 

ごとに選択したラジオ値を入れたい

<input type="checkbox" value="$row[ProdID]" name="Product[]" id="Product$row[ProdID]" onclick="showhide_div($row[ProdID])" />$row[ProductName] 

<div id="div$row[CatID]" style="display:none"> 
<input type="radio" name="ProductQual$row[ProdID]" id="PQ$row[ProdID]" value="1" /> Poor&nbsp;&nbsp; 
<input type="radio" name="ProductQual$row[ProdID]" id="PQ$row[ProdID]" value="2" /> Fair&nbsp;&nbsp; 
<input type="radio" name="ProductQual$row[ProdID]" id="PQ$row[ProdID]" value="3" /> Good&nbsp;&nbsp; 
<input type="radio" name="ProductQual$row[ProdID]" id="PQ$row[ProdID]" value="4" /> Excellent&nbsp;&nbsp; 
</div> 

for_eachループの間に、全体の$ POSTから製品に正しいラジオボタンを関連づけて、値をMySQLテーブルに入れる方法。

答えて

1

もっとうまくいく方法があるかもしれませんが、これが私の解決策です。私は<label></label>タグであなたのチェックボックスとラジオをラップしたので、テキストはクリック可能です(練習にはアクセシビリティ上のガイドラインもあります)。 RADIOは、製品ごとに一意のIDで生成されます。

<?php 

echo '<label><input type="checkbox" name="product_' . $row['ProdID'] . '" id="product_' . $row['ProdID'] . '" onclick="javascript:showhide_div(' . $row['ProdID'] . ')" /> ' . $row['ProductName'] . '</label>'; 

echo <<<EOT 
<div id="div{$row['ProdID']}" style="display:none;"> 
<label><input type="radio" name="productquality_{$row['ProdID']}" value="1" /> Poor</label> 
<label><input type="radio" name="productquality_{$row['ProdID']}" value="2" /> Fair</label> 
<label><input type="radio" name="productquality_{$row['ProdID']}" value="3" /> Good</label> 
<label><input type="radio" name="productquality_{$row['ProdID']}" value="4" /> Excellent</label> 
</div> 
EOT; 

バックエンドでは、すべての評価フィールドが解析され、テーブルに挿入されます。

<?php 

foreach ($_REQUEST as $k=>$v){ // Step through each _REQUEST (_POST or _GET) variable 

    if (strpos($k, 'productquality') !== false){ // Only parse productquality_X variables 
     $parts = explode('_', $k); // Split at the underscore 
     $id = $parts[1]; // ID is the part after the underscore 

     // Do something, like insert into MySQL. In reality best to escape the values, to make sure to prevent injection. 
     mysql_query(' INSERT INTO `quality` (ProdID, Rating) VALUES (' . $id . ', ' . $v . '); '); 
    } 
} 
+0

これは素晴らしい機能でした。お手伝いありがとう。 – user1226570

関連する問題