用于验证用户填写至少1个字段的PHP代码

时间:2013-06-18 14:32:47

标签: php forum

我有一个论坛,用户可以在其中选择他或她想填写的栏目。

我不想要每个盒子,但只要求他或她填写其中一个盒子。

以下是论坛的图片: enter image description here

他们可以选择在“人行道和非道路区域”或“停车场(无米)”中输入信息。不需要填写所有字段,只需填写一个字段。

我的代码似乎有效,但如果用户没有填写字段,它不会吐出错误。这是我的代码:

<?php
$var_all = FALSE;        // all variable

     // Fees Validation
 if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (isset($_POST['sidewalk_days_close'])) {
        $var_sidewalk_days_closed = TRUE;
            $var_all = TRUE;
        $fee_SDC = trim($_POST['sidewalk_days_close']);
        }
    if (isset($_POST['parking_noMeters_spaces'])) {
        $var_parking_noMeters_spaces = TRUE;
        $var_all = TRUE;
        $fee_PNMS = trim($_POST['parking_noMeters_spaces']);
        }
    if (isset($_POST['parking_noMeters_days'])) {
        $var_parking_noMeters_days = TRUE;
        $var_all = TRUE;
        $fee_PNMD = trim($_POST['parking_noMeters_days']);
        }
    if (isset($_POST['parking_Meters_spaces'])) {
        $var_parking_meters_with_spaces = TRUE;
        $var_all = TRUE;
        $fee_PMS = trim($_POST['parking_Meters_spaces']);
        }
    if (isset($_POST['parking_Meters_days'])) {
        $var_parking_meters_days = TRUE;
        $var_all = TRUE;
        $fee_PMD = trim($_POST['parking_Meters_days']);
        }
    if (isset($_POST['vehicle_lane_close'])) {
        $var_vehicle_lane_close = TRUE;
        $var_all = TRUE;
        $fee_VLC = trim($_POST['vehicle_lane_close']);
        }
    if (isset($_POST['alley_closure'])) {
        $var_alley_closure = TRUE;
        $var_all = TRUE;
        $fee_AC = trim($_POST['alley_closure']); 
        }
 }

if ($_SERVER['REQUEST_METHOD'] == 'POST')
{ 
    if($var_all == FALSE)
    {
        $problem = TRUE;
        print '<div id="fee_error">Please fill in one of the fields below</div>';
    }
    else
    {
        print 'this is text';
    }
}
?>

3 个答案:

答案 0 :(得分:1)

你有:

$var_all = FALSE;       // all variable

但是你正在检查:

 if(isset($_POST[$var_all]) == FALSE) {

$ var_all将包含TRUE或FALSE,这些不在您的POST数据中。我认为这不是你想要做的。尝试检查表单中的正确字段

答案 1 :(得分:1)

这是更正后的代码

<?php

$var_all = FALSE;        // all variable

// Fees Validation
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
    if (isset($_POST['sidewalk_days_close']))
    {
        $var_sidewalk_days_closed = TRUE;
        $var_all = TRUE;
        $fee_SDC = trim($_POST['sidewalk_days_close']);
    }

    if (isset($_POST['parking_noMeters_spaces']))
    {
        $var_parking_noMeters_spaces = TRUE;
        $var_all = TRUE;
        $fee_PNMS = trim($_POST['parking_noMeters_spaces']);
    }

    if($var_all == FALSE)
    {
        $problem = TRUE;
        print '<div id="fee_error">Please fill in one of the fields below</div>';
    }
    else
    {
        print 'this is text';
    }
}
?>

答案 2 :(得分:0)

您在PHP代码中使用<?php?>标记。删除它们。