【问题标题】:PHP Multiple Checkbox Array Not Sending All Values [closed]PHP多个复选框数组未发送所有值[关闭]
【发布时间】:2015-05-23 18:27:14
【问题描述】:

我在 Stackoverflow 上阅读了一些问题,但没有一个能解决我的问题,但也许我只是忽略了一些东西,因为我不熟悉 PHP。

我知道表单代码是正确的,但我的 PHP 有问题,因为只有复选框的最后一个元素会在表单完成后发送。

我不是在寻求解决方案,我只需要朝着正确的方向前进,这样我就知道自己做错了什么。

抱歉,我不熟悉后端,所以这对我来说是一个学习过程。

谢谢!

这里是 PHP(为保护隐私而更改了电子邮件):

<?php
    if ($_POST["submit"]) {
        $name = $_POST['name'];
        $email = $_POST['email'];
        $phone = $_POST['phone'];
        $company = $_POST['company'];
        $website = $_POST['website'];
        $checkboxes = $_POST['checkboxvar'];
           foreach ($checkboxes as $checkboxes=>$value) {
                     $value."\n";
                }
        $timeframe = $_POST['timeframe'];
        $description = $_POST['description'];
        $to = 'example@example.com'; 
        $subject = 'Full Contact Form';

        $body ="Name: $name\n\n
        E-Mail: $email\n\n 
        Phone: $phone\n\n 
        Company: $company\n\n 
        Website: $website\n\n 
        Checkboxes: $value\n
        Time Frame: $timeframe\n\n 
        Project Description:\n\n $description";

        if (!$_POST['name']) {
            $errName = 'Please enter your name';
        }

        if (!$_POST['email'] || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
            $errEmail = 'Please enter a valid email address';
        }

        if (!$_POST['description']) {
            $errDescription = 'Please enter your project description';
        }

if (!$errName && !$errEmail && !$errDescription) {
    if (mail ($to, $subject, $body)) {
        $result='<div class="alert alert-success alert-success-full-contact">Your request has been sent!</div>';
    } else {
        $result='<div class="alert alert-danger alert-danger-full-contact">Sorry, there was an error. Try again later!</div>';
    }
}
    }
?>

【问题讨论】:

  • 这是什么 - foreach ($checkboxes as $checkboxes=&gt;$value) { $value."\n"; } 你想在这里做什么?
  • 您也应该发布您的表格。请注意,只有标记的复选框才会发送到服务器。

标签: php arrays forms checkbox


【解决方案1】:

根据您的问题和代码,您的表单很可能是正确的,但正如您所提到的,您只发送最后一个值:

foreach ($checkboxes as $checkboxes=>$value) {
   $value."\n";
}
...
Checkboxes: $value\n

注意$value包含循环的最后一个值,所以最后一个复选框的值。

你可能想要这样的循环,而不是那个循环:

$value = implode(', ', $_POST['checkboxvar']);

这将为您提供一个以逗号分隔的复选框值列表。

或者,如果您想要示例中的换行符:

$value = implode("\n", $_POST['checkboxvar']);

【讨论】:

  • 完美无瑕。非常感谢!
【解决方案2】:

您的问题在于您循环检查复选框值的方式。

foreach ($checkboxes as $checkboxes=>$value) {
  $value."\n";
}

现在,您不断地覆盖 $value 的值

相反,使用类似的东西

$selectedValues = "";
foreach ($checkboxes as $checkboxes=>$value) {
  $selectedValues .= $value ."\n";
}

【讨论】:

  • 感谢您的帮助!
【解决方案3】:

这是什么?:

foreach ($checkboxes as $checkboxes=>$value) {
                     $value."\n";
                }

如果您想查看复选框值,您必须输入:

echo $value."\n";

没有意义

【讨论】:

  • 感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2016-05-29
  • 1970-01-01
  • 2022-06-14
  • 2017-02-26
  • 1970-01-01
  • 2010-12-06
  • 2014-01-13
  • 2015-09-13
相关资源
最近更新 更多