Мне нужно заполнить форму, перейти на страницу, выбранную в раскрывающемся списке, а затем использовать другую информацию из формы, чтобы заполнить выбранную страницу. - PullRequest
0 голосов
/ 26 января 2011

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

Код для получения информации из формы и ее использования для заполнения следующей страницы:

<?php
$firstname = $_GET['personsName'];
echo "My Name is" .$firstname;
?>

ИФорма будет выглядеть следующим образом:

<form action="letter.php" method="get">
<input type="text" name="personsName"></input>
<input type="submit" value="submit">
</form>

Код для выбора страницы:

$pages = array('Page 1' => 'page1.php', 'Page 2' => 'page2.php', 'Page 3' => 'page3.php');

if (array_key_exists($_POST['dropdown-name'], $pages)) {
header("Location: " . $pages[$_POST['dropdown-name']]);
} else {
echo "Error processing form"; // submitted form value wasn't in your array, perhaps a hack attempt
}

Мне нужно, чтобы оба из них работали для одной и той же формы, я просто небыл в состоянии понять это.То, что я попробовал, было:

<form action="<?=$pages?>" method="POST">
<input type="text" name="name" /><br />
<select name="letter">

<option value="Page 1">
Page 1
</option>

<option value="Page 2">
Page 2
</option>

<option value="Page 3">
Page 3
</option>

</select>
<input type="submit" value"Print" />
</form>

Это, очевидно, неправильно.Мне нужна эта форма, чтобы взять введенную в нее информацию, перенаправить на выбранную страницу, а затем заполнить страницу другой информацией, введенной в форму.Проблема в том, что я понятия не имею, как получить ответы, которые у меня уже есть вместе.Спасибо всем, кто помогает!

Текущий код:

<script type="text/javascript">
$(function UpdateFormAction(){
alert('Launched event handler');
var form = document.getElementById('MyForm');
var list = document.getElementById('PageList');
alert('List item numer ' + list.selectedIndex);
var desiredAction = list.options[list.selectedIndex].value
alert('Desired action set to ' + desiredAction);
form.action = desiredAction;
});
</script>

Форма:

<form id="MyForm" action="letter.php" method="POST">
<input type="text" name="name" /><br />
<select id="PageList" name="letter" onchange="UpdateFormAction();">

<option value="letter.php">Page 1</option>
<option value="letter2.php">Page 2</option>
<option value="letter3.php">Page 3</option>
</select>
<input type="submit" value"Print" />
</form>

1 Ответ

2 голосов
/ 26 января 2011

Вы теряете данные, отправленные на сервер, когда вы делаете перенаправление.

По сути, у вас есть 3 варианта:

  • Сохранение данных на клиенте с помощьюфайл cookie или аналогичный файл (много затрат для чего-то простого)
  • Хранить данные на стороне сервера в сеансе или аналогичном (еще больше затрат)
  • Передавать данные через URL, который выперенаправление на ...

Что-то вроде:

if (array_key_exists($_POST['dropdown-name'], $pages)) {
    header("Location: " . $pages[$_POST['dropdown-name']] . "?personsName=" urlencode($_POST['name']));
} else {
    //Blah
}

Что кажется лучшим ответом для вашего простого примера.Если данных много или они более сложны, рассмотрите возможность использования одного из двух вариантов, указанных выше

Примечание: в форме, которую вы назвали переменной name, на пае, получающей ее, выназвал это personsName - обратите внимание на сопоставление одного с другим в URL.

Решение Javascript (протестировано):

<html>
    <head>
        <title>SO Demo</title>
    </head>
    <body>

    <script type="text/javascript">
        function UpdateFormAction(){
            var form = document.getElementById('MyForm');
            var list = document.getElementById('PageList');
            var desiredAction = list.options[list.selectedIndex].value
            form.action = desiredAction;
            document.getElementById('Target').innerHTML = 'Form action set to: ' + desiredAction;
        }
    </script>

    <form id="MyForm" action="letter.php" method="POST">
        Name: <input type="text" name="name" /><br />
        Page: <select id="PageList" name="letter" onchange="UpdateFormAction();">
            <option value="letter.php">Page 1</option>
            <option value="letter2.php">Page 2</option>
            <option value="letter3.php">Page 3</option>
        </select>
        <input type="submit" value="Print" /><br/>
        <span id="Target">Form action unmodified</span>
    </form>
    </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...