【问题标题】:Variable increment based on a check box being checked or not in PHP基于复选框的变量增量在 PHP 中是否被选中
【发布时间】:2014-03-15 02:45:30
【问题描述】:

我对下面的代码sn-p有两个要求。

  • 当我单击复选框时,var 将递增。 - 完成

  • 如果复选框不是,var 应该保存以前的数字 检查。 - 未完成

如果您不选中 var 的复选框,当前它会变回 1。

代码sn-p:

if (isset($_POST['var'])) { 
    $var = $var + 1; 
} else { 
    $var = $_POST['var']; 
}

【问题讨论】:

  • 你能用“隐藏”吗?
  • 您的 if-else 语句不合逻辑。您是说如果 POST 变量 var 存在,则增加 $var,但如果它不存在,则将 $var 设置为等于不存在的变量。你提到的这个“以前的号码”是什么?是 $var 吗?
  • 是的,前一个数字是 var。
  • 这只是我尝试过的方式。但是我对任何知道如何根据复选框是否被选中来增加变量的人开放。如果未选中该复选框,我希望任何数字都是可变的。例如,如果您将变量增加 3 次但不是第四次,我希望它保存 3。
  • 当你说“保存”前一个数字时,你是什么意思?保存在变量中,还是保存在会话变量中,还是保存在数据库中,还是保存在文件中?

标签: php checkbox


【解决方案1】:

您可以考虑使用会话变量来达到您的目的。

首先,您可以像这样开始新会话:

session_start();

然后,您可以通过以下方式做您想做的事情:

// Initialize $_SESSION['var'], if needed
if(!isset($_SESSION['var'])) {

    $_SESSION['var'] = 0;   

}

if (isset($_POST['var'])) {

    // Increment the var
    $var = $_SESSION['var'] + 1; 

    // Save the var as a session variable
    $_SESSION['var'] = $var;

} else { 

    // Restore the var from the session variable
    $var = $_SESSION['var']; 

}

此外,在某些时候您可能想要销毁会话数据。在 PHP 中执行如下:

session_destroy();

请注意,使用 PHP 会话的良好做法是一个完全独立的问题,您可以通过 Google 搜索。

Click for some more sandbox-level info on PHP Sessions.

UPD:这是一个完整的 PHP / HTML 代码,用于您正在寻找的工作示例:

<?php session_start(); ?>
<!DOCTYPE html>
<html>
    <head>
    </head>
    <body>
        <form method="POST">
            Increment $var <input type="checkbox" name="var" value="var">
            <input type="submit" value="Submit">
        </form>
        <p>
            <?php

            // Initialize $_SESSION['var'], if needed
            if(!isset($_SESSION['var'])) {
                $_SESSION['var'] = 0;       
            }

            if (isset($_POST['var'])) {
                // Increment the var
                $var = $_SESSION['var'] + 1; 
                // Save the var as a session variable
                $_SESSION['var'] = $var;
            } else { 
                // Restore the var from the session variable
                $var = $_SESSION['var']; 
            }

            echo $var;

            ?>
        </p>
    </body>
</html>

请告诉我是否有帮助。

【讨论】:

  • 不抱歉,和以前一样。
  • @user3416665,我发现我的解决方案有错误,现在更新了。如果有效,请尝试。
  • 现在无论您是否选择了 $var,它都会递增。感谢您的帮助!
  • @user3416665,还有一个更新。它在我的测试环境中运行良好。请检查它,如果它仍然不起作用,我会发布我用于测试的整个 .php 文件。
  • 您的代码绝对有效,它一定是我的:S。非常感谢您的帮助。真的很感激!
猜你喜欢
  • 1970-01-01
  • 2015-10-05
  • 1970-01-01
  • 2018-10-26
  • 1970-01-01
  • 2020-05-02
  • 1970-01-01
  • 1970-01-01
  • 2017-11-20
相关资源
最近更新 更多