猿问

求解答php一个简易的计算器的程序问题?

<?php

//计算器处理的PHP代码


if(!empty($_POST['sub'])){

//echo "提交";


$err = "";

$flag = true;


if($_POST['num1'] == ""){

$flag = false;

$err .="第一个数不能为空<br>";

}else{

if(!is_numeric($_POST['num1'])){

$flag = false;

$err .="第一个不是数字,无法计算<br>";

}

}

if($_POST['num2'] == ""){

$flag = false;

$err .="第二个数不能为空";

}else{

if(!is_numeric($_POST['num2'])){

$flag = false;

$err .="第二个不是数字,无法计算<br>";

}

}

$sum = 0;

if($flag){

switch($_POST['ysf']){

case "+":

$sum = $_POST['num1'] + $_POST['num2'];

break;

case "-":

$sum = $_POST['num1'] - $_POST['num2'];

break;

case "x":

$sum = $_POST['num1'] * $_POST['num2'];

break;

case "/":

if($_POST['num2'] == 0){

$flag = false;

$err .= "除数不能为0";

break;

}else{

$sum = $_POST['num1'] / $_POST['num2'];

break;

}

case "%":

if($_POST['num2'] == 0){

$flag = false;

$err .= "除数不能为0";

break;

}else{

$sum = $_POST['num1'] % $_POST['num2'];

break;

}

}

}

}


?>

<html>

<head>

<title>简易计算器</title>

</head>

<body>

<table align="center" border=0 width="400">

<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">

<caption><h1>一个简易计算器</h1></caption>

<tr>

<td>

<input type="text" name="num1" value="<?php echo $num1; ?>" size=5>

</td>


<td>

<select name="ysf">

<option name="+" <?php if($_POST['ysf'] == "+") echo "selected"; ?>>+</option>

<option name="-" <?php if($_POST['ysf'] == "-") echo "selected"; ?>>-</option>

<option name="x" <?php if($_POST['ysf'] == "x") echo "selected"; ?>>x</option>

<option name="/" <?php if($_POST['ysf'] == "/") echo "selected"; ?>>/</option>

<option name="%" <?php if($_POST['ysf'] == "%") echo "selected"; ?>>%</option>

</select>

</td>


<td>

<input type="text" name="num2" value="<?php echo $num2; ?>" size=5>

</td>


<td>

<input type="submit" name="sub" value="提交">

</td>

</tr>


<tr>

<td colspan="4">

<?php

if($flag){

echo "运算结果是:".$_POST['num1'].' '.$_POST['ysf'].' '.$_POST['num2'].' = '.$sum;

}else{

echo $err;

}

?>

</td>

</tr>


</form>

</table>

</body>

</html>

err以及flag变量均已在代码上部php代码中定义,但是运行时还是提示在html代码块中flag和err没有定义,请问这样改如何解决?另外就是提示变量num1和变量num2没有定义,这样的提示是否是需要$num1 = $_POST['num1']; 这样定义一下?

慕容粉丝
浏览 1885回答 1
1回答

慕函数1130379

问题1:err以及flag变量均已在代码上部php代码中定义,但是运行时还是提示在html代码块中flag和err没有定义请检查你2个变量的定义位置,你会发现是在if(!empty($_POST['sub'])){}方法体中,因为着,如果没有提交数据,这2个变量是不会被定义的,所以要在提交判断之前就进行定义。问题2:另外就是提示变量num1和变量num2没有定义,这样的提示是否是需要$num1 = $_POST['num1']; 这样定义一下?num1和num2在程序中是没有定义的,所以需要在提交判断之前就先定义,而$num1 = $_POST['num1']; 的操作,必须在有数据提交的时候才能执行,否则由于没有post数据,会导致出现错误,最后,html代码体中,不能使用$_POST['num1']这样的方式取值,因为在首次进入页面的时候,没有post数据,所以$_POST['num1']也会报错。以下为修改后代码,请注意加粗的代码:<?php//计算器处理的PHP代码//tip:这里要先定义$num1='';$num2='';$ysf='';//tip:提示变量的定义要在判断数据提交之前$err = "";$flag = true;$sum = 0;if(!empty($_POST['sub'])){//echo "提交";//tip:检测到数据提交,进行赋值,以便在页面上展示数据$num1=$_POST['num1'];$num2=$_POST['num2'];$ysf=$_POST['ysf'];if($_POST['num1'] == ""){$flag = false;$err .="第一个数不能为空<br>";}else{if(!is_numeric($_POST['num1'])){$flag = false;$err .="第一个不是数字,无法计算<br>";}}if($_POST['num2'] == ""){$flag = false;$err .="第二个数不能为空";}else{if(!is_numeric($_POST['num2'])){$flag = false;$err .="第二个不是数字,无法计算<br>";}}if($flag){switch($_POST['ysf']){case "+":$sum = $_POST['num1'] + $_POST['num2'];break;case "-":$sum = $_POST['num1'] - $_POST['num2'];break;case "x":$sum = $_POST['num1'] * $_POST['num2'];break;case "/":if($_POST['num2'] == 0){$flag = false;$err .= "除数不能为0";break;}else{$sum = $_POST['num1'] / $_POST['num2'];break;}case "%":if($_POST['num2'] == 0){$flag = false;$err .= "除数不能为0";break;}else{$sum = $_POST['num1'] % $_POST['num2'];break;}}}}?><html><head><title>简易计算器</title></head><body><table align="center" border=0 width="400"><form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post"><caption><h1>一个简易计算器</h1></caption><tr><td><input type="text" name="num1" value="<?php echo $num1; ?>" size=5></td><td><select name="ysf"><option name="+" <?php if($ysf == "+") echo "selected"; ?>>+</option><option name="-" <?php if($ysf == "-") echo "selected"; ?>>-</option><option name="x" <?php if($ysf == "x") echo "selected"; ?>>x</option><option name="/" <?php if($ysf == "/") echo "selected"; ?>>/</option><option name="%" <?php if($ysf == "%") echo "selected"; ?>>%</option></select></td><td><input type="text" name="num2" value="<?php echo $num2; ?>" size=5></td><td><input type="submit" name="sub" value="提交"></td></tr><tr><td colspan="4"><?phpif($flag){    echo "运算结果是:".$num1.' '.$ysf.' '.$num2.' = '.$sum;}else{echo $err;}?></td></tr></form></table></body></html>
随时随地看视频慕课网APP
我要回答