我有这个表单,我无法计算出如何在结果中显示所选的复选项名称。在我的html站点上,我使用value来计算总价,但是当它显示结果中所选择的内容时,它将显示所选项目的值。如何在php中处理这个问题?这是我的结果,我也会发布我的代码。
你的名字是:吉姆
您的总费用是: 4.56
你的付款方式是:签证
您所选择的产品: 4.29
在这里的最后一部分,我需要显示选定的产品名称,而不是价值。
<!DOCTYPE html>
<head>
<title> Light Bulbs Sales Form </title>
</head>
<body>
<h2> Welcome to Light Bulbs Sales Form </h2>
<form action="php/index.php" method="post">
<p>
<label> Buyer's Name:
<input type="text" name="name" size="30" />
</label>
<p/>
<table>
<tr>
<th></th>
<th>Product Name</th>
<th>Price</th>
</tr>
<tr>
<td><input type="checkbox" name="b[]" value="2.39" /></td>
<td> Four 25-watt light bulbs </td>
<td> $2.39 </td>
</tr>
<tr>
<td><input type="checkbox" name="b[]" value="4.29"/></td>
<td> Eight 25-watt light bulbs </td>
<td> $4.29 </td>
</tr>
<tr>
<td><input type="checkbox" name="b[]" value="3.95"/></td>
<td> Four 25-watt long-life light bulbs </td>
<td> $3.95 </td>
</tr>
<tr>
<td><input type="checkbox" name="b[]" value="7.49"/></td>
<td> Eight 25-watt long-life light bulbs </td>
<td> $7.49 </td>
</tr>
</table>
<h3>Payment Method</h3>
<p>
<label><input type="radio" name="payment" value="Visa"/>Visa</label>
<br/>
<label><input type="radio" name="payment" value="Master Card"/>Master Card</label>
<br/>
<label><input type="radio" name="payment" value="Discover"/>Discover</label>
<br/>
</p>
<p>
<input type="submit" value="Submit Order"/>
<input type="reset" value="Clear Order Form"/>
</p>
</form>
</body>
</html>
<?php
$name=$_POST["name"];
$bulbs=$_POST["b"];
$pmode=$_POST["payment"];
$select_val=$_POST["b"];
$total=0;
for($i=0;$i<sizeof($bulbs);$i++)
{
$tax=$bulbs[$i]*0.062;
$total=$total+$bulbs[$i]+$tax;
$totalcost=number_format((float)$total, 2, '.', '');
}
print "Your name is: $name <br>";
print "Your total cost is: $totalcost <br>";
print "Your payment method is: $pmode <br>";
print "Your Selected Product(s):<br>";
for ($j=0; $j <count($select_val) ; $j++) {
$select_val[$j]."<br>";
echo $select_val[$j] ;
}
?>
发布于 2016-03-05 06:41:06
正如Devlin在评论中指出的那样,产品名称没有与表单一起提交,因为它们只是页面上的纯文本。文本恰好就在按钮旁边。
有几个解决办法,我可以想出我的头顶。
解决方案1:关联数组
相反,将价格包含在复选框中,您可以使用产品的名称,比如<input type="checkbox" name="b[]" value="Four 25-watt light bulbs" />。然后,PHP脚本中将有一个数组,该数组与产品的标题及其各自的价格相关联,如下所示:
$products = array(
"Four 25-watt light bulbs" => 2.39,
"Eight 25-watt light bulbs" => 4.29,
"Four 25-watt long-life light bulbs" => 3.95,
"Eight 25-watt long-life light bulbs" => 7.49
);与其仅仅通过$bulbs[$i]访问灯泡的价格,不如用$products[$bulbs[$i]]来实现。
当然,你不能在复选框仍然发送价格的地方翻转它,因为有些产品可以有相同的价格。
解决方案2: Javascript
您可以在每个复选框旁边有一个隐藏的输入,它使用Javascript提交产品的名称。
<input type="checkbox" name="bulbs[]" value="2.39" onchange="onChange(this)"/><input type="hidden" name="" value="">我的Javascript技能几乎是不存在的,因此我无法获得一个工作示例,但它的基本要点是您希望找到复选框的下一个兄弟,然后将其名称设置为products[],并将其值设置为与其关联的产品的正确名称。
解决方案3:产品ID
最后的解决方案是为每个产品分配一个产品ID。我推荐这个ID,因为它是最容易扩展和最容易维护的。
<input type="checkbox" name="bulbs[]" value="1"/>
<input type="checkbox" name="bulbs[]" value="2"/>
...etc...在PHP脚本中,将有一个多维关联数组,如下所示:
$products = array(
1 => array("name" => "Four 25-watt light bulbs",
"price" => 2.39),
2 => array("name" => "Eight 25-watt light bulbs",
"price" => 4.29),
3 => array("name" => "Four 25-watt long-life light bulbs",
"price" => 3.95),
4 => array("name" => "Eight 25-watt long-life light bulbs",
"price" => 7.49)
);然后,您将访问价格和名称,而不是使用$bulbs[$i],而是使用$products[$bulbs[$i]]["price"]或$products[$bulbs[$i]]["name"]。
https://stackoverflow.com/questions/35809566
复制相似问题