Пользователь отфильтровал результаты из базы данных php MySQL - PullRequest
1 голос
/ 08 июля 2011

PHP / MySQL новичок здесь.

Мне удалось разработать веб-страницу, отображающую информацию из моей базы данных, следуя онлайн-учебнику. Теперь я просто хочу, чтобы пользователи могли фильтровать эту информацию. Я понимаю, как его можно отфильтровать, используя WHERE, но я не могу понять, как позволить пользователю обновить эту информацию.

Вот что я попробовал:

$query_rsLodging = "SELECT name, address, city FROM lodging WHERE lodging.city = '". $searchVar . "' ORDER BY lodging.name";

Затем я попытался передать информацию в переменную, используя jumpmenu:

<form name="form" id="form">
<select name="jumpMenu" id="jumpMenu" onChange="MM_jumpMenu('parent',this,0)">
  <option value="#">Sort by...</option>
  <option value="directory.php?searchVar=Miami">Miami</option>
  <option value="directory.php?searchVar=Miami Beach">Miami Beach</option>
</select></form>

Страница перезагружается с добавленным URL, но это не влияет на результаты. Однако размещение следующего кода чуть выше запроса делает:

$searchVar = "Miami"

Очевидно, я неправильно передаю информацию в переменную, но мне кажется, что я близко.

Вопрос: Как лучше всего разрешить моим пользователям фильтровать результаты моей базы данных (желательно через выпадающее меню)?

Ответы [ 4 ]

1 голос
/ 08 июля 2011

Может быть, вам нужно получить ваш $ searchVar из массива super globals $ _GET:

<?  $searchVar = $_GET['searchVar'] ?>

PHP не читает переменные напрямую из строки запроса, поскольку это вопрос безопасности.

1 голос
/ 08 июля 2011

Чтобы получить переменные строки запроса в область видимости PHP, используйте $ _GET и $ _POST.В вашем случае, где вы положили $searchVar = "Miami", замените его на $searchVar = $_GET['searchVar'].

. Как я уже писал ранее, Таблицы Боби съедят вашу БД. Читайте здесь, как избежать инъекций sql

0 голосов
/ 08 июля 2011

Ваши теги <option> почти наверняка имеют неправильные значения, и ваша форма построена неправильно:

<form action="mysearch.php" method="post">
<select name="jumpMenu">
   <option value="Miami">Miami</option>
   <option value="Miami Beach">Miami beach</option>
</select>
</form>

Ваша форма, созданная в вашем образце, будет пытаться выполнить:

SELECT ... WHERE loding.city = 'directory.php?searchVar=Miami'

где вы должны делать

SELECT ... WHERE lodging.city = 'Miami'
0 голосов
/ 08 июля 2011

Вам необходимо использовать Javascript и AJAX для отправки информации обратно на сервер.

PHP выполняется на сервере, и PHP отображает HTML и отправляет этот HTML клиенту. Затем скрипт PHP будет выполнен. Как только клиент получает HTML, браузер отображает HTML и отображает результаты для пользователя. Пользователь взаимодействует с компонентами HTML (такими как выпадающие списки). Дело в том, что, несмотря на то, как это выглядит, PHP выполняется ПОЛНОСТЬЮ, прежде чем любой из HTML-кода выполняется. Таким образом, взаимодействие между клиентом и HTML не так просто, как может показаться на первый взгляд.

Тем не менее, это общая проблема, с которой многие люди сталкивались и решали; Решение в форме чего-то, называемого AJAX, в котором Javascript, который выполняется на клиенте в HTML, отправляет динамические запросы на сервер, которые могут быть выполнены в PHP для получения данных, которые возвращаются клиентскому Javascript, который затем может отформатировать данные и измените страницу соответствующим образом.

Есть еще один способ сделать это, немного более простой, но у него немного менее приятный пользовательский опыт; Вы можете заставить страницу HTML выполнить POST обратно на сервер с данными, которые вы хотите выбрать на сервере, а затем PHP сможет прочитать переменную POST и сделать запрос оттуда. Это проще, но проблема в том, что пользовательский интерфейс менее приятен, потому что нужно обновить всю страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...