Добавить значение формы к URL, в котором уже есть переменные - PullRequest
0 голосов
/ 24 октября 2011

У меня есть страница, показывающая результаты запроса MYSQL, написанного на PHP. URL содержит переменные, которые пользователь отправил на предыдущей странице как:

www.mydomain.com / поиск /? Var1 = хх & var2 = хх и var3 = хх

Когда пользователь находится на странице результатов, он должен иметь возможность сортировать результаты. Для этого у меня есть форма SELECT

<form action="/search<?php echo $urlQuery; ?>"  name="order "class="formsrch" method="post" >
            <label>sort by:</label>
            <select class="order" id="order" name="order" onChange="this.form.submit()">
                <option value="pricedesc">Price High to Low</option>
                <option value="priceasc">Price Low to High</option>
                <option value="dist">Distance</option>
            </select>
        </form>

Переменная $ urlQuery содержит строку, которая будет добавлена ​​к URL: то есть $ urlQuery = "? var1 = xx & var2 = xx & var3 = xx"

Проблема в том, что при отправке формы страница перезагружается и в конце URL-адреса отображается значение? Order = dist.

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

Или, если у кого-то есть лучший способ сделать все это, я определенно открыт для предложений. Спасибо

Ответы [ 4 ]

0 голосов
/ 24 октября 2011

С этим действием = "/ search" и $ urlQuery = "? Var1 = xx & var2 = xx & var3 = xx"

затем, чтобы значение добавлялось в запрос, вы должны изменить метод формы на "GET".

Если вы хотите оставить для метода формы значение "POST", то для изменения действия формы при отправке формы потребуется некоторый JavaScript,

0 голосов
/ 24 октября 2011

Выведите другие переменные как <input type="hidden" name="var1" value="xx" />, а не как действие формы, чтобы они были включены в вашу строку запроса.

0 голосов
/ 24 октября 2011

почему бы вам не поместить их в форму как скрытую?

<?php
$extraVars = "";
  foreach($_GET AS $key=>$value) {
   $extraVars .= '<input type="hidden" name="'.$key.'" value="'.$value.'" />';
  }
?>
<form action="/search"  name="order "class="formsrch" method="post" >
    <?php echo $extraVars;?>
    <label>sort by:</label>
    <select class="order" id="order" name="order" onChange="this.form.submit()">
        <option value="pricedesc">Price High to Low</option>
        <option value="priceasc">Price Low to High</option>
        <option value="dist">Distance</option>
    </select>
</form>
0 голосов
/ 24 октября 2011

Вы можете создать скрытое поле для каждой из переменных, которые вы хотите передать, чтобы они также добавлялись.

Еще лучше: создайте метод в форме get, а затем получите доступ ко всем переменным с глобальным значением $_REQUEST в скрипте бэкэнда.

...