【问题标题】:How do I place checkbox values in the message using POST?如何使用 POST 在消息中放置复选框值?
【发布时间】:2011-08-16 14:45:27
【问题描述】:

我最近一直在创建一个 PHP 电子邮件表单,但无法正确发送复选框值。表格是我在别处找到的,一直在修改。 HTML 相当简单。

<label for="needs">I am looking for...</label>
<input name="needs[]" id="needs" type="checkbox" value="product list">A Product List<br>
<input name="needs[]" id="needs" type="checkbox" value="educational support">Educational Support<br>
<input name="needs[]" id="needs" type="checkbox" value="catering options">Catering Options<br>
<input name="needs[]" id="needs" type="checkbox" value="party ideas">Party Ideas<br>
<input name="needs[]" id="needs" type="checkbox" value="healthy alternatives">Healthy Alternatives<br>
<input name="needs[]" id="needs" type="checkbox" value="other">Other (please specify)<br>

截至目前,当我通过 PHP 发送它时,它只是返回一个选定的值,或者如果选择了多个,则表示“数组”。我想要的是发送给我的邮件消息以列出所选值。我在其他地方搜索过,但还没有找到和我一样的情况。这是PHP:

<?php
$msg=
'Name:      '.$_POST['name'].'<br />
Category:   '.$_POST['category'].'<br />
Email:      '.$_POST['email'].'<br />
Phone:      '.$_POST['telephone'].'<br />
Looking for:    '.$_POST['needs'].'<br />
IP:     '.$_SERVER['REMOTE_ADDR'].'<br /><br />

Message:<br /><br />

'.nl2br($_POST['message']).'

';
?>

其余的代码是设置和发送消息。我意识到还有其他方法可以做我想做的事,但我想继续使用此处包含的 $msg。

任何帮助将不胜感激,谢谢。

修改代码:

$msg=
'Name:      '.$_POST['name'].'<br />
Category:   '.$_POST['category'].'<br />
Email:      '.$_POST['email'].'<br />
Phone:      '.$_POST['telephone'].'<br />
Looking for:    '.(is_array($_POST['needs'])?implode("\n", $_POST['needs']):$_POST['needs']).'<br />
IP:     '.$_SERVER['REMOTE_ADDR'].'<br /><br />

Message:<br /><br />

'.nl2br($_POST['message']).'

';

【问题讨论】:

  • 要改进您的 HTML,您还应该从输入标签中删除 id="needs" 属性。 id 值应该是唯一的

标签: php post checkbox


【解决方案1】:

您应该像使用数组一样使用 $_POST['needs'],因为它实际上是一个数组。如果您只想获取选中复选框的列表,您可以将数组加入字符串:

$checked_options = implode("\n", $_POST['needs']);

你可以检查某些选项是否被选中:

if (in_array("educational support", $_POST['needs'])) echo ("educational support is checked");

等等……

在你的情况下,我会做以下事情:

<?php
$msg=
'Name:      '.$_POST['name'].'<br />
Category:   '.$_POST['category'].'<br />
Email:      '.$_POST['email'].'<br />
Phone:      '.$_POST['telephone'].'<br />
Looking for:    '.(is_array($_POST['needs'])?implode("\n", $_POST['needs']):$_POST['needs']).'<br />
IP:     '.$_SERVER['REMOTE_ADDR'].'<br /><br />

Message:<br /><br />
'.nl2br($_POST['message']).'

';
?>

'.nl2br($_POST['message']).'

'; ?>

【讨论】:

  • 我会把它放在上面发布的代码中吗?我一直在研究 implode 函数,但还没有设法让它工作。
  • 嗯,我试过了,它返回了以下内容:寻找:数组
  • 这很奇怪,但它对我有用。你能在你的问题中发布你的最终代码吗?
  • 我知道这个问题很古老,但现在我已经有了一年的 php 经验,我重新审视了这个问题,可以看到你的答案是正确的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-21
  • 1970-01-01
  • 2014-11-30
  • 2014-07-06
  • 1970-01-01
  • 1970-01-01
  • 2011-01-19
相关资源
最近更新 更多