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


Php - Form validation - drop down menu + comments box

在过去的几个小时里,我一直在为学生编写一个输入表单。我几乎完成了所有的工作,没有任何问题,但我遇到了一个小问题,我想不出一个解决办法。我有一个下拉菜单它的验证是:

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

默认变量被设置为空或者只是value=" (empty)…

现在我需要验证的下一件事是,如果学生选择了"其他"选项,我需要他们在专门为找不到他们访问经济援助办公室的一般原因的学生制作的评论框中插入至少10个字符,最多30个字符。这是我对这个(它不工作):

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

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

任何帮助将是可爱的。谢谢你!

假设'other'字段的文本区域名为$other

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

你的代码可能需要比上面更详细,因为你想要设置最小和最大字符数,但是你明白了吗?

顺便说一句,我看不出你为什么要使用===操作符而不是==操作符。他们做完全相同的事情,但===检查,看看它是否是相同的类型,不确定这对你的脚本有什么好处。

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

所以if(isset($why) === 'Other')应该工作假设"Other"是下拉菜单的Other选择选项的名称。

编辑:再次查看您的代码,您将isset()值与另一个var(其他)进行比较。你想把它设置为if(isset($why) && $why === 'Other'),这样你就可以检查$why是否设置了,它也等于文本"Other"。===运算符还检查$why和Other是否具有相同类型,因此您应该检查代码的其余部分以确保$whyOther具有相同类型。