我目前正在使用一个简单的PHP代码进行验证,这是我的代码:
<form action="" method="post">
<input type="text" name="name" id="name" placeholder="Name">
<br>Number of Books:<select id="books" name="books">
<option> 1 </option>
<option> 2 </option>
<option> 3 </option>
<option> 4 </option>
<option> 5 </option>
<option> 6 </option>
<option> 7 </option>
<option> 8 </option>
<option> 9 </option>
<option> 10 </option>
</select>
</br>dutedate <input type="date" name="duedate" id="duedate" placeholder="duedate">
</br>borrow <input type="date" name="datebor" id="datebor" placeholder="dateborrowed">
</br>return <input type="date" name="ret" id="ret" placeholder="date returned">
<input type="submit" class="button" name="btnsubmit" value="Submit">
</form>
<?php
if (isset($_POST['btnsubmit']))
{
$name = $_POST['name'];
$duedate = date_create(($_POST['duedate']));
$datebor = date_create(($_POST['datebor']));
$ret = date_create(($_POST['ret']));
$books = $_POST['books'];
$NOWdate = new Datetime('now');
if ($duedate < $datebor)
{
echo "<script>alert('Wrong Input Error1')</script>";
exit;
}
elseif ($datebor > $ret)
{
echo "<script>alert('Wrong Input Error2')</script>";
exit;
}
elseif ($datebor > $NOWdate )
{
echo "<script>alert('Wrong Error3')</script>";
exit;
}
elseif ($ret < $duedate)
{
$penalty = 0 ;
}
else
{
$penaltydays = date_diff($duedate,$ret) ;
$diff_date = $penaltydays->format('%a');
$penalty = $diff_date * $books * 10;
}
}
?>
<p>Penalty: <?php echo $penalty ?></p>
当我尝试运行它时,出现错误Undefined variable: penalty
。
我很确定我的验证码是正确的
我怎样才能将惩罚变量传递给页面本身。
我认为它可以解决错误。
答案 0 :(得分:0)
问题是$penalty
仅在您提交表单后设置。你应该能够通过简单地移动你的elseif / else块中的惩罚段来解决这个问题,其中实际应该显示惩罚。
...
elseif ($ret < $duedate)
{
echo "<p>Penalty: 0</p>";
else
{
$penaltydays = date_diff($duedate,$ret) ;
$diff_date = $penaltydays->format('%a');
$penalty = $diff_date * $books * 10;
echo "<p>Penalty: $penalty</p>";
}
这样只有在计算完毕后才会显示。
旁注,我不认为这会按照你期望的方式工作,因为你的选择选项没有值属性。你需要像这样添加它们:
<option value="1"> 1 </option>