[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Поиск по подкатегориям
Sash'ok
таблица с категориями выглядит так:
id сортировка имя тип
3 10 кат1 0
4 20 кат2 0
6 11 подкатегория11 10
7 12 подкатегория12 10
8 21 Подкатегория21 20
....


если "тип" =0 значит это категория, а если нет, то тип - подкатегория той категории, чья сортировка равна этому "тип"
3апрос типа
mysql_query("select * from ".$db->prefix."table WHERE name LIKE '%$text_to_search%' AND ???????? ORDER BY id DESC");


???????? - вот тут и маюсь.

мне нужно сделать поиск так. если я выбираю для поиска какую то подкатегорию то ищет только по ней, а если я выбираю всю категорию то поиск ищет по всем подкатегориям, которые принадлежат этой категории .
категории отображаются на странице через while (sort by номер_для_сортировки) и <select>. Передаются через POST.

подскажите плиз как это сделать... unsure.gif



Спустя 18 минут, 26 секунд (2.12.2009 - 20:23) waldicom написал(а):
А где поле, которое указывает, кто у категории родитель?

Спустя 36 минут, 25 секунд (2.12.2009 - 21:00) Sash'ok написал(а):
waldicom Точна! smile.gif не было такой...


Спустя 16 часов, 2 минуты, 37 секунд (3.12.2009 - 13:02) Sash'ok написал(а):
вчера добавил, сделал чтоб располагались как нада...

а поиск все равно не работает. ищет тольо по 1 категрии. или вообще не ищет sad.gif

Спустя 16 минут, 11 секунд (3.12.2009 - 13:18) waldicom написал(а):
покажи структуру и запрос

Спустя 18 минут, 47 секунд (3.12.2009 - 13:37) Sash'ok написал(а):
id cat_sort cat_name subcat_parent

$cat_id = $_GET['cat'];
$ss = $db->fetch_assoc($db->query("SELECT * FROM ".$db->prefix."magnets_cats WHERE id=".$cat_id.""));
// выбираю ту строку где наш id
$sss = $db->query("SELECT * FROM ".$db->prefix."magnets_cats WHERE subcat_parent=".$ss['cat_sort']."");
// выбираю строки где цифра в тип равна их сортировке

а вот с запросом у меня проблемы.

mysql_query("select * from ".$db->prefix."magnets WHERE magnet_name LIKE '%$text_to_search%' AND magnet_cat=[id тех строк у которых subcat_parent=".$ss['cat_sort']."]  ORDER BY id DESC");


Цитата
[id тех строк у которых subcat_parent=".$ss['cat_sort']."]


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

Спустя 1 час, 4 минуты, 35 секунд (3.12.2009 - 14:42) Sash'ok написал(а):
ну вот скажем нужно выполнить поиск по строкам с id 6,7,8.
запрос

mysql_query("select * from ".$db->prefix."table WHERE name LIKE '%$text_to_search%' AND id=6 OR id=7 OR id=8 ORDER BY id DESC");

будет выполняться.

а как сделать запрос если id у нас и их количество не постоянны?
или такой запрос неправильный?

Спустя 1 час, 43 минуты, 38 секунд (3.12.2009 - 16:25) Raskolnikoff написал(а):
Ваш конечный запрос будет выглядеть примерно так
"SELECT * from ".$db->prefix."magnets WHERE magnet_name LIKE '%$text_to_search%' AND magnet_cat IN (SELECT id FROM ".$db->prefix."magnets_cats WHERE subcat_parent=".$ss['cat_sort'].")"

Спустя 1 час, 30 минут, 55 секунд (3.12.2009 - 17:56) Sash'ok написал(а):
Raskolnikoff спасибо огромное. Все работает

Спустя 23 часа, 54 минуты, 40 секунд (4.12.2009 - 17:51) Sash'ok написал(а):
подскажите плиз еще как сделать чтобы поиск выполнялся по нескольким параметрам но в одной категории

например


$result = mysql_query("
SELECT *
FROM "
.$db->prefix."magnets
WHERE magnet_description
LIKE '%
$text_to_search%'
OR magnet_name
LIKE '%
$text_to_search%'
AND magnet_cat="
.$cat_id."
ORDER BY id
DESC
"
);




но проблема в том что он ищет не по одной категориям а по всем sad.gif
видимо OR тут нельзя исползовать. или как то по другому?

Спустя 22 минуты, 20 секунд (4.12.2009 - 18:13) sergeiss написал(а):
Скобочки используй для формирования логики.
В твоем случае
where  (... LIKE '...' or ... LIKE '....') and ...

Спустя 15 минут, 15 секунд (4.12.2009 - 18:29) Sash'ok написал(а):
sergeiss, точна! робит smile.gif спс!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.