首页 文章

PHP:如何在变量中保存$ _POST中的多个复选框数组

提问于
浏览
2

我是PHP新手,我正在寻求以下方面的帮助:

我有一个大型HTML表单,包含各种输入,选择和textareas . 提交I pass all field values to another PHP page 以创建与他们的电子邮件 .

This works 用于文本输入,单选按钮,选择,文本等. but not for checkboxes .

在表单中,我有多个复选框,使用相同的名称看起来如下:

<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"] 数组中的所有值保存在一个变量中,用逗号分隔(最后没有逗号) .

有人可以帮我弄这个吗 ?

提前谢谢了

2 回答

  • 0

    如果在表单中使用 anyname[] ,PHP会将其转换为数组,但名称中没有 [] . 所以这应该工作:

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

    请注意,未发布未选中的复选框,因此如果选中“无”,则不会发布任何值,也不会设置 $_POST['language'] . 你必须检查一下 .

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

    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,", ");
    

相关问题