我在从单选按钮表单中提取数据时遇到问题。
看起来像这样:
<?php
## color
$stripe = 1;
$att_color=mysql_query("SELECT * FROM product_attributes WHERE products_id ='".$row['products_id']."' AND att_head='colors' AND att_show='1' ORDER BY att_order asc");
if(mysql_num_rows($att_color)!=0)
{
echo "
<table>
<tr>
<td width=\"90%\" align=\"left\" bgcolor=\"#EDEDED\">Color</td>
<td width=\"10%\" align=\"center\" bgcolor=\"#891531\">
<a href=\"#2\" title=\"Yta / Behandling\"><img src=\"images/info.png\"></a>
</td>
</tr>";
while($color_row=mysql_fetch_array($att_color)){
if ($color_row['att_standard'] == 1) { $standard = "checked"; }
echo "
<tr class=".(($stripe++%2==1) ? 'odd' : 'even').">
<td colspan=\"2\" width=\"100%\">
<input name=\"color_name[]\" value=\"".$color_row['att_name']."\" id=\"".$color_row['att_order']."\" type=\"hidden\" />
<input type=\"radio\" name=\"color_selected[]\" id=\"".$color_row['att_order']."\" value=\"".(round($color_row['att_val']*0.85))."\" ".$standard.">
<img src=\"images/colors/".$colorimg."\"> ".$color_row['att_name']."</td>
</tr>";
unset($standard); }
echo "</table>"; }
# END color
?>
只允许一个选项。 当某人点击提交时,我需要从该行获取值和相应的名称。 但是我似乎无法想出foreach语法。
if( isset($_POST['submit']) ) {
$c_selected = $_POST['color_selected'];
$c_name = $_POST['color_name'];
foreach($c_selected as $key => $n) {
echo "<br><br>". $c_selected[$key] ." ".$c_name[$key];
}
当前代码为我提供了正确的值,但错误的颜色名称。 (总是第一选择) 我怎样才能让它发挥作用?
答案 0 :(得分:0)
这是破产:
<input type=\"radio\" name=\"color_selected[]\" id=\"".$color_row['att_order']."\" value=\"".(round($color_row['att_val']*0.85))."\" ".$standard.">
name=\"color_selected[]\" should not be an array.
而不是
name=\"color_selected\" will provide the chosen color.
因此,单选按钮的值应该是颜色,而不是项目的成本。 您应该使用项目的值创建另一个隐藏字段,除非每种颜色的价格不同。
我认为问题更复杂,因为您尝试发送订单数组而不是简单的表单或其他内容。如果是这种情况,也许你必须重新考虑你这样做的方式。
您似乎有一个产品ID字段,它应该对每种颜色都是唯一的,并且可以在另一侧使用以获取数据库中的所有数据值。
<input name=\"att_order\"
value=\"".$color_row['att_order']."\"
type=\"hidden\" />
<input type=\"radio\"
name=\"color_selected\"
value=\"".$color_row['products_id']."\"
".$standard.">