Форма отправки заменяет постоянную GET информацию, необходимую для страницы

Я изучаю php, и я должен сказать, что я погуглил везде, и я застрял :(

Мой вопрос, другими словами, как я могу добавить новые переменные к предыдущим переменным на странице?

Представь это существо www.mysite.com/getvartest.php?orgvar=12345

но после отправки этой формы она перейдет к

www.mysite.com/getvartest.php?varselection=selection1

То, что я ожидал бы, будет:

Представь это существо www.mysite.com/getvartest.php?orgvar=12345&varselection=selection1

Как я мог решить это?

<p>Testing two ore more variables</p>

<form action="getvartest.php?orgvar=12345" method="get">
<select name="varselection">
<option value="selection1">selection1</option>
<option value="selection2">selection2</option>
</select>
<input type="submit" />
</form>

<?php
@$originalvar = $_GET['orgvar'];
@$varselection = $_GET['varselection'];

if($originalvar&&$varselection)
echo "Testing original variable $originalvar. Testing second passthrough variable through here: $varselection";


?>
13.10.2009 03:31:31
1 ОТВЕТ
РЕШЕНИЕ

Вместо отправки по actionURL-адресу с уже заполненной частью строки запроса используйте скрытое поле ввода для хранения значений переменных, которые вы хотите исправить. Посмотрите, сможете ли вы заставить свой скрипт PHP сгенерировать такую ​​форму:

<form action="getvartest.php" method="get">
  <input type="hidden" name="orgvar" value="12345" />
  <select name="varselection">
    <option value="selection1">selection1</option>
    <option value="selection2">selection2</option>
  </select>
  <input type="submit" />
</form>

Возможно что-то вроде:

<input type="hidden" name="orgvar" value="<?= htmlspecialchars($_GET['orgvar']) ?>" />

(При htmlspecialchars()вызове экранируются такие символы, как <, &и на "всякий случай, если они есть orgvar.)

Или, если вы хотите сохранить каждый параметр запроса, вы можете использовать общий цикл, например:

<?php foreach ($_GET as $name => $value) { ?>
    <input type="hidden" name="<?= htmlspecialchars($name)  ?>"
                        value="<?= htmlspecialchars($value) ?>" /> 
<?php } ?>
4
13.10.2009 03:48:57
Это отличный ответ! Оно работало завораживающе. Это единственный способ сделать это, хотя? Я имею в виду, что было бы утомительно делать для каждой формы, которую я делаю. С другой стороны, сейчас мне просто нужно что-то, что работает. Спасибо!
Tek 13.10.2009 03:41:23
Нет, почти все так делают! Если вы не хотите превратить его в форму POST, в этом случае параметры POST не влияют на параметры GET.
bobince 13.10.2009 05:19:18