是否有一种有效的方法来处理具有三个输入字段的表单的一部分。如果所有都是空的,那么不要做任何事情,但如果一个人被填满,那么所有人都必须填补。
目前我有这个
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
而不是code1
或quant1
,无论如何它都会开火。如果他们输入code1
或quant1
而不是desc1
则不会发生任何问题,这也是一个问题,我想将此显示为错误并让他们返回并重试。
答案 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.');
}