【发布时间】:2021-04-09 17:00:16
【问题描述】:
我一直在努力解决这个问题。我有一个脚本,它从我的网站获取表单帖子,并将数据以格式精美的电子邮件发送到我的电子邮件地址。我遇到的问题是表单必须在用户填写时计算运行总计,其中一部分来自选择框的值作为一个变量,复选框的值作为另一个变量,加在一起形成总计。为了使这项工作,我必须在我的表单中有一个隐藏的复选框,其值为“0”,标记为已选中。因此,我发送到 phpmailer 的数组的索引计数始终至少为 1。当没有选中其他选项并且仅选中隐藏的复选框时,它会在电子邮件中完美返回“未选择选项”。当我选中另一个选项或多个选项时,它会将它们正确发送到带有
标签的表单,以便它们按行顺序显示。问题是,无论我做什么,最后一个 $optiontype 都会重复并在我的电子邮件表单中显示两次。
我认为问题在于我的代码中的最后一个条件语句。
if (isset($_POST['optiontype'])) { $arraycount = count($_POST['optiontype']);
for ($index = 0; $index < count($_POST['optiontype']); $index++) {
$value = $_POST['optiontype'][$index];
if ($value == '0' && $arraycount == 1) {
$value_text = 'No Options Selected';
}
if ($value == '70') {
$value_text = '$70 Green Plus';
}
if ($value == '75') {
$value_text = '$75 Subterranean Termite Treatment';
}
if ($value == '50') {
$value_text = '$50 Freezer-Standalone';
}
if ($value == '25') {
$value_text = '$25 Wet Bar Refrigerator/2nd Refrigerator';
}
if ($value == '150') {
$value_text = '$150 Pool/Spa Combo';
}
if ($value == '150+0') {
$value_text = '$150 Additional Pool or Spa';
}
if ($value == '300') {
$value_text = '$300 Salt Water Pool (Includes Pool/Spa Combo)';
}
if ($value == '100') {
$value_text = '$100 Well Pump';
}
if ($value == '75+0') {
$value_text = '$75 Septic System/Sewage Ejector Pump & Septic Tank Pumping';}
if ($value == '90') {
$value_text = '$90 External Water Line Repair';
}
if ($value == '195') {
$value_text = '$195 External Water Line + Sewer & Septic Line Repair';
}
if ($index < $arraycount) {
$optiontype .= $value_text . "<br>";
} else {
$optiontype .= $value_text;
}
}
【问题讨论】:
-
好的,因此展望未来,此代码将非常难以维护,尤其是在您更改价格时。相反,我会将您所有的产品放入一个数组中(或者 DB 会更好)并做这样的事情。
$products = ['50' => '$50 Freezer-Standalone', '75' => '$75 Subterranean Termite Treatment']; $value_text = $products[$value]; -
您甚至可以检查产品是否首先存在于数组中,基本上 if/else 代码将被证明难以维护
-
这里有一个很好的教程,展示了如何在 PHP 中使用多个选择框 - geeksforgeeks.org/…
-
我感谢所有 cmets 并同意...但我们大约每 4 年更改一次价格,我们的整个产品目录只有大约 50 件商品。这应该只是为我的客户和我的客户提供简单的便利,以确保我获得输入订单所需的信息。在这个时候,我真的只想知道为什么最后一个选项一直重复......它伤害了我的大脑,我已经尝试了我能想到的每一个条件。