这是我的第一个问题,我是PHP的新手,所以不要对我苛刻:D
我不明白,为什么我的代码在没有我的情况下也向我显示错误,甚至没有触摸表格。仅在通过表单提交一些值之后,如何才能使此代码打印错误?
<?php
$error = "";
if (isset($_GET['a'])) {
$a = htmlentities($_GET['a']);
}
if (isset($_GET['b'])) {
$b = htmlentities($_GET['b']);
}
if (empty($a)) {
$error = "<b>Error:</b> You didn't enter 'a' or 'a' isn't a number<br>";
}
if (empty($b)) {
$error .= "<b>Error:</b> You didn't enter 'b' or 'b' isn't a number<br>";
}
if ($a > $b) {
$error = "<b>Error:</b>Number 'a' can't be bigger than 'b'<br>";
} else {
$sum = (int)$a + (int)$b;
}
?>
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title>Count sum of two number</title>
</head>
<body>
<h1>Count sum</h1>
<br>
<form action="4.php" method="GET">
Enter a: <input type="text" name="a"><br><br>
Enter b: <input type="text" name="b"><br>
<input type="submit" value="Count">
</form>
<br>
<b>Results:</b>
<?php
if (empty($error)) {
echo $sum;}
else {
echo $error;
}
?>
</body>
</html>
我希望echo $ error仅在我提交表单中的值之后才会出现,但是现在我从头开始打印它。
答案 0 :(得分:0)
在比较之前,需要检查变量$a
和$b
是否已设置。在第一次加载时,$_GET
将为空,并且变量$a
和$b
将不存在。
所以您需要在条件检查之前检查变量是否存在
if (isset($a) && isset($b) && ($a > $b)) {
$error = "<b>Error:</b>Number 'a' can't be bigger than 'b'<br>";
} else {
$sum = (int)$a + (int)$b;
}
PS :您可以根据代码要求重新排列isset($a) && isset($b)
条件。这个例子只是为了展示如何使用它。