Как вставить "или" в урл.

Samail
На сайте с 10.05.2007
Offline
361
577

В урле поискового запроса содержится: ...results&type=1&cid=1

тип-1 категория-1, мне нужно, чтоб было тип 1 или 2. Т.е. чтоб по одному запросу показывались объекты типов 1 и 2 (но не выводились 3,4,5 и т.д.).

Как написать type=1или2?

DriverCat
На сайте с 10.04.2008
Offline
116
#1

передавать например type=1:2 а потом применить explode();

Joker-jar
На сайте с 26.08.2010
Offline
154
#2

Еще можно такой вариант:

<pre>

<?php
if (isset($_GET['type'])) print_r($_GET['type']);
?>
</pre>

Запрос такого вида:

http://test-domain.sha81b.local/1.php?type[]=1&type[]=2&type[]=4

Результат:

Array

(
[0] => 1
[1] => 2
[2] => 4
)
[Удален]
#3

А есть еще такой вариант

Тип 1 это 1 в 2-ичной СС

2 это 10

Вам нужно

1 | 2
т.е.
1 | 10
, что конечно равно 11, то есть 3 в десятичной СС. То есть все опции можно считать последовательностью битов :-D

Передаете type=3

и проверяете примерно так

if ($type & 1) { echo 'Товар первого типа'; } 
if ($type & 2) { echo 'Товар второго типа'; }

если $type = 3, то оба условия верны.

Такая запись хороша, если у вас количество типов не очень большое и меньше 32 на 32-битных осях, меньше 64 на 64-битных.

PS я всех победил? :)

yoda-master
На сайте с 21.04.2009
Offline
33
#4

So1, да вы несомненно крут.

Но что делать если типов у нас не 3 а несколько десятков. каждый раз выбирать из базы все ид, затем проверять цыклом нужно ли отобразить каждый из них, затем составлять запрос для вывода типов?

Или просто передать список идентификаторов категорий массивом и сделать по ним выборку из базы?

После трех дней без программирование жизнь становится бессмысленной....
T
На сайте с 13.01.2009
Offline
50
#5

yoda-master,

Такая запись хороша, если у вас количество типов не очень большое и меньше 32 на 32-битных осях, меньше 64 на 64-битных.
vip-59
На сайте с 11.08.2009
Offline
63
#6

Возможно так:

<?php
$sTypes = '0';
if (isset($_GET['type']) && $_GET['type'])
$sTypes = trim($_GET['type']);
if (!$sTypes)
$sTypes = '0';
$sTypes = implode(',', array_map('intval', explode(',', $sTypes)));


$result = mysql_query('SELECT * FROM products WHERE type IN('.$sTypes.')');

?>
Сайты - не глисты, за месяц не выведешь!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий