Реализация условного запроса к БД

225
13 июля 2017, 01:53

Добрый день сообщество. Прошу помощи в следующем:

На сайте реализовано переключение вкладок на JS. При нажатии на каждую вкладку на экран выводится результат запроса к БД. Собственно код:

$resultat1 = mysql_query("SELECT * FROM main_table WHERE категория='cat1'",$connection);

Тобишь каждый таб показывает выборку лишь по одной, соответствующей ей, категории

$(document).ready(function() { 
		$('.tabs_menu a').click(function(e) { 
			e.preventDefault(); 
			$('.tabs_menu .active').removeClass('active'); 
			$(this).addClass('active'); 
			var tab = $(this).attr('href'); 
			$('.tab').not(tab).css({ 
				'display': 'none' 
			}); 
			$(tab).fadeIn(400); 
		}); 
	});

Также реализован поиск, который делает запрос к БД и выводит материалы по всем категориям.
Можно ли реализовать поиск с учетом отслеживания активного в данный момент таба? Условно говоря, если выбрана третья категория (таб), то и поиск будет идти лишь по третьей. Понимаю что следует сделать невидимый input type="radio" для каждого таба, и в запросе к бд проверять его, но как это реализовать я представления не имею.

Заранее спасибо

Answer 1

В коментариях @Mike дал отличный совет.

Создайте скрытое поле: <input type="hidden" id="categoryType" name="categoryType">, и при переходе на новый таб меняйте в нем значение, для этого нужно добавить одну строку в ваш js:

$(document).ready(function() { 
		$('.tabs_menu a').click(function(e) { 
			e.preventDefault(); 
			$('.tabs_menu .active').removeClass('active'); 
			$(this).addClass('active'); 
			var tab = $(this).attr('href'); 
 
                        $('#categoryType").val(tab); // Добавленная строка 
 
			$('.tab').not(tab).css({ 
				'display': 'none' 
			}); 
			$(tab).fadeIn(400); 
		}); 
	});

И тогда у вас на сервере будет доступна информация о активном табе, $_REQUEST['categoryType']. Этот вариант подходит если у вас поиск работает без Ajax. В случае с Ajax все намного проще.

$.ajax({
   ...
   data: {
       ...
       categoryType: $('.active').attr('href'),
       ...
   },
   ...
});

И на сервера информация о активном табе будет лежать там же где и в первом случае $_REQUEST['categoryType'].

READ ALSO
Почему in_array() срабатывает 1 раз?

Почему in_array() срабатывает 1 раз?

Почему срабатывает 1 раз? Выводит 1, а потом всё время 2Хотя in_array() содержит все поля, которые проверяет

233
Cоздание и распространение пакета PHP+JS

Cоздание и распространение пакета PHP+JS

Есть простая фреймворконезависимая библиотека на PHP для вывода статистикиК ней есть фронтенд, строящий диаграммы на JS+CSS, требующий еще и Сhart

204
Php / Codeigniter / errors

Php / Codeigniter / errors

Изучаю ПХП и работу на движке CodeIgniterПри открытии сайта на локальном сервере мы ловим сие ошибки

185
Итератор с методами класса

Итератор с методами класса

У меня есть класс FileSystem, и я хочу хочу сделать, чтобы с итераторов можно было выполнять некоторые методы самого классаДля этого в итератор...

342