1 回答

TA貢獻(xiàn)7條經(jīng)驗(yàn) 獲得超2個(gè)贊
問(wèn)題1:err以及flag變量均已在代碼上部php代碼中定義,但是運(yùn)行時(shí)還是提示在html代碼塊中flag和err沒(méi)有定義
請(qǐng)檢查你2個(gè)變量的定義位置,你會(huì)發(fā)現(xiàn)是在if(!empty($_POST['sub'])){}方法體中,因?yàn)橹绻麤](méi)有提交數(shù)據(jù),這2個(gè)變量是不會(huì)被定義的,所以要在提交判斷之前就進(jìn)行定義。
問(wèn)題2:另外就是提示變量num1和變量num2沒(méi)有定義,這樣的提示是否是需要$num1 = $_POST['num1']; 這樣定義一下?
num1和num2在程序中是沒(méi)有定義的,所以需要在提交判斷之前就先定義,而$num1 = $_POST['num1']; 的操作,必須在有數(shù)據(jù)提交的時(shí)候才能執(zhí)行,否則由于沒(méi)有post數(shù)據(jù),會(huì)導(dǎo)致出現(xiàn)錯(cuò)誤,
最后,html代碼體中,不能使用$_POST['num1']這樣的方式取值,因?yàn)樵谑状芜M(jìn)入頁(yè)面的時(shí)候,沒(méi)有post數(shù)據(jù),所以$_POST['num1']也會(huì)報(bào)錯(cuò)。以下為修改后代碼,請(qǐng)注意加粗的代碼:
<?php
//計(jì)算器處理的PHP代碼
//tip:這里要先定義
$num1='';
$num2='';
$ysf='';
//tip:提示變量的定義要在判斷數(shù)據(jù)提交之前
$err = "";
$flag = true;
$sum = 0;
if(!empty($_POST['sub'])){
//echo "提交";
//tip:檢測(cè)到數(shù)據(jù)提交,進(jìn)行賦值,以便在頁(yè)面上展示數(shù)據(jù)
$num1=$_POST['num1'];
$num2=$_POST['num2'];
$ysf=$_POST['ysf'];
if($_POST['num1'] == ""){
$flag = false;
$err .="第一個(gè)數(shù)不能為空<br>";
}else{
if(!is_numeric($_POST['num1'])){
$flag = false;
$err .="第一個(gè)不是數(shù)字,無(wú)法計(jì)算<br>";
}
}
if($_POST['num2'] == ""){
$flag = false;
$err .="第二個(gè)數(shù)不能為空";
}else{
if(!is_numeric($_POST['num2'])){
$flag = false;
$err .="第二個(gè)不是數(shù)字,無(wú)法計(jì)算<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 .= "除數(shù)不能為0";
break;
}else{
$sum = $_POST['num1'] / $_POST['num2'];
break;
}
case "%":
if($_POST['num2'] == 0){
$flag = false;
$err .= "除數(shù)不能為0";
break;
}else{
$sum = $_POST['num1'] % $_POST['num2'];
break;
}
}
}
}
?>
<html>
<head>
<title>簡(jiǎn)易計(jì)算器</title>
</head>
<body>
<table align="center" border=0 width="400">
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
<caption><h1>一個(gè)簡(jiǎn)易計(jì)算器</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">
<?php
if($flag){
? ? echo "運(yùn)算結(jié)果是:".$num1.' '.$ysf.' '.$num2.' = '.$sum;
}else{
echo $err;
}
?>
</td>
</tr>
</form>
</table>
</body>
</html>
- 1 回答
- 1 關(guān)注
- 1920 瀏覽
添加回答
舉報(bào)