我有一个效率低下的表单,显然每个SELECT元素发送一种类型的数据。为简单起见,这是一个例子。
表单从2个SELECT元素发布数据,但实际上需要包含3个数据。对于用户,SELECT do 包含3个数据;一个SELECT表示数量,另一个SELECT表示项目名称和使用OPTION标签之间的文本的价格。
因此,表单只发送$ quantity和$ itemname
在处理过程中,我正在尝试构建一堆IF或SWITCH以提供缺失的价格。因为与$ itemname相关联的字符串是唯一的,我正在尝试制作一个提供价格的“密钥”。我的逻辑是,如果$ itemname包含“One Inch Nut”,我可以找到$ price的价格:
if ($itemname = "Once Inch Nut;") { $price = .25; }
如果$ itemname是别的,我会在交换机中添加另一个IF或IF else或CASE。
事实上,我正在这样做,但当我从SELECT中选择另一个OPTION时,$ price甚至$ item名称被定义为我的“IFs”堆栈中的最后一个“IF”
所以,如果我选择了20项SELECT分组中的第3项,当我需要使用变量(添加,回显,无论如何)时,我最终会得到“IF”的结尾栈“
显然,我对IE ELSEIF ELSE的逻辑和理解存在缺陷。
关于如何从变量的字符串数据中创建“Key”的想法?
谢谢, 罗布
请参阅下文,了解我认为的工作原理的简略示例:
假设表单为$ itemname发布了“cat”,为$ qty发布了“3”
<?
$itemname = $_POST['specificitem'] ;
$qty = $_POST['quantity'] ;
if ($itemname = "cat;") { $price = 2.25; }
if ($itemname = "dog;") { $price = 1.25; }
if ($itemname = "hamster;") { $price = 3.25; }
if ($itemname = "parakeet;") { $price = 7.25; }
if ($itemname = "werewolf;") { $price = 122.25; }
echo $itemname;
echo "$"$price;
?>
应该收益:cat $ 2.25 ????
答案 0 :(得分:2)
您需要==
来测试:
if ($itemname == "cat;") { $price = 2.25; }
但是,通常会看到switch
用于此类情况:
$itemname = $_POST['specificitem'] ;
$qty = $_POST['quantity'] ;
switch($itemname)
{
case "cat;":
$price = 2.25;
break;
case "dog;":
$price = 1.25;
break;
case "hamster;":
$price = 3.25;
break;
case "parakeet;":
$price = 7.25;
break;
case "werewolf;":
$price = 122.25;
break;
}
echo $itemname;
echo "$"$price;
答案 1 :(得分:1)
我建议您使用“table”approch代码。创建一个表示按项目名称定价的数组。并获得单线价格如下:
<?
$itemname = $_POST['specificitem'] ;
$qty = $_POST['quantity'] ;
## creating a price "table"
$item_prices = array(
'cat;' => 2.25,
'dog;' => 1.25,
## adding more is easy here
);
if (array_key_exists($itemname, $item_prices)) {
## get price in single line
$price = $item_prices[$itemname];
}
else {
## set some default price if item is unknown
}
echo $itemname;
echo "$",$price;
?>
稍后,如果需要,您可以使用$item_prices
为select
代码生成选项。