<html> <head> <title>这是一个计算器实例</title> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> </head> <body> <table align="center" border="1" width="500"> <caption><h1>计算器</h1></caption> <form> <?php //定义num11 num22 numa numb 分别判断是否输入为空或者输入非数字 $num11=true; $num22=true; $numa=true; $numb=true; $message=""; //单路分支 if(isset($_GET["sub"])){ if($_GET["num1"]==""){ $numa=false; $message.="第一个输入为空"; } if(!is_numeric($_GET["num1"])){ $num11=false; $message.="第一个输入不是数字"; } if($_GET["num2"]==""){ $numb=false; $message.="第二个输入为空"; } if(!is_numeric($_GET["num2"])){ $num22=false; $message.="第二个输入不是数字"; } if($num11 && $num22 && $numa && $numb){ $sum=0; //多路分支 switch ($_GET["ysf"]){ case "+": $sum=$_GET["num1"]+$_GET["num2"]; break; case "-": $sum=$_GET["num1"]-$_GET["num2"]; break; case "x": $sum=$_GET["num1"]*$_GET["num2"]; break; case "/": $sum=$_GET["num1"]/$_GET["num2"]; break; case "%": $sum=$_GET["num1"]%$_GET["num2"]; break; } } } ?> <tr> <td> <!-- 火狐提示我下列num1未定义 --> <input type="text" size="5" name="num1" value="<?php echo $_GET["num1"];?>"> </td> <td> <select name="ysf"> <!-- 火狐提示我ysf未定义 --> <option value="+" <?php if($_GET["ysf"]=="+") echo "selected"?> >+</option> <option value="-" <?php if($_GET["ysf"]=="-") echo "selected"?> >-</option> <option value="x" <?php echo $_GET["ysf"]=="x"? "selected" :""?> >x</option> <option value="/" <?php echo $_GET["ysf"]=="/"? "selected" :""?> >/</option> <option value="/" <?php echo $_GET["ysf"]=="%"? "selected" :""?> >%</option> </select> </td> <td> <input type="text" size="5" name="num2" value="<?php echo $_GET["num2"];?>"> </td> <td> <input type="submit" name="sub" value="计算"> </td> </tr> <?php if(isset($_GET["sub"])){ echo'<tr><td colspan="4">'; if($num11 && $num22 && $numa && $numb){ echo"结果:".$_GET["num1"]." " .$_GET["ysf"]." ".$_GET["num2"]." = ".$sum; }else{ echo $message; } echo'</td></tr>'; } ?> </form> </table> </body> </html>
你是第一次运行这个程序时报的错吧。在你的页面load出来的时候,$_GET['num1']是什么?存在吗?你还没有提交表单呢。所有你出错,解决办法,在$_GET前加个@.
恩,我刚开始也这么想的,于是我定义了global $num1 ,不好使,只能说这个表单没提交时,没有$num1这个变量,所以会报错,但是我看的视频却没有这个问题,他用的是ie浏览器,我用的是火狐,现在在$_GET前加@已经不会报错了,现在我想知道这是最合理的解决办法么?因为我现在正在学习,所以有些问题我感觉还是深加了解的好,谢谢您,现在问题已经基本解决了。
@庆小伟: 可以这样:在<form></form>中间设置一个<input type="hidden" name="IsPostBack" value="1">,在PHP中判断,isset("$_GET['IsPostBack']") 或者 isset("$_POST['IsPostBack']")。
用PHP的话,学个框架吧,能帮你加快很多速度。个人推荐CodeIgniter框架,这个框架的文档相当好。希望帮助到你,我自己一个是个菜鸟。
你的url里面有num1,ysf吗?
这个不是自动获取的么?我没加url
当你第一次运行的时候,页面上的num1 是没有任何的赋值过程 所以他会报错为空 加个@
还有别的更好更合理的办法么?