|
|
|
|
|
для: coerbi
(16.09.2006 в 15:48)
| | Нет, ну это лишь один из примеров организации каталога, вы можете ввести другие критерии, скажем районы или тип квартиры, количества комнат, ценовой диапазон, обмен, продажа, покупка и т.п. | |
|
|
|
|
|
|
|
для: coerbi
(16.09.2006 в 15:48)
| | .....И тишина...... | |
|
|
|
|
|
|
|
для: cheops
(16.09.2006 в 15:33)
| | К примеру:
КВАРТИРЫ
ЭЛИТНЫЕ
ОБЫЧНЫЕ
Но если каталог КВАРТИРЫ имеет собственный набор товарных позиций (SELECT * FROM product WHERE id_catalog="ключ каталога КВАРТИРЫ") => какой смысл иметь подкаталоги ЭЛИТНЫЕ И ОБЫЧНЫЕ ведь товарные позиции ссылаются именно на каталог КВАРТИРЫ и не знают что у него есть подкаталоги...
И потом, по здравому смыслу квартира не может принадлежать каталогу просто КВАРТИРЫ она обязательно или ЭЛИТНАЯ или ОБЫЧНАЯ......................? | |
|
|
|
|
|
|
|
для: coerbi
(16.09.2006 в 15:17)
| | Не очень понятен вопрос? Что вас смущает, давайте на примере какого-нибудь конкретного каталога это рассмотрим? | |
|
|
|
|
|
|
|
для: cheops
(16.09.2006 в 14:37)
| | Спасибо !!! Только для того чтобы закрыть тему ответьте еще на один вопрос:
>В книге "Практика разработки Web-сайта" предполагаось что товарные позиции могут принадлежать и промежуточным каталогам? Но таком случае какой толк этим каталогам иметь подкаталоги и куда заносить товарные позиции??? Я правильно понял Ваш код в книге или нет ? | |
|
|
|
|
|
|
|
для: coerbi
(16.09.2006 в 14:30)
| | IN - это оператор, который проверяет входит ли левый аргумент в список справа. Например
вернёт истину (true), а
вернёт ложь (false).
Если в качестве левого аргумента стоит имя столбца, то запрос
SELECT * FROM tbl WHERE hide = 'show' AND id IN (1,2,3,115,4,5,6)
|
вернёт все записи для которых поле hide принимает значение show и чьё поле id равно какому-нибудь значению из ряда 1,2,3,115,4,5,6. | |
|
|
|
|
|
|
|
для: cheops
(16.09.2006 в 14:01)
| | Ага въезжаю... но вот можно по подробнее о ранее не встречавшейся контрукции WHERE IN (); Как она работает и когда применяется ? | |
|
|
|
|
|
|
|
для: coerbi
(15.09.2006 в 22:47)
| | Следует поступить следующим образом: рекурсивно спуститься по каталогу и посмотреть, каки подкаталоги имеются у текущего каталога, запомнить их в массив $arr и сформировать из них запрос
SELECT * FROM product
WHERE id_catalog IN (4, 5, 8, 12)
|
где 4, 5, 8, 12 - первичные ключи текущего каталога и его подчиннёных каталогов. Т.е. в файле product.php запрос
<?php
// Выбираем из таблицы product
$query = "SELECT * FROM product
WHERE id_catalog=".$_GET['id_catalog']."
ORDER BY $strtmp";
?>
|
следует заменить запросом
<?php
$arr = array();
get_id_child($_GET['id_catalog']);
$query = "SELECT * FROM product
WHERE id_catalog IN (".implode(",",$arr).")
ORDER BY $strtmp";
function get_id_child($id_catalog)
{
global $arr;
// Смотрим имеются ли у каталога подчинённые каталоги
$query = "SELECT id_catalog FROM catalog
WHERE hide='show' AND id_parent=".$id_catalog;
$cnt = mysql_query($query);
if(!$cnt) exit(mysql_error());
if(mysql_num_rows($cnt) > 0)
{
while($catalog = mysql_fetch_array($cnt))
{
get_id_child($catalog['id_catalog']);
}
$arr[] = $id_catalog;
}
}
?>
|
| |
|
|
|
|
|
|
|
для: coerbi
(15.09.2006 в 22:47)
| | Блин, ответьте пожалуйста...Нужен именно многоуровневый бесконечновложенный каталог в возможностью добавлять каталоги на любой уровень. Плииииииз !!!!!!!!!!!!!!!!!!!!!!!!!!!! | |
|
|
|
|
|
|
|
для: cheops
(15.09.2006 в 22:16)
| | Я тоже об этом думал в смысле модифицировать каталог но вот два вопроса которые не дают мне покоя:
> Каким образом ГРАМОТНО организовать SQL запрос (а может модифицировать базу данных?) что можно было в результирующем наборе выводить записи из всех подчиненных подкаталогов текущего каталога. А главное как их потом можно будет ОТСОРТИРОВАТЬ ???
> Кстати, а как это предполагалось в Вашей книге...? | |
|
|
|
|