【问题标题】:Make Calculator - When Button clicked the No shows in Textbox.制作计算器 - 当按钮单击文本框中的不显示时。
【发布时间】:2014-06-27 06:07:54
【问题描述】:

对的人,我目前正在学习 php,在你们说要使用 javascript 之前,我正在学习 php 并希望使用这段代码。

基本上我想在 Windows 7 上复制计算器,但只需使用按钮 0-9、+ - / * 和 =。

在您阅读代码之前,我只构建了它,以尝试使其像这样工作。

你点击 1 然后它会显示在 texbox 如果你点击 5 它会在文本框中的 1 之后放置 5 等等...然后当你点击一个操作符比如除法(这是我唯一尝试编码的不继续不工作)文本框删除数字但保存总数,然后按下提交按钮时,输入的任何新数字都将被分割。

但是,当我运行我的代码并单击 Web 浏览器中的任何按钮时,文本框中没有任何内容。任何帮助将不胜感激。 (学习 php 以便我可以从第一线支持发展到同一家公司的 Web 开发,所以这很重要)

代码如下,我一直在用xampp运行它

<html>
<head>
<title>Calculator</title>
<style>
#wrapper{
width:500px;
height:500px;
margin:auto;
border:1px solid;
}
#content{
width:500px;
height:500px;
}
</style>
</head>



<body>
<div id="wrapper">
    <div id="content">
        <?php
            $answer = $display = $saveddisplay = $newdisplay = $add = $subtract = $divide = $multiply = $num0 = $num1 = $num2 = $num3 = $num4 = $num5 = $num6 = $num7 = $num8 = $num9 =  "";

            if($_SERVER["REQUEST_METHOD"] == "POST"){
                $num0 = ($_POST["number0"]);
                $num1 = ($_POST["number1"]);
                $num2 = ($_POST["number2"]);
                $num3 = ($_POST["number3"]);
                $num4 = ($_POST["number4"]);
                $num5 = ($_POST["number5"]);
                $num6 = ($_POST["number6"]);
                $num7 = ($_POST["number7"]);
                $num8 = ($_POST["number8"]);
                $num9 = ($_POST["number9"]);
                $add = ($_POST["add"]);
                $subtract = ($_POST["subtract"]);
                $divide = ($_POST["divide"]);
                $multiply = ($_POST["multiply"]);



                ///////////////////////////////////////////NUMBERS
                if($_POST["number0"]){
                    $display = $display && ($_POST["number0"]);
                }
                if($_POST["number1"]){
                    $display = $display && ($_POST["number1"]);
                }
                if($_POST["number2"]){
                    $display = $display && ($_POST["number2"]);
                }
                if($_POST["number3"]){
                    $display = $display && ($_POST["number3"]);
                }
                if($_POST["number4"]){
                    $display = $display && ($_POST["number4"]);
                }
                if($_POST["number5"]){
                    $display = $display && ($_POST["number5"]);
                }
                if($_POST["number6"]){
                    $display = $display && ($_POST["number6"]);
                }
                if($_POST["number7"]){
                    $display = $display && ($_POST["number7"]);
                }
                if($_POST["number8"]){
                    $display = $display && ($_POST["number8"]);
                }
                if($_POST["number9"]){
                    $display = $display && ($_POST["number9"]);
                }

                //////////////////////////////////////////OPERATORS
                if($_POST["divide"]){
                    $saveddisplay = $display;
                    $display = "";
                    if($_POST["number0"]){
                        $newdisplay = $newdisplay && ($_POST["number0"]);
                            if($_POST["submit"]){
                                $answer = $saveddisplay / $newdisplay && $newdisplay = "";

                            }



                    }
                    if($_POST["number1"]){
                        $newdisplay = $newdisplay && ($_POST["number1"]);
                            if($_POST["submit"]){
                            $answer = $saveddisplay / $newdisplay && $newdisplay = "";

                        }
                    }
                    if($_POST["number2"]){
                        $newdisplay = $newdisplay && ($_POST["number2"]);
                            if($_POST["submit"]){
                            $answer = $saveddisplay / $newdisplay && $newdisplay = "";

                        }
                    }
                    if($_POST["number3"]){
                        $newdisplay = $newdisplay && ($_POST["number3"]);
                            if($_POST["submit"]){
                            $answer = $saveddisplay / $newdisplay && $newdisplay = "";

                        }
                    }
                    if($_POST["number4"]){
                        $newdisplay = $newdisplay && ($_POST["number4"]);
                            if($_POST["submit"]){
                                $answer = $saveddisplay / $newdisplay && $newdisplay = "";

                            }
                    }
                    if($_POST["number5"]){
                        $newdisplay = $newdisplay && ($_POST["number5"]);
                            if($_POST["submit"]){
                            $answer = $saveddisplay / $newdisplay && $newdisplay = "";

                        }
                    }
                    if($_POST["number6"]){
                        $newdisplay = $newdisplay && ($_POST["number6"]);
                            if($_POST["submit"]){
                            $answer = $saveddisplay / $newdisplay && $newdisplay = "";

                        }
                    }
                    if($_POST["number7"]){
                        $newdisplay = $newdisplay && ($_POST["number7"]);
                            if($_POST["submit"]){
                            $answer = $saveddisplay / $newdisplay && $newdisplay = "";

                        }
                    }
                    if($_POST["number8"]){
                        $newdisplay = $newdisplay && ($_POST["number8"]);
                            if($_POST["submit"]){
                            $answer = $saveddisplay / $newdisplay && $newdisplay = "";

                        }
                    }
                    if($_POST["number9"]){
                        $newdisplay = $newdisplay && ($_POST["number9"]);
                        if($_POST["submit"]){
                            $answer = $saveddisplay / $newdisplay && $newdisplay = "";

                        }
                    }

                }






            }



        ?>



        <form method ="POST" action="<?php  ($SERVER["PHP_SELF"]);?>">
        <input type="text" width="50" height="20" name="display" value="<?php  echo $display or $newdisplay or $answer;?>">

        <br><br><br><br><br><br>
        <button type="button" name="number7" value="7" style="width:20px; padding-left:5px; margin-left:2px;">7</button>
        <button type="button" name="number8" value="8" style="width:20px; padding-left:5px; margin-left:2px;">8</button>
        <button type="button" name="number9" value="9" style="width:20px; padding-left:5px; margin-left:2px;">9</button>
        &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp

        <button type="button" name="divide" value="/" style="width:20px; padding-left:5px; margin-left:2px;">/</button>
        <button type="button" name="multiply" value="*" style="width:20px; padding-left:5px; margin-left:2px;">*</button>
        <button type="button" name="subtract" value="-" style="width:20px; padding-left:5px; margin-left:2px;">-</button>
        <button type="button" name="add" value="+" style="width:20px; padding-left:5px; margin-left:2px;">+</button>
        <br><br>

        <button type="button" name="number4" value="4" style="width:20px; padding-left:5px; margin-left:2px;">4</button>
        <button type="button" name="number5" value="5" style="width:20px; padding-left:5px; margin-left:2px;">5</button>
        <button type="button" name="number6" value="6" style="width:20px; padding-left:5px; margin-left:2px;">6</button>

        <br><br>
        <button type="button" name="number1" value="1" style="width:20px; padding-left:5px; margin-left:2px;">1</button>
        <button type="button" name="number2" value="2" style="width:20px; padding-left:5px; margin-left:2px;">2</button>
        <button type="button" name="number3" value="3" style="width:20px; padding-left:5px; margin-left:2px;">3</button>

        <br><br>
        <button type="button" name="number0" value="0" style="width:20px; padding-left:5px; margin-left:2px;">0</button>
        <button type="submit" value="=" name="submit" style="width:46px; padding-left:5px; margin-left:2px;">=</button>
        </form>


    </div>
</div>
</body>







</html>

【问题讨论】:

  • 你不能这样做:$answer = $display = $saveddisplay = $newdisplay = $add = $subtract = $divide = $multiply = $num0 = $num1 = $num2 = $num3 = $num4 = $num5 = $num6 = $num7 = $num8 = $num9 = "";
  • 为什么?我不能这样做吗?
  • 导致错误。
  • 你为什么要做这个服务器端?
  • 这一定是我有生以来见过的最糟糕的计算器代码。

标签: php


【解决方案1】:

按钮类型设置为button时,不会自动提交数据。您需要将类型设置为submit

<button type="submit" name="number6" value="6" style="width:20px; padding-left:5px; margin-left:2px;">6</button>

如果您希望在使用等号按钮提交表单之前将数字插入到输入元素中,则必须使用 JavaScript。

提供您的输入元素和 id。

<input id='result' type="text" width="50" height="20" name="display" value="<?php  echo $display or $newdisplay or $answer;?>">

为填充输入字段的每个按钮添加一个 onClick 处理程序。

<button type="button" name="number6" value="6" onClick="document.getElementById('result').value += this.value">6</button>

您需要稍微修改处理程序以获得所需的效果,但这应该会给您一个想法。

【讨论】:

    【解决方案2】:

    在 php 方面,使用 eval(); 读取数学表达式; 检查这个例子:

    <?php
    $res = 0;
    $mathExpression = "((2+2) /4) *5";
    eval("\$res = $mathExpression;");
    echo $res;
    ?>
    

    $mathExpression 被评估,结果进入 $res。

    并改变这一行:

    <form method ="POST" action="<?php  ($SERVER["PHP_SELF"]);?>">
    

    为此:

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

    【讨论】:

    • 不要使用 eval 它是不安全的。
    • 测试数字和数学表达式并不是不安全的:'/[^0-9\+\-*\/()\.]/'
    • dharman,如果您擅长 php,请制作一个带按钮的计算器并向我展示代码。它会帮助我学习
    【解决方案3】:

    您正在尝试做的事情完全是疯狂的。我建议你尝试不同的方法。 PHP 不适合做 Windows 计算器(Javascript 会更好)。

    您可以创建两个名为 number1 和 number2 的输入字段,然后创建四个提交按钮:加、减、除、乘。

    在您的代码中,您应该首先检查您收到了哪些 POST 数据。你把所有的字段都填好了吗?它们是数字吗?点击了哪个按钮。

    关于您的代码:

    在 PHP 中你不必定义你的变量,所以没有:$answer = $display = $saveddisplay = $newdisplay.......

    $display = $display &amp;&amp; ($_POST["number0"]); 这没有意义,它会评估为布尔值。这也是:$answer = $saveddisplay / $newdisplay &amp;&amp; $newdisplay = "";
    PHP 不会在会话之间保存变量的状态,因此当您之前单击按钮时,它不会知道这些变量是什么。
    $display or $newdisplay or $answer PHP 没那么聪明,您应该使用三元运算符或制作它们成一个变量。

    PS。我建议您阅读一些有关编程的书籍或观看 YT 上的教程,这可能看起来很容易,但用 PHP 制作计算器并不是那么简单。

    PHP 中的示例计算器:

    <?php
    
    $number1 = (int)($_POST['number1']);
    $number2 = (int)($_POST['number2']);
    $action  = $_POST['action'];
    
    if(!isset($number1)){
            echo 'Missing first operand!';
    }
    else if(!isset($number2)){
            echo 'Missing second operand!';
    }
    else if(!empty($action)){
            if($action == "Add"){
                    $result = $number1 + $number2;
            }
            else if($action == "Subtract"){
                    $result = $number1 - $number2;
            }
            else if($action == "Multiply"){
                    $result = $number1 * $number2;
            }
            else if($action == "Divide"){
                    $result = $number2 != 0 ? $number1 / $number2 : "NaN";
            }
    
            if(isset($result)){
                    echo "Your result is: ".$result;
            }
    }
    ?>
    
    <form action="" method="POST">
    <input type="number" required="required" name="number1" />
    <input type="number" required="required" name="number2" />
    <input type="submit" name="action" value="Add" />
    <input type="submit" name="action" value="Subtract" />
    <input type="submit" name="action" value="Multiply" />
    <input type="submit" name="action" value="Divide" />
    </form>
    

    【讨论】:

      【解决方案4】:

      试试这个示例代码。也许它会对你有所帮助:) 使用 Javascript 作为 onclick 按钮,更好地接近 IMO。

      它会在同一页面上产生结果,你也可以链接。

      使用 .php 扩展名保存此文件。

      <!DOCTYPE html>
      <html lang="en">
      <head>
      <title>Sample Calculator</title>
      <meta name="description" content="Simple Calculation Using Arithmetic Operators">
      <meta name="author" content="AloNe ForeVer">
      </head>
      <body>
      <body background="http://previews.123rf.com/images/iunewind/iunewind1403/iunewind140300097/26559245-Black-numbers-vector-background-with-copy-space-Stock-Vector.jpg">
      <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><center><form name="calculator" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" >
      <input style=" color: #0000ff ; font-size: 150%;" type="text" name="num1" placeholder="Input Number 1" >
      <input style=" color: #0000ff ; font-size: 150%;" type="text" name="num2" placeholder="Input number 2" > <select style=" color: #3336FF; font-size: 150%;" name="action">
      <option>+</option>
      <option>-</option>
      <option>/</option>
      <option>*</option>
      </select>
      <input style=" color: #FF0000; font-size: 150%;" type="submit" name="submit" value="Calculate" ></form></center>
      
      <center> <h1>
      <?php
      if(isset($_POST["submit"])){
      $num1 = $_POST["num1"];
      $num2 = $_POST["num2"];
      $action = $_POST["action"];
      
      if ($action=="+") {
      echo '<h1> <span style="color:#0000ff;">Addition</span>' . "</br>";
      $add=$num1+$num2;
      echo " <input type='text' value='$add' />";
      }
      
      if ($action=="-") {
      echo '<h1> <span style="color:#FF0000;">Subtraction</span>' . "</br>";
      $subtract=$num1-$num2;
      echo "<input type='text' value='$subtract' />";
      }
      
      if ($action=="/") {
      echo '<h1> <span style="color:#0000ff;">Division</span>' . "</br>";
      $divide=$num1/$num2;
      echo "<input type='text' value='$divide' />";
      }
      
      if ($action=="*") {
      echo '<h1> <span style="color:#FF0000;">Multiplication</span>' . "</br>";
      $multiply=$num1*$num2;
      echo "<input type='text' value='$multiply' />";
      }
      }
      ?></center>
      </body>
      </html>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多