Парсинг xml с выгрузкой в БД. Часть 3.

Опубликовано Опубликовано в рубрике HTML, PHP, SQL, XML

Итак, настало время для заключительной части работ по нашей базе данных, а именно — вывода данных. В этой статье речь пойдёт о реализации динамических фильтров, которые формируются из значений, существующих в БД.

Приведу пример реализации фильтров на основании select-боксов. Говоря по-русски, выпадающих списков.

Как их формировать — не первостепенная задача, но для нас будут важны два значения в теге option: это атрибут value и само значение тега. Первое позволит нам передавать данные, а второе поможет пользователю не ошибиться с выбором.

Если вбить все фильтры вручную, то появляются две проблемы:

1. С добавлением новых критериев фильтрации появляется трудность добавления вручную каждого из них.

2. Вероятно, в выборке просто не будет результатов по выбранным критериям поиска.

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

Поскольку БД уже заполнена, то к ней мы можем делать полноценные запросы. Сделаем запрос на формирование фильтра:

$user="имя_пользователя";$password="пароль";$database="имя_бд";
if ($db=@mysql_connect("хост",$user,$password))
			{
				mysql_select_db($database);	
				$sel = "SELECT DISTINCT `критерий_фильтрации` FROM `таблица, в которой он лежит`";
$result=array();      // массив для оглавления
				$result=array();      // массив для оглавления
								
				while( $row=mysql_fetch_assoc($res))
				{    // получение результата _по_строке_ (по одной записи)
				$result[]=$row;                        // занесение строки (записи) в //массив результата
				}
			}

Здесь мы делаем запрос без повторений (SELECT DISTINCT) на предмет данных, которые будут влиять на фильтрацию. Затем мы построчно выводим полученный результат в массив.

Теперь мы можем сформировать наш выпадающий список.

Выберите что-нибудь

Файл extract.php будет отвечать за обработку и вывод полученных данных при помощи метода POST. Наш выпадающий список будет носить имя «sys». Варианту «Все» присвоим значение «*». Остальные варианты будут браться из выборки в цикле и будут носить те же имена, что и в БД. Таким образом, пустых выборок не будет (если, конечно, база не пуста), а приписка DISTINCT в запросе выдаст нам только уникальные имена.

Теперь надо обработать информацию и послать её в виде запроса. Этот код уже будет находиться в файле extract.php. Тут будет наличествовать простая логическая структура if-elseif: смотрим, не равен ли фильтр «*». Если равен, то делаем простой запрос в БД без критерия WHERE. Иначе дописываем

WHERE `<критерий_выборки>` = ($_POST['sys']);

После чего добавим снизу кнопочку submit и закроем форму:



Всё. По клику на кнопку подтверждения сработают фильтры, и программа выдаст нам скорректированные данные.

Дальше можно побаловаться с коррекцией вывода на примере вышеуказанных данных!

Также в файле extract.php будет находится код для вывода таблицы в цикле. Для этого предварительно делаем запрос в бд, учитывая фильтры, и выводим его результат в массив, который после считываем построчно.

Сводная таблица по отчёту

№ пп Критерий 1 Критерий 2 Критерий 3

Дополнительная переменная i здесь просто выводит номер текущей записи.

Вот и вся эпопея! Успехов Вам в программировании и не только!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *