Php - 表单验证 - 下拉菜单+评论框

时间:2012-12-25 23:56:23

标签: php forms validation if-statement

在过去的几个小时里,我一直在为学生编写输入表格。我已经完成了大部分的所有操作,但是我遇到了一个小问题,我无法想到一个解决方法。我有一个下拉菜单,验证是:

 }
        if(empty($why) === true) {
            $errors[] = 'Please make sure to select the proper reasoning for your vistit today!';
    }

默认变量设置为空或只是值=“”(空)...

现在我需要验证的另一件事是,如果学生选择“其他”选项,我需要它们然后将至少10个字符和最多30个插入到专门为找不到的学生的评论框中他们访问财政援助办公室的一般原因。这就是我所拥有的(它没有正常工作):

if(isset($why) === Other) {
        $errors[] = 'Please add a comment explaining why you are visiting the office.';
}

总而言之,我需要帮助写一个验证,如果学生选择其他,那么他或她必须写一个简短的摘要,说明他或她在“评论框”中访问办公室的原因。

任何帮助都很可爱。谢谢。

2 个答案:

答案 0 :(得分:1)

让我们说'其他'字段的textarea称为$other

if(empty($why)){
  $errors[] = 'Please select a reason';
}elseif($why == 'Other' && empty($other)){
  $errors[] = 'You selected Other. Please enter a reason why';
}

您的代码可能需要比上面更详细,因为您要设置最小和最大字符数,但是您得到了这个数字?

顺便说一句,我认为您没有理由要使用===运算符而不是==运算符。他们做了完全相同的事情,但===检查它是否是相同的类型,不确定这对你的脚本有什么好处。

答案 1 :(得分:0)

对于if(isset($why) === Other)其他不应该在引号中,因为 $ why 会将下拉菜单选项的值作为文本返回吗?

所以假设“其他”是下拉菜单的其他选项选项的名称,if(isset($why) === 'Other')应该有效。

编辑:再次查看代码,您将isset()值与另一个var(其他)进行比较。 您希望将其设为if(isset($why) && $why === 'Other'),这样就可以检查 $ why 是否已设置,它还等于文本“其他”。 ===运算符还检查$ why和Other是否属于同一类型,因此您应检查其余代码以确保 $ why Other 属于同一类型。