Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP反馈表单复选框错误_Php_Forms - Fatal编程技术网

PHP反馈表单复选框错误

PHP反馈表单复选框错误,php,forms,Php,Forms,好的,这是我的联系人表单的php的缩写版本(复选框没有正确发送) 而功能不正常的区域是 <fieldset> <legend>How did you hear about us? <span class="phpformerror"><?php echo $errorhear_about; ?></span></legend> <div><input type="checkbox" na

好的,这是我的联系人表单的php的缩写版本(复选框没有正确发送)


而功能不正常的区域是

<fieldset>
    <legend>How did you hear about us? <span class="phpformerror"><?php echo $errorhear_about; ?></span></legend>
    <div><input type="checkbox" name="hear_about[]" value="Web" /> Web</div>
    <div><input type="checkbox" name="hear_about[]" value="Newspaper" /> Newspaper</div>
    <div><input type="checkbox" name="hear_about[]" value="Radio" /> Radio</div>
    <div><input type="checkbox" name="hear_about[]" value="Driving" /> Driving Past</div>
    <div><input type="checkbox" name="hear_about[]" value="Referal" /> Referal</div>
    <div><input type="checkbox" name="hear_about[]" value="Other" /> Other</div>
</fieldset>

你是怎么听说我们的?
网状物
报纸
无线电
驶过
参考的
其他

目前,如果选择了多个变量,则仅显示其中一个变量

hear\u about
是一个数组,
filter\u var()
无法正确处理数组。而是使用:

请记住,
$hear\u about
是一个数组,在整个代码中必须像一个数组一样对待(例如,仅使用
$hear\u about
不起作用,它必须是
$hear\u about[0]
$hear\u about[1]
等)

因此,例如,在修剪线中,您需要如下内容:

foreach($hear_about as $key => $value) {
$trimhear_about[$key] = trim($value);
    if(empty($trimhear_about[$key])){
        //the hear_about field is empty
        $errors = 1;
        $errorhear_about[$key] = "This field is empty";
    }
}

这将保留处理数组的好处。

$\u POST['hear\u about']
是一个值数组。您正在将其作为一个简单的字符串处理

我认为您可以简单地更换线路:

$hear_about = filter_var($_POST['hear_about'], FILTER_SANITIZE_STRING);
与:


通过将数组值与给定胶水连接起来,将数组“转换”为字符串。因此,您可以用逗号连接选定的“您是如何听说我们的?”选项,然后将结果字符串用作其他数据。

您是对的,这可用于清理数组中包含的字符串。但不能解决用户的问题,因为在脚本的其余部分,他使用
$hear\u about
,就好像它是一个字符串。嘿,谢谢你的反馈,这非常有效,直到你说你要填写表单并完全忽略复选框。在这一点上,我将得到两个错误:警告:filter_var_array()期望参数1是数组,在…中给出null,&警告:为foreach()提供的参数无效与您建议的包含的代码相关。您可以使用is_数组来确定它是否为数组,并相应地作出反应。使用“filter_var_数组”更容易,它是专为此特定场景设计的
foreach($hear_about as $key => $value) {
$trimhear_about[$key] = trim($value);
    if(empty($trimhear_about[$key])){
        //the hear_about field is empty
        $errors = 1;
        $errorhear_about[$key] = "This field is empty";
    }
}
$hear_about = filter_var($_POST['hear_about'], FILTER_SANITIZE_STRING);
$hear_about = filter_var(implode(', ', $_POST['hear_about']), FILTER_SANITIZE_STRING);