php简单swich案例计算器功能不显示结果

时间:2017-01-02 17:05:11

标签: php

我正在尝试用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>

提供一些确定问题的提示

3 个答案:

答案 0 :(得分:1)

通过执行以下两项修改,我能够让您的代码正常工作:

  • <?php cal() ?><?php echo cal(); ?> 如果没有这个,你可以计算一些结果,但你实际上并没有输出它。

  • isset($_POST['submit'])isset($_POST['btn']) 没有它你永远不会计算结果。您没有定义名为“submit”的输入元素,但您确实定义了一个名为“btn”的元素。

除了两个一般性评论外:

  • 您应该将该计算功能移动到单独的文件中,并将其包含在文件的开头。这使得单独的事物分离,逻辑和呈现。
  • 您应该考虑在客户端进行此类计算,这样可以避免为每次计算执行整页重新加载。

答案 1 :(得分:0)

检查$_POST['btn']而不是$_POST['submit']

为了清楚起见,我们提供了{p> var_dump($_POST),以便您了解正在发生的事情。

此外,您希望echocal()一起使用,以实际显示结果:value="<?php echo cal()?>"

我在按下按钮后将输入的值添加到val1val2字段,以便显示结果。这不是必需的,但为了清楚起见,有助于查看计算中使用的值。

<!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);

            }
        // }
    ?>