【问题标题】:How to subtract from a starting amount?如何从起始金额中减去?
【发布时间】:2022-02-04 02:46:01
【问题描述】:

我是编码初学者,我正在打印一个数字(这里是 36),我有 4 个按钮。按下每个按钮应从剩余的金额中减去。所以当我按下“3”按钮时,剩余的数量是 33,但之后当我按下“4”按钮时,显示的值应该是 29,但我得到的是 32。

如何使变量mleft 的值不会在每次按下按钮时重置为 36?

<div class="bt_grp">
    <form method="post">
        <button value=1 name="pressed">1</button>
        <button value=2 name="pressed">2</button>
        <button value=3 name="pressed">3</button>
        <button value=4 name="pressed">4</button>
    </form>
</div>
<?php 
$mleft = 36;
if (isset($_POST['pressed'])) {
    echo $_POST['pressed'];
    $mleft = $mleft -= $_POST['pressed'] ;
    
}
?>

<div class="flex-container">
    <div id="matchn">
        <h3>Matchsticks left</h3>
        <h1><?=$mleft?></h1>
    </div>
</div>

【问题讨论】:

  • 要么使用-==,不能同时使用。
  • 记住,$x -= $y$x = $x - $y 的快捷方式
  • 每按一次按钮提交页面,PHP 就会重新运行,并且每次都将mleft 设置为36。您需要将更改的值存储在某处(cookie、URL、数据库等)

标签: php html


【解决方案1】:

每次发布​​表单时,在减去之前将 $mleft 设置为 36

如果您希望值在调用之间保持不变,请使用会话变量并从中减去。

<?php
session_start();
?>

<div class="bt_grp">
    <form method="post">
        <button value=1 name="pressed">1</button>
        <button value=2 name="pressed">2</button>
        <button value=3 name="pressed">3</button>
        <button value=4 name="pressed">4</button>
    </form>
</div>
<?php 
$mleft = $_SESSION['mleft'] ?? 36;
if (isset($_POST['pressed'])) {
    echo $_POST['pressed'];
    $mleft -= $_POST['pressed'] ;
}
$_SESSION['mleft'] = $mleft;
?>

<div class="flex-container">
    <div id="matchn">
        <h3>Matchsticks left</h3>
        <h1><?=$mleft?></h1>
    </div>
</div>

【讨论】:

    【解决方案2】:

    现在在每次刷新页面时,您声明 $mleft = 36; 并且在第二个按钮按下此变量后,例如不是29,但 33。要修复它,您可以设置 $_SESSION 变量,例如:

    session_start(); // To set session variables tou must start it
    
    if (!isset($_SESSION['mleft'])) { // Check if mleft exists, because setting up every 
        $_SESSION['mleft'] = 36;      // every page refresh will not 
    }                                 // substract from variable
    
    
    if (isset($_POST['pressed'])) {
        echo $_POST['pressed'];
        $_SESSION['mleft'] = $_SESSION['mleft'] -= $_POST['pressed'] ;  // Substract
        
    }
    

    【讨论】:

      【解决方案3】:

      只是一个友好的建议,像这样在 javascript 中执行此操作可能会更好......

      let counterContainer = document.querySelector('h1');
      let matchSticksLeft = parseInt(counterContainer.innerText);
      
      function subtract(amount){
        counterContainer.innerText = matchSticksLeft -= amount;
      }
      <div class="bt_grp">
          <button value=1 name="pressed" onclick="subtract(1)">1</button>
          <button value=2 name="pressed" onclick="subtract(2)">2</button>
          <button value=3 name="pressed" onclick="subtract(3)">3</button>
          <button value=4 name="pressed" onclick="subtract(4)">4</button>
      </div>
      <div class="flex-container">
          <div id="matchn">
              <h3>Matchsticks left</h3>
              <h1>36</h1>
          </div>
      </div>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-25
        • 1970-01-01
        • 1970-01-01
        • 2023-03-20
        相关资源
        最近更新 更多