У меня есть страница, на которой я могу передавать от одной до трех переменных через строку запроса.
Есть три случая:
- products.php? page = x
- products.php? Пол = х & страница = х
- products.php? Пол = x & ФИЛЬТР = x & page = x
Переменные page
и gender
всегда называются так, но одна FILTER
может иметь три разных значения: brand
, category
и subcategory
.
Поскольку переменная gender
не является обязательной, я не могу использовать $_SERVER['QUERY_STRING']
для получения ее имени и значения, потому что это не всегда вторая переменная.
В зависимости от выбранного FILTER
я делаю разные вещи, каждый фильтр имеет разные функции.
Мой вопрос: как я могу узнать, какой из трех фильтров выбран после исключения page
и gender
, так что в принципе, если что-то подобное возможно
if ( isset($_GET['brand']) || isset($_GET['category']) || isset($_GET['subcategory']) ) {
// $selected = whichever variable is set, something like $(this) in jQuery
}
Альтернативой является создание оператора if()
для каждого из трех случаев, но если я добавлю больше фильтров, мне придется добавить больше операторов if()
.
1 ответ
1) Вы можете использовать операторы if, как вы сказали.
2) Вы могли бы сделать что-нибудь вроде
Products.php? Пол = x & фильтр = x + c & page = x
$filter = explode('+', $_GET['filter']));
$type = $filter[0] //x
$value = $filter[1] //c
Тогда вы можете использовать переключатель для большей читабельности
switch($type){
case 'brand':
//do stuff
break;
default:
//do stuff
}
Похожие вопросы
Новые вопросы
php
PHP — это открытый, мультипарадигмальный, динамически типизированный и интерпретируемый язык сценариев, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.
if (in_array($_GET['filter'], array('brand', 'category', 'subcategory'))
?&filter=category
, а затем php-sideswitch($_GET['filter'])
?$_GET
?