2012-06-25 7 views
2

У меня есть две формы и две разные кнопки отправки для одной страницы (страница, используемая для добавления сотрудников в компанию db).две формы, одна страница

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

Проблема в том, есть ли ошибка во второй форме. Сбой сбоя и появляется сообщение об ошибке, но вся информация из формы сначала уничтожается.

переменные сессии ниже устанавливается, если первая форма представляется (без ошибок):

$_SESSION['name'] = $info['displayName']; 
$_SESSION['faculty'] = $info['ou']; 
$ownerId = trim(mysql_prep($_POST['ownerId'])); 
$_SESSION['ownerId'] = $ownerId; 

Но когда эти переменные уничтожены, если вторая форма была отправлена. Я понимаю, что это происходит потому, что первая форма не технически представлена ​​больше. Но, опять же, разве это не значит, что точки переменных сеанса - не подлежат уничтожению?

EDIT: Возможно, было бы полезно добавить, что я отключил все переменные сеанса, но ТОЛЬКО, если вторая форма была отправлена ​​без ошибок. Хотя я не думаю, что это очень важное значение

+0

Вы не забыли начать сеанс? –

+0

yep! наверху – nv39

+0

Я думаю, что второй раз, когда страница называется этими значениями, пуста из формы, поэтому ничего не происходит в сеансе - просто догадка – codingbiz

ответ

3

Есть 2 подхода я мог думать о

if($POST['form_name'] == 'form1') 
{ 
    //set my session variables 
} 
else //for the second form 
{ 
    //do something else 
    //then session is intact 
} 

Я использовал, чтобы положить скрытое поле в моей форме, чтобы сохранить имя формы. Некоторые используют имя кнопки отправки.

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

<form name="form1" action="POST" action="xxx"> 
    <input type="text" values="<?php print($_POST['firstform_val_1']) ?>" name="val_1" /> 
</form> 


<form name="form2" action="POST" action="xxx"> 
    //these hidden fields preserve the formal values and make sure they are reposted in this second form 
    <input type="hidden" name="firstform_val_1" value="<?php print($_POST['firstform_val_1']) ?>" /> 
    <input type="hidden" name="firstform_val_2" value="<?php print($_POST['firstform_val_2']) ?>" /> 

    <input type="text" name="secondform_val1" /> 
    <input type="submit" name="form2" /> 
</form> 

То есть идея. Я просто получил это от upstair, а не тестировался. В первой форме, предыдущее значение вновь заполняется значениями продублированы в скрытых полях второй формы

Good Luck

+0

Затем вам нужно проверить, было ли сообщение, иначе переменная $ _POST будет пуста, и вы получите ошибку «index not found».Это происходит, когда пользователь впервые заходит на страницу. Чтобы предотвратить это, вы можете подавить ошибку с помощью 'print' '. Обратите внимание на символ '@'? – codingbiz

0

Если форма генерируется с помощью страницы PHP, вы можете использовать следующие скрипт для автоматического заполнения любых полей, которые были ранее отправлены.

Включены короткие теги;

<input type="text" name="firstName" value="<?=isset($_POST['firstName'])?$_POST['firstName']:'';?>" ></input> 

Нет Короткие ярлыки;

<input type='text' name="firstName" value=" 
<?php 
    $value=isset($_POST['firstName'])?$_POST['firstName']:''; 
    echo($value); 
?> 
"></input> 
Смежные вопросы