如果一个字段不为空,那么所有字段都不为空

时间:2014-04-18 17:38:41

标签: php

是否有一种有效的方法来处理具有三个输入字段的表单的一部分。如果所有都是空的,那么不要做任何事情,但如果一个人被填满,那么所有人都必须填补。

目前我有这个

if (isset($_POST['desc1']) && !empty($_POST['desc1'])){
$email_message .= $_POST['desc1']. " - " . $_POST['code1']. " - Amount: " .$_POST['quant1']."<br>";
$toadd .= $_POST['desc1']. " - " . $_POST['code1']. " - Amount: " .$_POST['quant1']."<br><br>"; 
}

问题是他们本来可以进入desc1而不是code1quant1,无论如何它都会开火。如果他们输入code1quant1而不是desc1则不会发生任何问题,这也是一个问题,我想将此显示为错误并让他们返回并重试。

2 个答案:

答案 0 :(得分:1)

有很多方法可以解决这个问题。

$required = array('desc1', 'code1', 'quant1');
$errors = array();
$fields_set = 0;

foreach ($required as $rq) {
    if (isset($_POST[$rq])) {
        $fields_set++;
    } else {
        $errors[$rq] = "{$rq} is not set...";
    }
}

$valid = ($fields_set == 0 || $fields_set == count($required)) ? true : false;

if ($valid) {
    // do stuff
} else {
    print_r($errors);
}

答案 1 :(得分:0)

你的意思是这样的吗?

if(!isset($_POST['desc1']) &&
   !isset($_POST['code1']) &&
   !isset($_POST['quant1'])  {
        died('We are sorry, but there appears to be a problem with the form you submitted.');       
   }
elseif(!isset($_POST['desc1']) ||
   !isset($_POST['code1']) ||
   !isset($_POST['quant1'])  {
        died('We are sorry, but there appears to be a problem with the form you submitted.');       
   }
相关问题