![]() |
Показаны 9 сообщений на этой странице |
Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- Выборка из БД и генерация Html таблицы (http://netadmin.ws/forum/showthread.php?threadid=11201)
Выборка из БД и генерация Html таблицы
Поможите! Мозги пухнут...
Задача: есть 3 таблицы (2 "справочника" и 1 с данными)
Необходимо вывести их на экран причём по горизонтали строки 1огосправочника, по вертикали 2ого а данные соответственно в центре.
Те. таблица с данными это
id | id_name | id_type | summ
(где соответственно id_name и id_type это idшники 2х справочных таблиц) НО таблицы у нас не простые! Они древовидные!
Ну да хрен бы с ними! Как мне это наиболее красивым образом в HTML то табличку вывести, да ещё и с наименьшими затратами?..
Придумал такую муть:
$rashodi = ''; $col = '';
$result = $db->query("SELECT title, level, cleft, cright FROM structura_rashodov ORDER BY cleft ASC");
$kol_vo = $result->numRows(); $min=$max=0;
while ($row = $result->fetchRow(DB_FETCHMODE_ASSOC)) { // Генерим заголовок таблицы
if($row['level'] > 1) { // Столбцы гасходы которых по уровню вложенности больше единицы по умолчанию прячем
$rashodi .= '<td id="td_'.$row['level'].'_'.$row['cleft'].'" onClick="show_columns('.$row['level'].', '.$row['cleft'].', '.$row['cright'].');">l'.$row['level'].$row['title'];
$col .= '<col id="'.$row['level'].'_'.$row['cleft'].'" style="display: none; visibility: collapse;">';
} else {
$rashodi .= '<td id="td_'.$row['level'].'_'.$row['cleft'].'" onClick="show_columns('.$row['level'].', '.$row['cleft'].', '.$row['cright'].');">'.$row['title'];
$col .= '<col id="'.$row['level'].'_'.$row['cleft'].'">';
}
if($min > $row['cleft']) { $min = $row['cleft']; }
if($max < $row['cright']) { $max = $row['cright']; }
}
$result->free();
$result = $db->query("SELECT *, structura_kks.title AS structura_kks_title FROM limits INNER JOIN structura_kks ON limits.structura_kks_id = structura_kks.id INNER JOIN structura_rashodov ON limits.structura_rashodov_id = structura_rashodov.id ORDER BY structura_kks.cleft, structura_rashodov.cleft");
$tr = '';
while ($row = $result->fetchRow(DB_FETCHMODE_ASSOC)) {
$structura_rashodov = $row['structura_rashodov_id'];
if (isset($structura_kks) && $row['structura_kks_id'] == $structura_kks) {
$tr .= '<td>'.$row['to_year_total']; $td_kol_vo--;
} else {
$structura_kks = $row['structura_kks_id'];
if (isset($td_kol_vo) && $td_kol_vo != $kol_vo) $tr .= str_repeat('<td> ',$td_kol_vo); // Добиваем таблицу пустыми ячейками если для структ. подразделения не указаны какие-то расх.статьи
// Вот тут то и нашёл баг!
// Суммы расходов она будет лепить подряд... Без соотношения со столбцами... :/
$td_kol_vo = $kol_vo;
$tr .= '<tr><td>'.$row['structura_kks_title'].'<td>'.$row['to_year_total'];
$td_kol_vo--;
}
}
if (isset($td_kol_vo) && $td_kol_vo != $kol_vo) $tr .= str_repeat('<td> ',$td_kol_vo);
$parser->site_body .= '<table style="empty-cells: show;" border=1 id="limit_list"><col>'.$col.'
<thead><tr><td>Структура ТО'.$rashodi.'
<tbody>'.$tr.'</tbody>
</table>';
$result->free();
__________________
Админ - вождь Апачей...
Господа!.. Поможите люди добрые!
Свихнусь скоро...
__________________
Админ - вождь Апачей...
может тебе одна из статей поможет чем-то:
_http://phpclub.ru/detail/article/2002-06-03
_http://phpclub.ru/detail/article/db_tree
Спасибо конечно за помощь... Но как работают деревья я знаю...
Вопрос в другом... как их красивее вывести...
__________________
Админ - вождь Апачей...
Может что-нить наподобии проводника? Имхо удобно когда сильно много вложений. Типа с плюсиками и всё такое =)
__________________
Всего хорошего.
Xel'[Naga] ну что то на подобе и нужно. НО в виде таблицы!.. По др. не получится
__________________
Админ - вождь Апачей...
Я например при использовании деревьев, сначало создаю массив типа:
массив[уникид] = набор записи
и другой массив:
массив1[уникид - родительская][] = уникид - подкатегории
Потом используя функцию которая проходит по массив1 создает любое дерево.
__________________
Всегда есть решение.
polo я вот тоже "умозрительно" пришёл к подобному варианту. Но возникла какая то фигня при
array_title[] = 5;
он упорно выдает ошибку JS... Т.е. нужно обязательно нумеровать все элементы?..
__________________
Админ - вождь Апачей...
ну для JS нужно генерировать массив совместимый с JS.
__________________
Всегда есть решение.
| Формат времени GMT. Текущее время 04:17. | Показаны 9 сообщений на этой странице |
Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.