Почему оператор PHP if нарушает мою переменную формыPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Почему оператор PHP if нарушает мою переменную формы

Сообщение Anonymous »

Общая цель — это значение по умолчанию в PHP, если поле формы пропущено. Мне трудно понять, что уникального в этой последовательности разметки и кода. В других аналогичных полях формы эта проблема не возникает.
Переменная PHP $diskNum назначается в отдельном включаемом файле. Например: $diskNum = 99; в этом нет ничего особенного или уникального.
HTML-файл: Обратите внимание, что переменная PHP в атрибуте Placeholder правильно отображает «Диск (99)».
Обработчик форм PHP:

Код: Выделить всё

echo $diskNum.'---F
';

if (isset($_POST['thedisc'])) { $diskNum = $_POST['thedisc']; }

echo $_POST['thedisc']. '---D
';

echo $diskNum. '--L';

Exit();
Результат, если поле формы осталось пустым (--F и --L должны оба отображать 99, --D должно быть пустым).

Код: Выделить всё

99---F
---D
---L

Код: Выделить всё

echo $diskNum. '--L';
Ошибка без ввода значения формы.
Результат, если в форму введено значение (например, 19):

Код: Выделить всё

99---F
19---D
19---L
Результаты соответствуют ожиданиям.
Я знаю, что могу добавить переменную $diskNum в качестве атрибута значения для ввода формы. И это создает значение по умолчанию для поля (заменяя заполнитель). Обход этой проблемы. Но мне интересно, ПОЧЕМУ это не работает.
Кажется, я не могу понять, почему необходимо жестко запрограммированное значение. Другие поля формы, обрабатываемые аналогичным образом, не требуют заданного значения.
Если я удалю оператор If, то --F и --L будут иметь одно и то же значение. Итак, что-то в операторе If имеет проблему с передачей переменной $diskNum, если она не изменена, но я не могу понять, в чем именно. Я в полном смятении. Я попытался изменить его на оператор !isset, без изменений. Попробовал добавить else {$diskNum = $diskNum;, без изменений.
Даже изменил оператор if на:

Код: Выделить всё

if (isset($_POST['thedisc'])) { $diskNum = ($_POST['thedisc']); } else { $diskNum = 30; }
Итак, новое значение (30) для переменной $diskNum должно быть передано в --L, но это не так. --L по-прежнему пусто.
Также изменение ввода HTML на type="number" не привело к изменению поведения.
Что мне не хватает в этом операторе if?

Подробнее здесь: https://stackoverflow.com/questions/798 ... m-variable
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»