我正在尝试用swich case语句创建一个简单的php计算器。我对每个+, - ,*,/函数使用了引导按钮。最后,当用户填写表单并按下任何这些按钮时,它应该在禁用的文本字段中显示结果。但它不会显示结果
<!DOCTYPE html>
<html>
<head>
<title>SIMPLE CALCULATOR</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
</head>
<body>
<div class="container-fluid mainbox row">
<h2 style="text-align: center;">Calculator</h2>
<div class="container-fluid calbox col-md-4 offset-md-4">
<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<div class="form-group">
<label style="padding-top: 10px;">Value 1</label>
<input type="text" class="form-control" placeholder="Value 1" name="val1" id="val1">
</div>
<div class="form-group">
<label>Value 2</label>
<input type="text" class="form-control" placeholder="Value 2" name="val2" id="val2">
</div>
<div class="form-group row" style="padding-left: 10px;">
<button type="submit" class="btn btn-outline-primary" name="btn" value="add">+</button>
<button type="submit" class="btn btn-outline-primary" name="btn" value="sub">-</button>
<button type="submit" class="btn btn-outline-primary" name="btn" value="mul">*</button>
<button type="submit" class="btn btn-outline-primary" name="btn" value="div">/</button>
</div>
<div class="form-group">
<label>Result</label>
<input type="text" class="form-control" name="res" value="<?php cal() ?>" disabled>
</div>
</form>
</div>
</div>
<?php
function cal(){
if (isset($_POST['submit'])) {
$val1 = $_POST['val1'];
$val2 = $_POST['val2'];
$func = $_POST['btn'];
switch ($func) {
case "add":
$compute = $val1 + $val2;
break;
case "sub":
$compute = $val1 - $val2;
break;
case "mul":
$compute = $val1 * $val2;
break;
case "div":
$compute = $val1 / $val2;
break;
default:
$compute = "error";
break;
}
return $compute;
}
}
?>
<script type="text/javascript" src="js/jquery311.min.js"></script>
<script type="text/javascript" src="js/tether.min.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
提供一些确定问题的提示
答案 0 :(得分:1)
通过执行以下两项修改,我能够让您的代码正常工作:
<?php cal() ?>
至<?php echo cal(); ?>
如果没有这个,你可以计算一些结果,但你实际上并没有输出它。
isset($_POST['submit'])
至isset($_POST['btn'])
没有它你永远不会计算结果。您没有定义名为“submit”的输入元素,但您确实定义了一个名为“btn”的元素。
除了两个一般性评论外:
答案 1 :(得分:0)
检查$_POST['btn']
而不是$_POST['submit']
var_dump($_POST)
,以便您了解正在发生的事情。
此外,您希望echo
与cal()
一起使用,以实际显示结果:value="<?php echo cal()?>"
我在按下按钮后将输入的值添加到val1
和val2
字段,以便显示结果。这不是必需的,但为了清楚起见,有助于查看计算中使用的值。
<!DOCTYPE html>
<html>
<head>
<title>SIMPLE CALCULATOR</title>
</head>
<body>
<?php
var_dump($_POST);
$val1 = "";
$val2 = "";
if (isset($_POST['btn'])) {
$val1 = $_POST['val1'];
$val2 = $_POST['val2'];
}
?>
<div class="container-fluid mainbox row">
<h2 style="text-align: center;">Calculator</h2>
<div class="container-fluid calbox col-md-4 offset-md-4">
<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<div class="form-group">
<label style="padding-top: 10px;">Value 1</label>
<input type="text" class="form-control" placeholder="Value 1" name="val1" id="val1" value="<?php echo $val1 ?>">
</div>
<div class="form-group">
<label>Value 2</label>
<input type="text" class="form-control" placeholder="Value 2" name="val2" id="val2" value="<?php echo $val2 ?>">
</div>
<div class="form-group row" style="padding-left: 10px;">
<button type="submit" class="btn btn-outline-primary" name="btn" value="add">+</button>
<button type="submit" class="btn btn-outline-primary" name="btn" value="sub">-</button>
<button type="submit" class="btn btn-outline-primary" name="btn" value="mul">*</button>
<button type="submit" class="btn btn-outline-primary" name="btn" value="div">/</button>
</div>
<div class="form-group">
<label>Result</label>
<input type="text" class="form-control" name="res" value="<?php echo cal()?>" disabled>
</div>
</form>
</div>
</div>
<?php
function cal(){
$compute = "";
if (isset($_POST['btn'])) {
$val1 = $_POST['val1'];
$val2 = $_POST['val2'];
$func = $_POST['btn'];
switch ($func) {
case "add":
$compute = $val1 + $val2;
break;
case "sub":
$compute = $val1 - $val2;
break;
case "mul":
$compute = $val1 * $val2;
break;
case "div":
$compute = $val1 / $val2;
break;
default:
$compute = "error";
break;
}
}
return $compute;
}
?>
答案 2 :(得分:-1)
试试这个:
<!DOCTYPE html>
<html>
<head>
<title>SIMPLE CALCULATOR</title>
</head>
<body>
<div class="container-fluid mainbox row">
<h2 style="text-align: center;">Calculator</h2>
<div class="container-fluid calbox col-md-4 offset-md-4">
<form method="post" action="">
<div class="form-group">
<label style="padding-top: 10px;">Value 1</label>
<input type="text" class="form-control" placeholder="Value 1" name="val1" id="val1">
</div>
<div class="form-group">
<label>Value 2</label>
<input type="text" class="form-control" placeholder="Value 2" name="val2" id="val2">
</div>
<div class="form-group row" style="padding-left: 10px;">
<input type="submit" name="submit" value="add" />
<input type="submit" name="submit" value="sub" />
<input type="submit" name="submit" value="mul" />
<input type="submit" name="submit" value="div" />
</div>
</form>
</div>
</div>
<?php
function cal($val1,$val2,$func){
switch ($func) {
case "add":
$compute = $val1 + $val2;
break;
case "sub":
$compute = $val1 - $val2;
break;
case "mul":
$compute = $val1 * $val2;
break;
case "div":
$compute = $val1 / $val2;
break;
default:
$compute = "error";
break;
}
return $compute;
}
// function cal(){
if (isset($_POST['submit'])) {
// print_r($_POST); die;
$val1 = $_POST['val1'];
$val2 = $_POST['val2'];
$method = $_POST['submit'];
echo $result = cal($val1,$val2,$method);
}
// }
?>