【问题标题】:Pushing buttons to increase or decrease the same value按下按钮来增加或减少相同的值
【发布时间】:2017-12-30 15:54:06
【问题描述】:

我想在我按下第一个按钮时增加值,如果我按下第二个按钮来减少相同的值。这是我的代码:

    <?php

    session_start();

    if (isset($_POST['btn1'])) {
        $_SESSION['clicks'] += 1 ;
        echo  $_SESSION['clicks'];
    } 

    else { if(isset($_POST['btn2'])){

        $_SESSION['click'] = $_SESSION['clicks'] + ($_SESSION['click']- 1) ;
        echo  $_SESSION['click'];
    }
    }
     ?>
   <br><br><br><br>
    <form action="" method="post">
    <input type="submit" name="btn1" value="+1">
    <input type="submit" name="btn2" value="-1">
    </form>

【问题讨论】:

    标签: php html button


    【解决方案1】:

    您需要确保会话在尝试添加/减去之前设置一次,并使用相同的会话名称 clicks 而不是 click 我猜的减去。

    <?php
    
        session_start();
        if( !isset( $_SESSION['clicks'] ) ) $_SESSION['clicks']=0;
    
        if( isset( $_POST['btn1'] ) ) {
            $_SESSION['clicks']++;
        } elseif( isset( $_POST['btn2'] ) ){
            $_SESSION['clicks']--;
        }
        echo 'clicks: '. $_SESSION['clicks'];
    ?>
    
    
    
    
    <form action="" method="post">
        <input type="submit" name="btn1" value="+1">
        <input type="submit" name="btn2" value="-1">
    </form>
    

    【讨论】:

      【解决方案2】:

      如果会话变量为空,请确保声明它。我在示例中稍微更改代码的原因是因为它允许按钮值更改变量,这意味着您不需要 if else 也意味着,如果您愿意,它可以扩展为添加新按钮,例如 +2 或 -2,而无需更改任何 php 代码,使其更易于维护。还要小心使用相同的变量名。我倾向于在第一次使用后复制/粘贴它们以减少打字错误。

      <?php
      session_start();
      
      if(! empty($_POST)) {
      
          if(empty($_SESSION['click'])) {
      
              $_SESSION['click'] = 0;
          }
      
          $_SESSION['click'] += $_POST['btn'];
      }
      
      print $_SESSION['click'];
      ?>
      
      <form action="" method="post">
      <input type="submit" name="btn" value="+1">
      <input type="submit" name="btn" value="-1">
      </form>
      

      【讨论】:

      • 你能解释一下为什么他们的代码失败了,你的代码与现在的代码相比做了什么吗?
      • 没有人会从插入代码中学习。 RamRaider 做到了,您可以从中学习并提供更好的答案。 OP 可能只是想知道它失败的原因。
      • 啊,我明白了,对不起 - 我只是写了一种方法而不是解释。
      • 它不起作用,因为会话变量每次都被声明 - 因此被覆盖并且永远不会存储更多点击 - 但我没有投票反对
      • 只有空的时候才声明
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-29
      • 2019-09-25
      • 1970-01-01
      • 1970-01-01
      • 2020-01-19
      • 2018-01-12
      • 1970-01-01
      相关资源
      最近更新 更多