Допустим, мы находимся на странице (неважно какой) и у нас в адресной строке что-то вроде: https://site.com/app/backend.php?param1=abc¶m2=cde
На странице есть форма с <input name='param3'> отправив которую вы должны попасть на эту же страницу, с первыми двумя параметрами + к ним должен приклеится третий. Т.е. в конечном итоге после отправки формы мы должны попасть на https://site.com/app/backend.php?param1=abc¶m2=cde¶m3=aaa
Мое решение:
<? $repeatRequest = http_build_query($_GET); ?>
<form class="form-inline" action="backend.php?<?=$repeatRequest?>" method="get">
<div class="form-group">
<label>Страница: </label>
<div class="input-group">
<input type="text" name="param3" class="form-control" size="2" value="<?=$_GET['offset']/20?>">
<span class="input-group-btn"><button class="btn btn-default" type="submit">перейти</button></span>
</div>
</div>
</form>
Но в конечном итоге мы попадаем на https://site.com/app/backend.php?param3=aaa
В чем беда и как это фиксить?
Как сказал выше, запилить костыль на JS оказалось проще. Есть input с button
<input id="page-number" type="text">
<button onclick="paginationManager()" type="button">перейти</button>
Когда юзверь меняет что-то в input и жмет на кнопку, то выполняется следующий скрипт:
function paginationManager(){
/*Получаем содержимое адресной строки*/
var location = window.location.toString();
/*Получаем значение, которое ввел пользователь*/
var page = document.getElementById("page-number").value;
/*Тут будет ссылка, по которой нас перенаправит*/
var link;
/*Если параметр page-number (тот самый доп параметр) уже есть, то изменяем его (\d) означает цифру. Иначе к текущим параметрам "клеим" дополнительный */
/*Это нужно, чтобы избегать повторений в адресной строке але &page-number=3&page-number=5*/
if (location.search(/page-number=\d/) != -1) {
location = location.replace(/page-number=\d/, "page-number=" + page);
link = location;
} else {
link = location + "&page-number=" + page;
}
/*Переадресация на сформированную ссылку*/
window.location.href = link;
}
Минус очевиден - отключен js - работать не будет. Буду рад увидеть здесь нормальное решение.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники