我是PHP新手,正在寻求以下方面的帮助:
我有一个包含各种输入,选择和textareas的大型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"]
数组中的所有值保存在一个变量中,用逗号分隔(最后没有逗号)。
有人可以帮我这个吗?
非常感谢提前
答案 0 :(得分:4)
如果在表单中使用anyname[]
,PHP会将其转换为数组,但名称中不包含[]
。所以这应该有效:
$languages = implode(',', $_POST['language']);
请注意,未发布未选中的复选框,因此如果您选中“无”,则不会发布任何值,也不会设置$_POST['language']
。你必须检查一下。
$languages = 'No languages selected';
if (isset($_POST['language'])){
$languages = implode(',', $_POST['language']);
}
答案 1 :(得分: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,", ");