WedX - журнал о программировании и компьютерных науках

PHP получает запрос с несколькими параметрами из разных форм

Я новичок в PHP и у меня есть небольшая проблема. Я пытаюсь настроить запрос на получение с двумя параметрами. URL-адрес должен, например, выглядеть так:

search.php?query=Harry+Potter&page=movies

Проблема в том, что я получаю два параметра «запрос» и «страница» из двух разных форм.

Мой код следующий:

Форма 1:

<form action="search.php" method="get" class="navbar-form" role="search">
  <div class="input-group">
    <input type="text" class="form-control" placeholder="Search" name="query">
    <div class="input-group-btn">
      <button class="btn btn-default c-nav-btn-height" type="submit"><i class="glyphicon glyphicon-search"></i></button>
    </div>
  </div>
</form>

Форма 2:

<form class="btn-group-vertical" action="search.php" method="get">
  <button id="bMovies" class="btn active-menu" type="submit" name="page" value="movies">Filme</button>
  <button id="bSeries" class="btn" type="submit" name="page" value="series">Serien</button>
</form>

Есть ли возможность совместить две формы в одном get Request?

13.02.2017

  • Возможно, используйте сеансы или файлы cookie для первого запроса, вы можете сделать только один запрос на запрос. 13.02.2017
  • Зачем иметь две формы, если вы хотите, чтобы они были отправлены одновременно с данными из обеих? 13.02.2017
  • Зачем использовать разные формы? 13.02.2017
  • @MagnusEriksson Проблема в том, что у меня есть поле поиска, которое является «Формой 1» в моем описании. Это поле поиска есть на каждой странице моего сайта. Если я отправляю эту форму, она отправляет данные в search.php, где я могу выбрать один из двух вариантов: «фильмы» и «сериалы». Эти два варианта - моя вторая форма. 13.02.2017
  • @ C0dekid C0dekid Это не то, что я пытаюсь сделать, оба параметра должны быть в URL-адресе ... В любом случае, спасибо за ваш ответ. 13.02.2017
  • Я предполагаю, что только вторая форма должна вызывать первую, а первая не должна запускать вторую? (поскольку есть только кнопки и нет текстового поля) 13.02.2017
  • @MagnusEriksson Вторая форма недоступна до отправки первой. После поиска чего-либо (например, фильма «Команда А») в поле поиска вы попадете на страницу, где отображаются результаты. Проблема в том, что результаты разделены на фильмы и сериалы, и во второй форме я хочу сделать возможным переключение между всеми фильмами или всеми сериалами, которые относятся к команде А. 13.02.2017

Ответы:


1

Я смог решить проблему с некоторой помощью из раздела комментариев - благодаря @Magnus Eriksson. К сожалению, он удалил некоторые из своих комментариев, поэтому я сам отвечу на эти вопросы.

Чтобы уточнить, я знаю, что это точно не лучший способ сделать это, но, черт возьми, да, это работает!

Решение:

Скрытые поля ввода сделали это за меня. Я добавил одно скрытое поле ввода в каждую форму:

Форма 1:

<form action="search.php" method="get" class="navbar-form" role="search">
  <div class="input-group">
    <input type="hidden" name="page" value="movies">
    <input type="text" class="form-control" placeholder="Search" name="query">
    <div class="input-group-btn">
      <button class="btn btn-default c-nav-btn-height" type="submit"><i class="glyphicon glyphicon-search"></i></button>
    </div>
  </div>
</form>

Форма 2:

<form class="btn-group-vertical" action="search.php" method="get">
  <button id="bMovies" class="btn active-menu" type="submit" name="page" value="movies">Filme</button>
  <button id="bSeries" class="btn" type="submit" name="page" value="series">Serien</button>
  <input id="hiddenField" type="hidden" name="query" value="">
</form>

Поэтому я добавил скрытое поле ввода с именем «страница» в первую форму и скрытое поле ввода с именем «запрос» во вторую форму. С помощью этого небольшого трюка я могу получить одинаковую информацию в обеих формах, но отображаются только те поля, которые я хочу показать.

Поскольку Форма 1 отправляется первой, можно скопировать значение видимого поля ввода в невидимое поле ввода в Форме 2. Все, что мне нужно, это дополнительный PHP и JavaScript.

$query = $_GET["query"];
$page = $_GET["page"];
if ($page == "movies" || $page == "series") {
  echo "<script>";
  echo 'document.getElementById("hiddenField").value = "'. $query .'" ;';
  echo "</script>";
}
else {
}

Я сохраняю два параметра из первой формы в переменные и проверяю, является ли $page «фильмами» или «сериалами», потому что на этом сайте разрешены только эти два параметра. Если это правда, это повторяет какой-то JavaScript, который добавляет переменную $query в качестве значения скрытого поля ввода во второй форме.

И опять же, я знаю, что будут лучшие способы сделать это, но это сработало для меня, и я хотел поделиться этим с вами.

17.02.2017

2

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

13.02.2017
  • Вы также можете сделать то же самое, не включая раздутый JS-фреймворк, если только вы уже не используете его для других целей. 13.02.2017
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]