【问题标题】:php calculator - Switch statement issuesphp 计算器 - Switch 语句问题
【发布时间】:2018-06-23 05:20:22
【问题描述】:

这是我的表格

<form>
        <input type="text" name="num1" placeholder="Digets">
        <input type="text" name="num2" placeholder="Digets">
        <select name="operator">
            <option>Add</option>
            <option>Subtract</option>
            <option>Multiply</option>
            <option>Divide</option>
        </select>
        <button type="submit" value="submit" name="submit">Check for the answer</button>
        <p>Your answer is : </p>
    </form>

<?php 


        if (isset($_GET['$submit'])){
            $result1 = $_GET['$num1'];
            $result2 = $_GET['$num2'];
            $operator = $_GET['$operator'];


            switch ('$operator'){

                case "Add":
                    echo $result1 + $result2;
                break;
                case "Subtract":
                    echo $result1 - $result2;
                break;
                case "Multiply":
                    echo $result1 * $result2;
                break;
                case "Divide":
                    echo $result1 / $result2;
                break;

            }
        }

    ?>

当我点击计算按钮时,我没有看到答案,我尝试修复我的所有错误,但在我看来好像是开关有问题。

【问题讨论】:

  • switch ($operator){ 没有引号你得到是错误的.. $_GET['num2'];
  • 我去掉了引号,但它有同样的问题。另外你的意思是我的获取是错误的?
  • 好,然后在切换前回显$operator,看看值是多少。或者,也添加一个默认案例,看看它是否达到了这一点。
  • 我也尝试过这样做,但在切换之前也没有答案
  • 您的选项缺少值&lt;option value='Divide'&gt;Divide&lt;/option&gt;

标签: php html calculator


【解决方案1】:

试试这个:-

你在获取值和开关参数时犯了一些错误。

就像你正在获取价值 $_GET['$num1'] 而你需要使用 $_GET['num1']

因为你只需要传递变量开关($operator)而不是引号的switch ('$operator')

  <?php 


            if (isset($_GET['submit'])){
                $result1 = $_GET['num1'];
                $result2 = $_GET['num2'];
                $operator = $_GET['operator'];


                switch ($operator){

                    case 'Add':
                        $FResult =$result1 + $result2;
                        echo "Result:"+ $FResult ;
                        break;
                    case 'Subtract':
                        $FResult =$result1 - $result2;
                        echo "Result:"+ $FResult ;
                        break;
                    case 'Multiply':
                        $FResult =$result1 * $result2;
                        echo "Result:"+ $FResult ;
                        break;
                    case 'Divide':
                        $FResult =$result1 / $result2;
                        echo "Result:"+ $FResult ;
                        break;
                    default :
                         echo "wrong";

                }
            }

        ?>

【讨论】:

  • 您应该解释您的更改,而不仅仅是转储代码
【解决方案2】:

你犯的错误:

1)。您将变量直接传递给 get 元素,即它应该像 $_GET['submit'] 而不是 $_GET['$submit'];

2)。您传递的是字符串而不是变量,即 switch ('$operator') 应该是 switch ($operator)

看看哪里出错了

<form method="GET" action="">
        <input type="text" name="num1" placeholder="Digets">
        <input type="text" name="num2" placeholder="Digets">
        <select name="operator">
            <option>Add</option>
            <option>Subtract</option>
            <option>Multiply</option>
            <option>Divide</option>
        </select>
        <button type="submit" value="submit" name="submit">Check for the answer</button>
        <p>Your answer is : </p>
    </form>


<?php


        if (isset($_GET['submit'])){
            $result1 = $_GET['num1'];
            $result2 = $_GET['num2'];
            $operator = $_GET['operator'];


            switch ($operator){

                case "Add":
                    echo $result1 + $result2;
                break;
                case "Subtract":
                    echo $result1 - $result2;
                break;
                case "Multiply":
                    echo $result1 * $result2;
                break;
                case "Divide":
                    echo $result1 / $result2;
                break;

            }
        }

    ?>

【讨论】:

    【解决方案3】:

    您正在寻找 PHP 解决方案,这里有一个:-

    <?php
    
        if (isset($_POST['submit'])){
            $result1 = $_POST['num1'];
            $result2 = $_POST['num2'];
            $operator = $_POST['operator'];
    
    
            switch($operator){
    
                case "Add":
                    $res = +$result1 + +$result2;
                break;
                case "Subtract":
                    $res = +$result1 - +$result2;
                break;
                case "Multiply":
                    $res = +$result1 * +$result2;
                break;
                case "Divide":
                    $res = +$result1 / +$result2;
                break;
    
            }
        }
    
    ?>
    
    <form method="post" action="">
        <input type="text" name="num1" id="num1" placeholder="Digets">
        <input type="text" name="num2" id="num2" placeholder="Digets">
        <select name="operator" id="operator">
            <option value="Add">Add</option>
            <option value="Subtract">Subtract</option>
            <option value="Multiply">Multiply</option>
            <option value="Divide">Divide</option>
        </select>
        <input type="submit" name="submit" id="submit" value="Calculate" />
        <p>Your answer is : <input name="res" value="<?php echo $res; ?>"></p>
    </form>
    

    这就是你要找的。​​p>

    【讨论】:

    • 请检查上面的代码,它只在PHP中运行成功。
    【解决方案4】:

    <form>
    	<input type="number" name="num1" placeholder="Digets">
    	<input type="number" name="num2" placeholder="Digets">
    	<select name="operator">
    		<option value="+">Add</option>
    		<option value="-">Subtract</option>
    		<option value="*">Multiply</option>
    		<option value="/">Divide</option>
    	</select>
    	<button type="submit" value="submit" name="submit">Check for the answer</button>
    	<p>Your answer is : </p>
    </form>
    <?php 
    
            if (isset($_REQUEST['submit'])){
                $result1 = $_REQUEST['num1'];
                $result2 = $_REQUEST['num2'];
                $operator = $_REQUEST['operator'];
                
                $res = $result1.$operator.$result2;            
                $p = eval('return '.$res.';');
    			print $p;
           }      
    
    ?>

    <form>
    	<input type="number" name="num1" placeholder="Digets">
    	<input type="number" name="num2" placeholder="Digets">
    	<select name="operator">
    		<option>Add</option>
    		<option>Subtract</option>
    		<option>Multiply</option>
    		<option>Divide</option>
    	</select>
    	<button type="submit" value="submit" name="submit">Check for the answer</button>
    	<p>Your answer is : </p>
    </form>
    <?php 
    
            if (isset($_REQUEST['submit'])){
                $result1 = $_REQUEST['num1'];
                $result2 = $_REQUEST['num2'];
                $operator = $_REQUEST['operator'];
                switch ($operator){
    
                    case "Add":
                        echo $result1 + $result2;
                    break;
                    case "Subtract":
                        echo $result1 - $result2;
                    break;
                    case "Multiply":
                        echo $result1 * $result2;
                    break;
                    case "Divide":
                        echo $result1 / $result2;
                    break;
    
                }
            }
    
    ?>
    
    
    Another way:
    
    <form>
    	<input type="number" name="num1" placeholder="Digets">
    	<input type="number" name="num2" placeholder="Digets">
    	<select name="operator">
    		<option value="+">Add</option>
    		<option value="-">Subtract</option>
    		<option value="*">Multiply</option>
    		<option value="/">Divide</option>
    	</select>
    	<button type="submit" value="submit" name="submit">Check for the answer</button>
    	<p>Your answer is : </p>
    </form>
    <?php 
    
            if (isset($_REQUEST['submit'])){
                $result1 = $_REQUEST['num1'];
                $result2 = $_REQUEST['num2'];
                $operator = $_REQUEST['operator'];
                
                $res = $result1.$operator.$result2;            
                $p = eval('return '.$res.';');
    			print $p;
           }      
    
    ?>

    【讨论】:

      【解决方案5】:

      您应该在选择标签(计算器所需的运算符)&lt;option value=""&gt;中设置选项值。

      把你输入的type="text"改成type="number"

      <form method="GET">
              <input type="number" name="num1">
              <input type="number" name="num2">
              <select name="operator">
                  <option value='+'>Add</option>
                  <option value='-'>Subtract</option>
                  <option value='*'>Multiply</option>
                  <option value='/'>Divide</option>
              </select>
              <button type="submit" value="submit" name="submit">calculate</button>
              <p>Answer :</p>
      </form>
      
      <?php
          if (isset($_GET['submit'])){
              $num1 = $_GET['num1'];
              $num2 = $_GET['num2'];
              $operator = $_GET['operator'];
      
      
                  switch ($operator){
      
                      case "+":
                          echo $num1 + $num2;
                      break;
                      case "-":
                          echo $num1 - $num2;
                      break;
                      case "*":
                          echo $num1 * $num2;
                      break;
                      case "/":
                          echo $num1 / $num2;
                      break;
      
                  }
              }
      
          ?>
      

      【讨论】:

        【解决方案6】:

        您所做的是您在后端计算它并且表单正在刷新页面,但没有在页面的任何位置显示结果。最好使用 JQuery,这样结果会立即出现而无需刷新页面。只需检查以下代码:-

        <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
        <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
        
        <script>
            $(document).ready(function(){
            $("#submit").on('click', function(){
                var num1 = $("#num1").val() ;
                var num2 = $("#num2").val() ;
                var operator = $("#operator").val() ;
                var result = 0 ;
        
                switch(operator){
                    case "Add":
                       result = +num1 + +num2 ;
                       document.getElementById("res").innerHTML = result ;
                       break ;
                    case "Subtract":
                       result = +num1 - +num2 ;
                       document.getElementById("res").innerHTML = result ;
                       break ;
                    case "Multiply":
                       result = +num1 * +num2 ;
                       document.getElementById("res").innerHTML = result ;
                       break ;
                    case "Divide":
                       result = +num1 / +num2 ;
                       document.getElementById("res").innerHTML = result ;
                       break ;
                }
            });
        });
        </script>
        
        <div>
            <input type="text" name="num1" id="num1" placeholder="Digets">
            <input type="text" name="num2" id="num2" placeholder="Digets">
            <select name="operator" id="operator">
                <option value="Add">Add</option>
                <option value="Subtract">Subtract</option>
                <option value="Multiply">Multiply</option>
                <option value="Divide">Divide</option>
            </select>
            <button name="submit" id="submit">Check for the answer</button>
            <p>Your answer is : <span id="res"></span></p>
        </div>
        

        这运行成功。

        【讨论】:

        • Smith,你真的不知道 JQuery 的强大吗?它是一个计算器,结果不应该在页面刷新后出现。只需运行代码并检查它的速度和准确性。
        • 用 jQuery 回答问题并不能帮助他弄清楚为什么他的 PHP 不起作用。
        猜你喜欢
        • 2019-06-01
        • 1970-01-01
        • 2010-12-20
        • 2018-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多