变量在发布php时更改值


variable changes value when posted php

我正在从上一页建立一个变量,如下所示:

$years = $_POST['years'];

其值为1或5。

稍后,我想使用这个值来确定一个不同的值,该值通过如下形式进入数据库:

<input type="hidden" name="years" value="<?php 
    if ($years == 1) {
        echo '10';
    }
    else if ($years == 5) {
        echo '50';
    }
    ?>" />

我的问题是,当我提交表格时,原始变量"$years"的值正在更改为新的后值。

我应该换一种方式写这个吗?

已编辑

我能想到的一个解决方案是:

$prevent_year = false;
$years        = $_POST['years'];
if(isset($_POST['prevent_years']) && $_POST['prevent_years'])
    $prevent_years = $_POST['prevent_years'];
<input type="hidden" name="years" value="<?=($years==1?10:($years==5?50:""))?>" />
<input type="hidden" name="years" value="<?=$prevent_years?>" />

输入。。。为什么不

<input type="hidden" name="years" value="<?=($years==1?10:50)?>" />

我不知道我是否100%理解这个问题。。。但我希望它能帮助你。

有很多方法可以做到这一点。我建议您分离代码并删除"echo"函数,而是创建一个变量来保存"years"变量的新值。

<?php 
$years = $_POST['years'];
if ($years == 1) {
    $newYears = 10;
}
else if ($years == 5) {
    $newYears = 50;
}
echo<<<_END
     INPUT THE ADDITIONAL BEGINNING OF HTML FOR FORM HERE
_END;
echo <input type="hidden" name="years" value=$years>;
echo <input type="hidden" name="newYears" value=$newYears>;
echo<<<_END
    INPUT THE ADDITIONAL -END OF HTML FOR FORM HERE
_END;
?>

只需在表单中添加另一个隐藏输入:

<input type="hidden" name="years" value="<?php 
if ($years == 1) {
    echo '10';
}
else if ($years == 5) {
    echo '50';
}
?>" />
<input type="hidden" name="years-orig" value="<?php echo $years; ?>">

在表单提交页面上,您可以访问以下数据:

$_POST['years'];
$_POST['years-orig'];