2015-06-19 81 views
2

我是新来的PHP,并正在寻找一些帮助,下面:

我有各种输入,选择和文字区域大的HTML表单。提交时,我将所有字段值传递给另一个PHP页面以创建一封电子邮件。

这工作作为用于文本输入,单选按钮,选择,文本域等等但不能用于复选框

在窗体我有多个复选框,所有看起来使用相同的名称如下:

<input type='checkbox' class='someClass' id='language1' name='language[]' value='de - German' /> 
<input type='checkbox' class='someClass' id='language2' name='language[]' value='en - English' /> 
<input type='checkbox' class='someClass' id='language3' name='language[]' value='fr - French' /> 
<!-- ... --> 

在PHP端我尝试以下,但如果我再使用$languages我的电子邮件的身体它显示为空白(而所有其他领域出现正确):

$languages = implode(',', $_POST['language[]']); 

我所试图做的是从$_POST["language"]数组保存在一个变量的所有值,用逗号(,并在年底没有逗号)隔开。

有人可以帮助我吗?

提前

+1

尝试'$ _ POST [ '语言']'代替'$ _ POST [ '语[]']'的? – Maximus2012

+0

感谢您的支持!会尝试。 – TaneMahuta

+0

这很好 - 见下文。再次感谢 - 我也投票支持你。 – TaneMahuta

回答

4

如果你在表单中使用anyname[]非常感谢,PHP将它转换成一个数组,但没有在名称中[]。所以这应该工作:

$languages = implode(',', $_POST['language']); 

注意选中复选框不贴了,所以如果你没有检查,没有价值张贴和$_POST['language']不会设置。你将不得不检查。

$languages = 'No languages selected'; 
if (isset($_POST['language'])){ 
    $languages = implode(',', $_POST['language']); 
} 
+0

非常感谢 - 让我试试这个。 – TaneMahuta

+0

太棒了 - 这个效果很好。有时候生活可能如此简单。 :)非常感谢 - 我会尽快接受。 – TaneMahuta

+0

感谢您的更新。一个关于这个问题的例子:应该很少会在这里没有选中复选框(因为默认情况下会选中其中的一个)。如果我不检查是否发布了任何值,是否会造成任何问题,即,我是否必须这样做? – TaneMahuta

0

HTML

<input type='checkbox' class='someClass' id='language1' name='language[]' value='1' /> 
<input type='checkbox' class='someClass' id='language2' name='language[]' value='2' /> 
<input type='checkbox' class='someClass' id='language3' name='language[]' value='3' /> 
<!-- ... --> 

PHP

$language_ = array(1=>'de - German',2=>'en - English',3=>'fr - French'); 
if (!empty($_GET['language'])) { 
    foreach ($_GET['language'] as $l) { 
       $lan0 .= $language_[$l].', '; 
      } 
echo rtrim($lan0,", ");