努力在PHP中编写一个相当简单的if / else-type语句。我们有一个冗长的网络表格,收集一个运动队的名单(每个青年球员的姓名,成绩和出生日期),然后将这些数据发送给联盟的专员,以备将来参考。
我在一年多前设置了这个表格并且它一直工作得很好。但是,我想稍微调整它以验证在执行脚本之前所有字段都已完成(如果出现用户错误)。这是我正在努力工作的代码:
$context['categories'] = Timber::get_terms('category', array( 'exclude' => 14, 13, 1));
这似乎是对我来说最合乎逻辑的方式(对我而言)。但是,该脚本未按预期验证出生日期和等级。很明显,我错过了一个重要的概念而没有正确使用if / elseif。也许善良的用户可以帮助我指出正确的方向?
答案 0 :(得分:3)
empty
与!empty
是其中的一部分。但是,在你说“一切正常”之前你还需要检查一下这些内容。基本上翻转它:
//Validate player 1:
if (!empty($_POST['player1'])) {
if (empty($_POST['player1_dob'])) {
echo "You forgot to enter Player 1's date of birth.<br>";
$validate = 'false';
} elseif (empty($_POST['player1_grade'])) {
echo "You forgot to enter Player 1's grade.<br>";
$validate = 'false';
} else {
$player1 = $_POST['player1'];
$player1_dob = $_POST['player1_dob'];
$player1_grade = $_POST['player1_grade'];
$validate = 'true';
}
}
如果空(播放器1)无法通过代码清除您想要做什么 - 即验证失败或只跳过整个部分,但任何一个都可以轻松处理。
答案 1 :(得分:1)
我会完全重构你正在做的事情,但是如果你想让它发挥作用,你必须从!
声明中删除elseif
。您在说if is not empty player 1 date of birth, error
,所以我想您想说if IS empty
。
答案 2 :(得分:1)
您也可以使用isset功能
$validate=true;
if (!empty($_POST['player1'])) {
$player1 = $_POST['player1'];
$player1_dob = $_POST['player1_dob'];
$player1_grade = $_POST['player1_grade'];
}
if(!isset($player1_dob)) {
echo "You forgot to enter Player 1's date of birth.<br>";
$validate = 'false';
}
if (!isset($player1_grade)) {
echo "You forgot to enter Player 1's grade.<br>";
$validate = 'false';
}
if($validation) {.... }