PHP:在$ _POST方法中没有保持所需的值

时间:2013-10-23 01:58:43

标签: php variables post default-value

我有一个变量$ 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>

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

2 个答案:

答案 0 :(得分:0)

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

原因是脚本调用之间没有固有的持久性。这是基于Web的编程的本质。除非您在呼叫之间传递某些内容,否则每次呼叫都是自动呼叫。因此,在您的脚本中,您始终以$numA作为10,因为没有任何内容持续存在。在会话中设置您的号码,它们将持续存在于该用户

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

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

答案 1 :(得分: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>

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