Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите сделать вывод данных из базы данных MySQL в PHP в виде дерева

8.3K
16 ноября 2004 года
AlexDJ
8 / / 16.11.2004
У нас в сети решили сделать портал-базу по рефератам. Все я сделал остались две траблы, про первую я здесь и пишу.
Итак, имеется база с названием 'referats'. В ней есть таблицы: {cat [id, name, info]; news [id, data, title, text]; refs [id, scat_id, title, type_id, type, descr, date, pages, comm]; scat [id, cat_id, name]; types [id, name]}. Таблицы отмечены {}, поля в них - [] :)
Задача такая: нужно организовать на странице вывод вывод работ по категориям в таком виде.
Сверху должна быть шапка: все предметы, А-Б, В-Г, Д-Е, Ж-З, И-К, Л-М, Н-О, П-Р, С-Т , У-Ф, Х-Ч, Ц-Я
Дальше само тело вывода: тут должно быть дерево, в котором должны быть выведены категории (cat [name]), причем, если у категории есть подкатегории (то есть в scat есть ссылка на данную категорию в cat - например, scat [cat_id = 7] означает, что в категории cat [id] = 7 есть подкатегории в таблице scat с полем [cat_id] = 7), то слева от категории должен быть "+" и при нажатии на категорию, она бы раскрывалась в виде дерева, меняла цвет на красный, и под ней появлялись бы подкатегории и "+" менялся бы на "-". Соответственно, все наоборот при закрытии.
Немного подробнее о выводе дерева. Как уже, наверное, понятно, дерево должно выводится в зависимости от запроса из шапки, то есть по алфавитному порядку (или сразу все, в зависимости от выбора). То есть, нажали, допустим, на Ж-З - выведется дерево из категорий, начинающихся на Ж и З и т.д., нажали на П-Р - из категорий, начинающихся на П-Р. По умолчанию, при открытии страницы, должны выводиться категории А-Б.Что касается ссылок. Категории должны иметь ссылки в виде /?mode=cat&id=7 (где ID - это cat [id]), подкатегории - в виде /?mode=item&id=7&sid=1 (где ID - это cat [id], sid - это scat [id]), работы - в виде /?mode=info&id=386 (где ID - это refs [id]).
Причем, есть еще один нюанс: под деревом должна быть строка: все работы, курсовые, рефераты, контрольные, дипломы, доклады, отчеты. Рядом с этими словами должны быть checkbox’ы, при выборе которых в дереве должны отображаться категории/подкатегории, имеющие внутри себя ТОЛЬКО отмеченные работы. Кстати, это {types [name]}.
При выборе категории (если она без подкатегорий) или подкатегории, должна открыться новая страница, скажем, spisok.php вместо данной (у меня это все открывается внутри таблицы), на которой сверху наше дерево с выбранным буквенным (или общим) разделом, а под ним собственно, таблица, в которой работы из выбранной категории (подкатегории).
Причем, есть еще один нюанс: под деревом должна быть строка: все работы, курсовые, рефераты, контрольные, дипломы, доклады, отчеты. Рядом с этими словами должны быть checkbox’ы, при выборе которых в дереве должны отображаться категории/подкатегории, имеющие внутри себя ТОЛЬКО отмеченные работы. Соответственно, в таблице должны отображаться, только те работы, которые сооответствуют выбранному {types [name]}.
Теперь подробней о структуре таблицы. Сверху таблицы - шапка, в которой слева должны быть подкатегории в выбранной категории (если таковые имеются, иначе NULL), справа должны быть номера страниц (поскольку работ ОЧЕНЬ много, вывод нужно сделать постраничным).
Далее, шапка самой таблицы. Таблица должна состоять из 5 колонок: ID (refs [id]), тема работы (refs [title]), тип работы (refs [type]), объем (refs [pages]), дата (refs [date]). В таблице, собственно, вывод запроса.
Под таблицей шапку, аналогичная той, что над таблицей: шапка, в которой слева должны быть подкатегории в выбранной категории (если таковые имеются, иначе NULL), справа должны быть номера страниц (поскольку работ ОЧЕНЬ много, вывод нужно сделать постраничным).


Вот такая вот задачка. Подобные дерева ввода данных я видел, здесь лишь усложнена структура. Поскольку сам я ч этими деревьями еще не работал, прошу хэлпа, чтобы сразу помогли написать итоговый код. Я думаю, что данный код можно будет потом выложить в open source’ы в интернете, т.к. я думаю, что со временем все сталкиваются с необходимостью реализации подобных проблем.
Я уже неделю не спал - делал сам портал. Осталось эти два скрипта: дерево и поиск, а я хочу спать :((( Зато, если поможете, я получу автомат по информатике :)))

ЗЫ Если что - меня можно найти в асе: 125659225, или в ИРКе на 213.24.73.20:6667. Мой ник AlexDJ
ЗЫ2 Заранее огромный фэнкс и респект тому, кто сможет помочь.
8.3K
20 ноября 2004 года
AlexDJ
8 / / 16.11.2004
Вот снова и я :)
Итак за то время, пока меня не было, я умудрился сделать почти все сам. :) Осталась лишь одна трабла.

Итак, проблема осталась такая:

К этой проблеме я даже пока не знаю, как подступиться.
Под деревом должна быть строка: все работы, курсовые, рефераты, контрольные, дипломы, доклады, отчеты. Рядом с этими словами должны быть checkbox’ы, при выборе которых в дереве должны отображаться категории/подкатегории, имеющие внутри себя ТОЛЬКО отмеченные работы.

Вот строка с checkbox'ами (это я сделал сам Ж-) ):

<td>Все работы
<input name="chkall" type="checkbox" value="checkbox" checked> </td>
<td>Курсовые
<input type="checkbox" name="chk1" value="checkbox"> </td>
<td>Рефераты
<input type="checkbox" name="chk2" value="checkbox"> </td>
<td>Контрольные
<input type="checkbox" name="chk3" value="checkbox"> </td>
<td>Дипломы
<input type="checkbox" name="chk4" value="checkbox"> </td>
<td>Доклады
<input type="checkbox" name="chk5" value="checkbox"> </td>
<td>Отчеты
<input type="checkbox" name="chk6" value="checkbox"> </td>

И что делать дальше, я понятия не имею :(
Дальше нужно проверить, какие checkbox'ы отмечены, а какие нет, и в зависимости от этого по ссылке из "дерева" должна открываться страница только с выбранными типами работ. Как это сделать - я даже не представляю. Буду признателен, если тут вы сможете помочь.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог