0

我有一个变量 $numA 和 $numB ,其中包含 10 和 40 的值。

$numA = 10; $numB = 40;

每次我单击每个按钮“+”和“-”时,另一个变量的值都会返回默认值。我希望每次按下按钮时,每个变量值都不会更改为默认值,而是分配给它的新值。

例如:(当我按“-”和“+”时)

desired output: 
$numA = 20;
$numB = 20;

可以不使用 $_SESSION 方法来完成吗?下面是我的代码:

<?php
    $numA = 10;

    if (isset($_POST["add"]))
    {
        $numA = $_POST["add"];
        $addition = $numA + 10;
        $numA = $addition;

    }

    $numB = 40;

    if (isset($_POST["substract"]))
    {
        $numB = $_POST["substract"];
        $substraction = $numB - 20;
        $numB = $substraction;
    }

?>

<form name="add" method="post">
    <input type="hidden"  name="add" value="<?php echo $numA ?>" />
    <input type="submit"  value="+" />
    <?php echo "ADDITION= ", $numA, '<BR>'; ?>
</form>

<form name="subtract" method="post">
    <input type="hidden"  name="substract" value="<?php echo $numB ?>" />
    <input type="submit"  value="-" />
    <?php echo "SUBSTRACTION= ", $numB, '<BR>'; ?>  
</form>

请帮我解决这个问题。请提供解释。谢谢 :-)

4

2 回答 2

0

会话或 cookie 将是执行此操作的唯一方法(除非您希望这些值对每个人都相同,否则您可以将它们放在平面文件或数据库中)。你也可以通过 a 来做到这$_GET一点,但它会给你带来更少的控制权。

原因是脚本调用之间没有固有的持久性。这就是基于 Web 的编程的本质。除非您在通话之间传递一些东西,否则每次通话都是自闭症。因此,在您的脚本中,您将始终从$numA10 开始,因为没有任何内容被持久化。而是在会话中设置您的号码,它们将为该用户保留

session_start(); // Have to call this before using session variables
if(!isset($_SESSION['numA'])) $_SESSION['numA'] = 10;

现在您可以使用$_SESSION['numA'],并且您的值将在您运行脚本时递增和递减。

于 2013-10-23T02:36:33.757 回答
0

您每次都在覆盖存储的值,因为您在每次运行脚本时都明确设置了$numA$numB。此外,您正在处理两种表单,因此只有一组值被 POST,因此您可以只检查特定变量。此代码将为您提供所需的内容(单击“+”或“-”将两个值都更改为 20),并且数字会在每次后续单击时不断变化。

<?php

    if (isset($_POST["add"]))
    {
        $numA = $_POST["add"];
        $numA += 10;
    } else {
        $numA = 10;
    }


    if (isset($_POST["substract"]))
    {
        $numB = $_POST["substract"];
        $numB -= 20;
    } else {
        $numB = 40;
    }

?>

<form id="math" method="post">
    <input type="hidden"  name="add" value="<?php echo $numA ?>" />
    <input type="button" onclick="document.getElementById('math').submit();" value="+" />
    <?php echo "ADDITION= ", $numA, '<BR>'; ?>

    <input type="hidden"  name="substract" value="<?php echo $numB ?>" />
    <input type="button" onclick="document.getElementById('math').submit();" value="-" />
    <?php echo "SUBSTRACTION= ", $numB, '<BR>'; ?>  
</form>

除此之外,如果您想要数据持久性,您将需要选择某种存储方法。它可以是会话、cookies、文本文件、$_GET 变量等,但最终你必须在调用之间获取数据。

于 2013-10-23T02:39:05.083 回答