2016-05-09 2 views
1

Я создаю переменную из предшествующей страницы, как так:значение переменной меняется, когда писал PHP

$years = $_POST['years']; 

значение это либо 1 или 5.

Позже я хочу использовать это значение определить другое значение, которое входит в базу данных через форму следующим образом:

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

Моя проблема в том, когда я отправить форму, значение исходной переменной «$ лет» меняется на новый пост значения.

Должен ли я писать это другим способом?

+1

Вы не объяснили, почему вы Wouldn Не хотите использовать «новое значение столбца». Вы пытаетесь сохранить только первое значение? Или что? –

+1

Вероятно, вы должны сохранить исходное значение $ _SESSION, так как это самый простой способ его сохранения между вызовами. Подробнее об этом здесь: http://php.net/manual/en/reserved.variables.session.php – ThomasH

+2

Почему бы нам не сказать, что вы на самом деле * пытаетесь сделать * вместо того, чтобы просто догадаться, как решить вашу проблему проблема. Если '$ _POST ['years']' может быть 1 или 5, почему вы делаете это 10 или 50 позже? – Mike

ответ

1

EDITED

Одно решение, которое я могу думать, это:

$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 % вопрос ... но я надеюсь, что это поможет вам.

+0

, как это предотвратит перезапись $ years от нового значения $ _POST ['years']? –

+0

Должен ли он предотвратить старое значение? ummm ok !! Я не понял ... я собираюсь отредактировать ... одну секунду, p –

0

Существует много способов сделать это. Я бы рекомендовал вам разделить код и удалить функцию «эхо» и вместо этого сделать переменную, которая содержит новое значение вашей переменной «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; 
?> 
+0

проигнорировать этот последний комментарий, тип ввода явно скрыт по причине lol –

+0

, как это предотвратит перезапись $ years от новейших Значение $ _POST ['years']? –

+0

, когда я делаю это так, значение за $ годы уходит. – ggntc

0

Просто добавьте еще один скрытый вход в форму:

<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']; 
Смежные вопросы