您好我需要创建一个简单的脚本,它会对我给出的数字取幂,并且告诉我,如果我不给一个数字,或者我会留空空间。
我做了类似的事情,但它显示了“所有字段不能为空”的开头,如果我点击没有数字的计算,我会得到“错误的数据”,它应该是“所有字段都不能为空“
有人可以修理它或者告诉我哪里出错了吗?
如果有什么不可理解的话,很抱歉
这是我的剧本:
<body>
<FORM action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">
Base: <input type="text" name="number1" />
Exponent : <input type="text" name="number2" />
<input type="submit" value="compute!" name="Compute"/>
</form>
<?php
if (isset($_GET ['number1']) || isset($_GET['number2'])) {
if (is_numeric($_GET['number1']) && is_numeric($_GET['number2'])) {
echo "{$_GET['number1']} ^ {$_GET['number2']} = ";
echo pow($_GET['number1'], $_GET['number2']);
echo "<BR>";
}
else
{
echo "Wrong data<BR>";
}
}
else
{
echo "All fields must not be empty<BR>";
}
?>
<br />
<a href="index.php">Return!</a>
</body>
答案 0 :(得分:2)
isset($input)
将始终返回true
,因为$input
仍然设置,即使是空的......
因此,只有当!empty($input)
不 (请参阅感叹号true
)时,$input
才会返回!
因此在我看来似乎是一个更好的选择。
答案 1 :(得分:1)
以下两个答案都是正确的,但我更愿意将它们结合起来。
确保在运行PHP代码之前检查是否单击了按钮 - 请检查
if(isset($_GET['Compute']))
前
if (isset($_GET ['number1']) || isset($_GET['number2'])) {
正如莫琳所说的
之后,你必须用Nadav S.和
进行检查if (!empty($_GET ['number1']) && !empty($_GET['number2']))
但请确保您不使用isset检查删除该行。您还必须更改OR运算符||到AND-operator&amp;&amp ;.需要此行来检查脚本是否也能正常工作。因此,如果变量是SET,您将在此行检查。可能是,有些失败你不会收到正确的变量,所以脚本会发出一个错误(如果没有设置变量你就不能用空检查。)
答案 2 :(得分:0)
我不是大师级程序员,但我觉得我有点理解你的问题。
您的代码已经开始检查加载页面时是否存在number1和2。显然,在加载页面时,它们还不存在。并且由于你有其他内容,它会自动回显加载页面时所有字段都不能为空。
尝试通过在按钮上发送表格DATA来检查按钮是否被按下。 按钮的名称是Compute。所以,让我们这样做!
if($_GET['Compute') {
/////////这将检查按钮是否被按下/////
///在此放置其他代码。 ///
}
现在页面将开始执行实际编码ONCE按下按钮。 因此,在点击按钮之前,它不会检查数字1和2是否存在。
考虑到另一个问题,我不知道如何,但我希望这有点帮助。
莫林
答案 3 :(得分:0)
尝试isset()和!empty()而不仅仅是isset()