PHP - Форма: сохранить записи / выборы при отправке формы - PullRequest
0 голосов
/ 03 ноября 2011

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

Как сделать так, чтобы форма сохраняла данные до тех пор, пока форма не будет успешно отправлена?

EDIT:

Метод отправки формы: $_POST, а форма отправляется на другую страницу.

Это должно быть сделано строго на PHP, поскольку решения Javascript / Jquery могут быть заблокированы сценариями более защищенными пользователями.

Ответы [ 4 ]

1 голос
/ 04 ноября 2011

Вот, пожалуйста. Это будет работать и не зависит от Javascript:

form.php // страница формы

<?php session_start(); ?>
<form method="post" action="action.php">
    <input type="text" id="input1" value="<?php echo (isset($_SESSION['fields']) ? $_SESSION['fields']['input1'] : '') ?>" />
    <input type="text" id="input2" value="<?php echo (isset($_SESSION['fields']) ? $_SESSION['fields']['input2'] : '') ?>" />   
</form>

action.php // страница действий

<?php
    session_start();

    //do your validation here. If validation fails:

    $_SESSION['fields']['input1'] = $_POST['input1'];
    $_SESSION['fields']['input2'] = $_POST['input2'];

    //redirect back to form.php
?>
1 голос
/ 03 ноября 2011

Если они являются выбранными значениями, вы можете сделать что-то вроде этого:

<select name="my_select" id="my_select">
    <option value="123"<?php if($_REQUEST['my_select'] == 123) echo ' selected="selected"; ?>>123</option>
</select>

Если у вас обычный ввод текста, вы можете просто применить переменную $_REQUEST к атрибуту value:

<input type="text" name="my_text" value="<?php echo $_REQUEST['my_text'] ?>" />
1 голос
/ 03 ноября 2011

Я предлагаю запретить переход страницы от отправки до проверки данных.Введите jQuery:)

<script type="text/javascript" src="jquery-library.js"></script>
<script type="text/javascript">
    $(document).ready(function(){
        // Wait for the user to click on your button
        $('#submit_button').click(function(){
            // Check each form field for an appropriate value
            if ($('#form_field1').val() != 'something I expect')
            {
                alert('Wrong submission!');
                return false;
            }
            // Forward the user to some url location
            window.location = 'url';
            return false;
        });
    });
</script>
1 голос
/ 03 ноября 2011

Является ли форма POST или GET? В любом случае, у вас есть доступ ко всем отправленным полям в переменных PHP $ _POST или $ _GET. В вашем HTML вы можете передать эти значения (если установлены) в значение по умолчанию каждого элемента ввода HTML. Таким образом, если это первый раз, они будут пустыми, если произошла ошибка, значения будут заполнены заново.

...