Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вывод из категорий и подкатегорий 
:(
    Опции темы
feosr
Дата 6.4.2008, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 20.1.2007
Где: Минск

Репутация: нет
Всего: 2



имеется структура категорий, примерно следующая:

Категория
|
---Подкатегория
---Подкатегория
    |
    ----Подкатегория

Необходимо реализовать вывод статей из корневой категории а также все статьи содержащиеся во всех подкатегориях.

Я бьюсь над этой проблемой уже с 3 дня и ока некчему не пришел( Если мне неизменяет память подобное было реализовано в Wordpress, там насколько мне извесно на категории и посты отводится в сумме 5 таблиц для этого. Может можно проще как-то)
PM MAIL WWW ICQ   Вверх
Fortop
Дата 6.4.2008, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Достаточно 1ной таблицы

Код

 CREATE TABLE `demo`.`sample` (
`id` INT NOT NULL AUTO_INCREMENT ,
`name` VARCHAR( 40 ) NOT NULL ,
`parent` INT NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM 


id = индекс твоей категории или подкатегории
parent = индекс родительской категории или подкатегории

Добавлено через 2 минуты и 52 секунды
Похожая тема была прямо вот тут


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
feosr
Дата 6.4.2008, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 20.1.2007
Где: Минск

Репутация: нет
Всего: 2



Fortop, и как потом выводить статьи? просто с древом категорий у меня пробем нету. Я магу даже определить все ID подкатегорий для интересующей меня категории. Просто это делается довольно тупо, хоть и работает.
Но затем у меня может получиться набор чисел вида "2, 3, 8" и как искать статьи относящиеся к категориям под данными Id я пока незнаю( Можно эксплоудом разделить на массив а там потом отображать все статьи у которых PID == 2, 3 или 4.
Дело встало за реализацией. Получился достаточно громоздкий и тяжлый скрипт изобилующий возможно ненужными проверками. И всеравно скрипт неработает так как надо(
PM MAIL WWW ICQ   Вверх
Fortop
Дата 6.4.2008, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



статьи у тебя лежат в отдельной таблице связанные с первой по ID (который уникален, и сквозной для всех категорий)

можешь вместо name использовать поле-признак, что это статья, а не категория.
Это уменьшит твои блуждания по базе в поисках

Добавлено через 14 минут и 30 секунд
Вложенность у тебя какая?
Произвольная?


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
feosr
Дата 6.4.2008, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 20.1.2007
Где: Минск

Репутация: нет
Всего: 2



хм.... это вариант....
p.s. Есть другая идея но для этого я ждолжен спросить, можно ли при запросе в WHERE указывать несколько значений?? мол или то или другое?
все, нашел))


Это сообщение отредактировал(а) feosr - 6.4.2008, 20:04
PM MAIL WWW ICQ   Вверх
feosr
Дата 6.4.2008, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 20.1.2007
Где: Минск

Репутация: нет
Всего: 2



вложенность у меня произвольная.
------
твой сопособ неподходит всеже.
А у моего есть шансы, только вот надо как-то запихнуть массив в запрос.

Код

$testar = '2|3|4';
$wrarray = explode("|", $testar);

$restult = mysql_query("SELECT * FROM content WHERE catid IN ".$wrarray." ORDER BY title", $link);

Естественно mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource
PM MAIL WWW ICQ   Вверх
Fortop
Дата 6.4.2008, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



для произовольного уровня вложенности удобнее вот это

http://www.google.com.ua/search?hl=ru&...oogle&meta=

Добавлено через 1 минуту и 24 секунды
а для твоего неизвестного кода надо так.

Код

$wrarray = str_replace('|',',',$testar);
$restult = mysql_query("SELECT * FROM content WHERE catid IN (".$wrarray.") ORDER BY title", $link);



--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
awers
Дата 6.4.2008, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



feosr, а почему  ||| и explode?? Это же массив! Тебе "|" надо на "," заменить и радоваццо жизни 
PM MAIL WWW ICQ Skype   Вверх
feosr
Дата 6.4.2008, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 20.1.2007
Где: Минск

Репутация: нет
Всего: 2



Да я уже понял что ступил. Осталось докалупать чтобы запятая лишняя убиралась и все буит работать)
PM MAIL WWW ICQ   Вверх
Feldmarschall
Дата 6.4.2008, 20:54 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



feosr, откуда у тебя берется это '2|3|4'?
PM   Вверх
feosr
Дата 6.4.2008, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 20.1.2007
Где: Минск

Репутация: нет
Всего: 2



Код

/* Составление ID всех необходимых категорий */
function get_subcats($ParentID, $lvl) { 
    global $link; 
    global $lvl; 
    $lvl++; 
    $sSQL="SELECT * FROM categories WHERE pid=".$ParentID." ORDER BY title";
    $result=mysql_query($sSQL, $link);

    if (mysql_num_rows($result) > 0) {
        while ( $row = mysql_fetch_array($result) ) {
        $ID1 .= "'".$row["id"]."', ";
        get_subcats($row["id"], $lvl); 
        }
         $catids = "'".$ParentID."', ".$ID1;
         
         $catids = substr($catids, 0, -2);
         return $catids;
         
    }
}

/* Составление списка статей на основе полученного ранее списка категорий */

function drawlist($catid){
global $link; 

    $catsids = get_subcats($catid, 0);
    $result = mysql_query("SELECT * FROM content WHERE catid IN (".$catsids.") ORDER BY title", $link);
    while ( $row = mysql_fetch_assoc($result) ) {
    echo $row['title'].'<br>'; //Заголовок статьи
    }
}



Обе функции, если кому интересно. Уверен можно оптимизировать и довольно конкретно.

Это сообщение отредактировал(а) feosr - 6.4.2008, 21:20
PM MAIL WWW ICQ   Вверх
gibbzy
Дата 2.7.2008, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 25.1.2008

Репутация: нет
Всего: 3



http://newscript.ru/?q=node/369

только что вот сегодня такое делал ) 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1343 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.