Php 基于复选框选择的多个动态单选按钮
我有一个表单选择,允许用户从动态生成的MySQL列表中选择产品,然后使用单选按钮对产品进行评级Php 基于复选框选择的多个动态单选按钮,php,mysql,arrays,forms,radio-button,Php,Mysql,Arrays,Forms,Radio Button,我有一个表单选择,允许用户从动态生成的MySQL列表中选择产品,然后使用单选按钮对产品进行评级 <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="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
<input type="radio" name="ProductQual$row[ProdID]" id="PQ$row[ProdID]" value="2" /> Fair
<input type="radio" name="ProductQual$row[ProdID]" id="PQ$row[ProdID]" value="3" /> Good
<input type="radio" name="ProductQual$row[ProdID]" id="PQ$row[ProdID]" value="4" /> Excellent
</div>
我知道我需要为每个选定的产品创建一个链接,但在for-each循环中将值放入MySQL表的过程中,我很难找出如何将$POST中的正确单选按钮与产品关联起来。可能有一种更优雅的方法,但这将是我的解决方案。我将您的复选框和收音机包装在
标签中,因此文本是可点击的(这也是一个很好的可访问性练习指南)。为每个产品生成具有唯一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
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 . '); ');
}
}