【问题标题】:Checkbox Value not showing in Email复选框值未显示在电子邮件中
【发布时间】:2014-02-27 16:32:34
【问题描述】:

所以我创建了一个简单的注册表格。除了复选框外,一切都完美无缺。它们似乎没有显示在发送给收件人的电子邮件中。

这是 HTML 表单部分:

<input type="checkbox" class="radio" name="projectType[]" value="Logo/Identity System" required/>Logo/Identity System<br />
<input type="checkbox" class="radio" name="projectType[]" value="Poster" required/>Poster<br />
<input type="checkbox" class="radio" name="projectType[]" value="Brochure" required/>Brochure<br />

<input type="checkbox" class="radio" name="projectType[]" value="Ad Campaign" required/>Ad Campaign<br />
<input type="checkbox" class="radio" name="projectType[]" value="Website" required/>Website<br />
<input type="checkbox" class="radio" name="projectType[]" value="Other" required />Other<br />

这里是 PHP 部分:

<?php
$to = 'bolanosjd@gmail.com';
$projectType = $_POST['projectType'];
$body = "Project Type:$projectType\n"
if ($_POST['submit']) {
    if (mail ($to, $body)) {
        echo '<p>You have successfully registered for 2014 Designathon!</p>';
    } else {
        echo '<p>Something went wrong, go back and try again!</p>';
    }
}
?>

当按下按钮提交时,所有信息都被发送,但“项目类型:”为空,没有任何值。如何让它显示所选复选框的值?不要介意“radio”类它们以前是单选按钮,可以正常工作,但客户需要多个选择。

【问题讨论】:

  • 旁注:在$body = "Project Type:$projectType\n" 处缺少; 并确保您的提交按钮被命名为submit 但不会将其作为答案,担心这是一个错字。
  • 他们通常会打开“蠕虫罐头”哈哈@meda
  • ^--« 你看到了吗? @meda 我知道这是一个错字;-)
  • @Fred-ii- Omg 你说的太对了,我明白你为什么现在这样反应了哈哈
  • @meda 在下结论之前最好先发表评论。至少,根据我的经验 ;-)

标签: php html forms checkbox


【解决方案1】:

您尝试发送电子邮件至array,但need a string。 只需从以下位置更改您的代码:

$body = "Project Type:$projectType\n"

到:

$types = implode(', ', $projectType);
$body = "Project Type:$types\n";

【讨论】:

  • not so fast 哈哈! @meda
  • 这很好用,但你忘了在“胶水”和数组之间放一个“,”。但效果很好。他们也是你写的,我认为它取代了$projectType = $_POST['projectType'];,但实际上内爆在下面。一些试验和错误,但效果很好。非常感谢!
【解决方案2】:

使用implode() 列出复选框值,如下所示:

<?php
if ($_POST['submit']) {

  $to = 'bolanosjd@gmail.com';
  $projectType = $_POST['projectType'];
  $body = "Project Type: " . implode(", ", $projectType) ."\n";

    if (mail ($to, $body)) {
        echo '<p>You have successfully registered for 2014 Designathon!</p>';
    } else {
        echo '<p>Something went wrong, go back and try again!</p>';
    }
}
?>

【讨论】:

  • 好答案,我将变量移到条件内部以避免未定义的值
  • 谢谢。塞尔吉奥复制了implode
【解决方案3】:
foreach($_POST['projectType'] as $value){
  echo $value;
}

【讨论】:

  • 这到底会去哪里?内if ($_POST['submit']) { if (mail ($to, $subject, $body, $from)) { }
【解决方案4】:

您已将项目类型设置为数组 ([])。删除方括号,它应该可以按预期工作。我本来以为“数组”会通过。

&lt;input type="checkbox" class="radio" name="projectType" value="Logo/Identity System" required/&gt;Logo/Identity System

或者,参见 keener 的示例,它遍历所有潜在值(如果可以选择多个值)

【讨论】:

  • 其实你需要括号
  • 这不相关。为什么要删除[]s?没有它们,这将无法工作。
  • 如果操作打算使用radio 而不是类所暗示的checkbox。没有提到希望在电子邮件正文中包含一种以上的类型
猜你喜欢
  • 2013-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-29
  • 2019-05-18
  • 2020-01-14
  • 1970-01-01
  • 2020-09-05
相关资源
最近更新 更多