【问题标题】:PHP Form Checklist show "For:" label instead of "Value:"PHP 表单清单显示“For:”标签而不是“Value:”
【发布时间】:2019-04-10 18:55:04
【问题描述】:

我终于得到了一个在 PHP 中工作的清单,但它列出了我输入的“value:”而不是“for:”我不能使用 'value:' 的原因是因为该值是一个数字总计,我想知道勾选了哪个选项,而不仅仅是看到一个数字,

<input class="basic-config" type="checkbox" name="ch[]" id="basic-option1" value="100"><label for="basic-option1">option 1<span class="right-align">$100</span></label>

<input class="basic-config" type="checkbox" name="ch[]" id="basic-option2" value="200"><label for="basic-option2">option 2<span class="right-align">$200</span></label>

PHP 如下:

if (isset($_POST['submit'])) {

$name = $_POST ['name'];
$mailFrom = $_POST ['mail'];
$website = $_POST ['website'];
$comments = $_POST ['comments'];
$basicAmount = $_POST ['basic-amount'];
$extras = "None";
if(isset($_POST["ch"]))
$extras = implode(", ", $_POST["ch"]);

$mailTo = "josh@myemail.com";
$headers = "From: ".$mailFrom; 
$txt = "\n
Basic Order Request. \n\n
From: $name \n\n
Email: $mailFrom \n\n
Website: $website \n\n
Comments: $comments \n\n
Extras: $extras \n\n
Total: $basicAmount";
}

如何让它列出勾选的复选框的“for”甚至“id”名称,而不是列出“value”?

例如,这就是我想要的:

附加:选项 1、选项 2 总计:300 美元

这是我目前拥有的,而不是我想要的:

额外:100、200 总计:300 美元

不胜感激!

【问题讨论】:

  • 与您的实际问题无关的小问题:您在这里有一个额外的双引号 name="ch[]"" 并且您的第二个复选框的标签引用了第一个复选框的 id。您的实际问题:PHP 不会以您想要的方式访问表单输入 ID。
  • 赞同@cteski 的评论;您可能必须重新考虑将 name 属性分配给复选框的约定,以便以类似于您所描述的方式访问它们。 type='checkbox' 中的 inputname="ch['basic-option1']" 可以像 $_POST['ch']['basic-option1'] 一样访问。

标签: php forms checkbox


【解决方案1】:

只提交成功的控件(输入)和值。您可以将该选项用作数组键:

<input type="checkbox" name="ch[Option 1]" value="100">
<input type="checkbox" name="ch[Option 2]" value="200">

然后获取这些密钥:

$extras = implode(", ", array_keys($_POST['ch']));

或者创建一个隐藏的输入数组并将它们配对(使用相同的键):

<input type="hidden" name="ex[0]" value="Option 1">
<input type="checkbox" name="ch[0]" value="100">
<input type="hidden" name="ex[1]" value="Option 2">
<input type="checkbox" name="ch[1]" value="200">

然后访问具有相应检查的选项:

$extras = implode(", ", array_intersect_key($_POST['ex'], $_POST['ch']));

【讨论】:

  • 你的第一种方法效果很好,谢谢你的回答!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多