PHP поиск по категориям

#php #javascript #search

#php #javascript #Поиск

Вопрос:

Я хотел, чтобы пользователи фильтровали поиск по категориям

У меня есть 3 PHP-файла. Один с именем searchbycity.php , searchbystate.php и по умолчанию search.php

Мой вопрос в том, как бы мне настроить это, чтобы я мог щелкнуть переключатель, и панель поиска узнала, какой php-файл искать с этой информацией?

Вот как у меня пока изложена вся суть переключателя

 <input type='text' size='70' name='search'> 
<input type='image' value='search' src='images/tickmark.png'></a><br>
  Search by amp;nbsp;
<input type="radio" onclick="eng = this.value;" checked name="sengines"
  value="http://www.google.com/search?q=" />
  City
<input type="radio" onclick="eng = this.value;" name="sengines"
  value="http://www.altavista.com/web/results?q=" />State
  

(Игнорируйте поиск в Google и AltaVista, я получил его с веб-сайта: P)

Комментарии:

1. мне кажется, что это вопрос javascript

2. javascript? как бы я к нему обратился?

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

4. Я не уверен, что понимаю, но если вы хотите запросить определенный файл, основанный на том, какой флажок установлен, AJAX через JavaScript для запроса файла — это то, что я бы сделал. Однако, если вы имеете в виду, что хотите изменить action="..." для формы, содержащей входные данные, также используйте JavaScript (но без AJAX) для прослушивания щелчка по одному из флажков и изменения атрибута действия.

Ответ №1:

Вы могли бы написать этот HTML-код (обратите внимание на замену значений радио-строк целыми числами):

 <form action="search.php" method="GET">
   <input type='text' size='70' name='search'> 
   <input type='image' value='search' src='images/tickmark.png'></a><br>
     Search by amp;nbsp;
   <input type="radio" onclick="eng = this.value;" checked name="sengines"
    value="1" />
    City
   <input type="radio" onclick="eng = this.value;" name="sengines"
    value="2" />State
   <input type="submit" />
</form>
  

Когда пользователь нажимает кнопку отправки, search.php страница будет выполнена (на стороне сервера). Эта страница может содержать следующий код:

 <?php
   if(is_integer($_GET['sengines']) amp;amp; is_string($_GET['search'])){

       switch($_GET['sengines']){

          case 1: include_once "searchbycity.php";
                  searchByCity($_GET['search']);
                  break;

          case 2: include_once "searchbystate.php";
                  searchByState($_GET['search']);
                  break;

       }

   }
?>
  

Итак, если пользователь выбрал первый переключатель, тоsearchbycity.php файл и гипотетическая функция под названием searchByCity, присутствующая в файле, будут вызываться с передачей значения $_GET[‘search’], представленного формой. В противном случае, будут включеныsearchbystate.php файл и… логика будет аналогичной.

Обратите внимание: данные, отправляемые формой, должны быть очищены с помощью функций фильтра. В коде предусмотрен первый уровень проверки с использованием функций is_integer и is_string.