<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 是没有任何的赋值过程 所以他会报错为空 加个@
还有别的更好更合理的办法么?