Это хороший способ сохранить значение поля при отправке HTML-формы? - PullRequest
1 голос
/ 01 сентября 2010

У меня есть форма с двумя кнопками отправки.

Пользователь заполняет поле А и нажимает кнопку Отправить.

Готово, некоторые поля ввода будут заполнены данными.

После этой первой отправки значение в поле A не должно исчезать.

Как мы можем сохранить это значение после первого представления?

Должны ли мы в атрибуте значения field-A разместить:

value="<?php echo isset($_POST['fieldA'])) ? $_POST['fieldA'] : ''; ?>"?

Форма подчиняется себе.

Обновление - Дополнительные детали: Это форма, которая будет иметь две кнопки отправки на одной странице (своего рода речь). Кнопка подтверждения A - захватывает некоторые данные на основе поля ввода и заполняет другие поля ввода в этой форме. Кнопка отправки B - После заполнения формы она будет использовать все эти данные для другой отправки.

Это очень простой случай, здесь нет никаких фреймворков. Однако у меня есть какая-то структура MVP.

Заранее спасибо, MEM

Ответы [ 4 ]

2 голосов
/ 01 сентября 2010

В общем, такие вещи выполняются с использованием 2 форм, ни одного.
И метод GET, а не POST.По крайней мере, для первой формы.
Но так как вы не можете задать вопрос, невозможно дать вам ответ.

Вот, пожалуйста:

index.php

<form action=edit.php>Enter name: <input name="name"><input type=submit></form>

edit.php

<? $row = dbget("row","SELECT * FROM domains WHERE name = %s",$_GET['name']); ?>
<form method="POST" action="save.php">
Edit data for <?=htmlspecialchars($row['name'])?>:</br>
NS: <input name="ns" value="<?=htmlspecialchars($row['ns'])?>"><br>
Another: <input name="another" value="<?=htmlspecialchars($row['another'])?>"><br>
<input type="hidden" name="name" value="<?=htmlspecialchars($row['name'])?>"><br>
<input type=submit>
</form>

save.php

doвсе, что вы делаете обычно, чтобы сохранить информацию

1 голос
/ 01 сентября 2010

Это нормально делать с $ _POST, некоторым людям не нравится троичный оператор, но для меня это работает просто отлично.Хотя есть и более эффективные способы работы с формами с использованием ООП. Вы можете создать класс, который управляет вашей формой, и передать массив конструктору этого класса (в конце концов вы можете передать $ _POST), и класс создаст вашу форму в соответствии синформация прислана.Вы даже можете использовать тот же класс для проверки вашей формы

Я не вижу необходимости использовать $ _SESSIONS, потому что это не та информация, которую вам нужно сохранять в течение всего сеанса .. или нет?

1 голос
/ 01 сентября 2010

Попробуйте:

<?php
   $fieldA = (isset($_POST['fieldA']) ? $_POST['fieldA'] : '')
?>
// and in your form
<INPUT type="text" name="fieldA" id="fieldA" value="<?=fieldA?>" />

, как вы упомянули, это должно работать.

1 голос
/ 01 сентября 2010

Я бы сохранил эти значения в $ _SESSION, как сказал пользователь fabrik. Таким образом, они могут быть сохранены во всем процессе отправки формы (при условии, что это несколько страниц) и опубликованы сразу в конце.

Предполагая, что у вас есть какая-то система отправки с кнопкой «Далее» для перехода к следующему набору форм, использование session_start () и $ _SESSION, безусловно, лучший метод. Более подробную информацию можно найти здесь или на различных учебных сайтах -

http://php.net/manual/en/reserved.variables.session.php

...