Выборка всех объектов из БД на страницу

189
06 июля 2017, 00:28
<?php 
$filter_city = $_POST['filter-select'];
$filter_class = $_POST['filter-class'];
include 'scripts/connect_db.php';
$strSQL = "SELECT * FROM buildings WHERE city = '".$filter_city."' AND  object_class ='".$filter_class."' ORDER BY RAND()";
$rs = mysql_query($strSQL);
while($row = mysql_fetch_array($rs)) {
echo $row['object_name'].$row['object_class'].'<br>';
}
mysql_close();
?>

Есть несколько объектов у которых есть класс Бизнес, Эконом и Комфорт.
Если выбрать в filter-class(это select) класс Бизнес, то страница result.php выведет все объекты с классом Бизнес. Так же и с Эконом. Как сделать выборку всех объектов если в filter-class выбрать все?

<select name="filter-class">
  <option selected disabled>Класс</option>
  <option>Все</option>
  <option value="Бизнес">Бизнес</option>
  <option value="Комфорт">Комфорт</option>
  <option value="Эконом">Эконом</option>
</select>
Answer 1

Скорее всего надо сделать так:

В значение Все тоже добавить value, например all. В файле result.php надо подправить запрос.

$filter_class = $_POST['filter-class'];
$where_add = '';
if ($filter_class != 'all')
    $where_add = ' AND object_class ="'.$filter_class.'"';
include 'scripts/connect_db.php';
$strSQL = "SELECT * 
    FROM buildings 
    WHERE city = '".$filter_city."' 
    {$where_add} 
    ORDER BY RAND()";

В чем смысл: если прилетает значение all, то в качестве $where подставляется пустота и выбираются все марки, в ином же случае в запрос будет добавлена строка AND object_class ='".$filter_class.", за счет чего выберутся авто с определенной маркой.

P.S. Хочу заметить, что скорее всего БД у вас не приведена к нормальной форме, т.к. в select у вас хранятся значения классов авто, а должны бы численные значения. Поэтому настоятельно рекомендуется сделать нормализацию таблиц.

P.P.S. Также смею сообщить, что напрямую вставлять значения в запрос нельзя. Следует пользоваться подготовленными выражениями и расширением mysqli/PDO для работы с БД

READ ALSO
Вертикальное и горизонтальное выравнивание блоков

Вертикальное и горизонтальное выравнивание блоков

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

209
Как обработать событие по нажатию на кнопку?

Как обработать событие по нажатию на кнопку?

Нажимаю на кнопку и нужно обработать это событие в jquery

367
Мониторинг html формы через JS

Мониторинг html формы через JS

Решил добавить смайлики на сайт по вот этому примеру https://myrusakovru/php-comments-smile

220