Главная :: Форум :: Web ClipArt :: Поиск :: Статистика :: Топ 10 :: Публикация :: Рекомендовать
netadmin.ws
Панель управления Регистрция свободна! Календарь Список пользователей Часто задаваемые вопросы Поиск по форуму Архив скриптов Главная   
Форум сетевых администраторов
Форум сетевых администраторов Форум сетевых администраторов » Программирование » PHP » Выборка из БД и генерация Html таблицы
Предыдущая тема     Следующая тема
Автор
Тема    Новая тема     Ответить на эту тему
he][es
Участник+
Средний рейтинг: 4.07 | Оценок: 30
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: he][es в оф-лайне
Выборка из БД и генерация Html таблицы [сообщение #79432]

Поможите! Мозги пухнут...
Задача: есть 3 таблицы (2 "справочника" и 1 с данными)
Необходимо вывести их на экран причём по горизонтали строки 1огосправочника, по вертикали 2ого а данные соответственно в центре.
Те. таблица с данными это
id | id_name | id_type | summ
(где соответственно id_name и id_type это idшники 2х справочных таблиц) НО таблицы у нас не простые! Они древовидные!
Ну да хрен бы с ними! Как мне это наиболее красивым образом в HTML то табличку вывести, да ещё и с наименьшими затратами?..

Придумал такую муть:

PHP:


$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>&nbsp;',$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>&nbsp;',$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();



Но чего-то меня от этой конструкции подташнивает!.. Всё как то "гнило" сделано, слишком много "хаков" и не элегантно...
Не подскажете чего умного?.. Уж очень не хочется обращаться к БД в цикле... Перебирая сначала один, а потом второй справочники...

(дело в том, что в этой таблице ещё и строки и столбцы прятать придётся, но это ява, это я отдельный топ создам.)

__________________
Админ - вождь Апачей...

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 10-11-2005 19:34
Нажмите сюда для просмотра профайла he][es Отправить Персональное сообщение he][es Найти сообщения от he][es Добавить he][es в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
he][es
Участник+
Средний рейтинг: 4.07 | Оценок: 30
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: he][es в оф-лайне
[сообщение #79495]

Господа!.. Поможите люди добрые!
Свихнусь скоро...

__________________
Админ - вождь Апачей...

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 15-11-2005 12:27
Нажмите сюда для просмотра профайла he][es Отправить Персональное сообщение he][es Найти сообщения от he][es Добавить he][es в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Xrobak
Участник+
Средний рейтинг: 4.53 | Оценок: 15
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Mar 2004
Место проживания: Житомир
Публикаций: 632
Статус: Xrobak в оф-лайне
[сообщение #79499]

может тебе одна из статей поможет чем-то:
_http://phpclub.ru/detail/article/2002-06-03
_http://phpclub.ru/detail/article/db_tree

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 15-11-2005 14:17
Нажмите сюда для просмотра профайла Xrobak Отправить Персональное сообщение Xrobak Посетить домашнию страничку Xrobak! Найти сообщения от Xrobak Добавить Xrobak в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
he][es
Участник+
Средний рейтинг: 4.07 | Оценок: 30
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: he][es в оф-лайне
[сообщение #79501]

Спасибо конечно за помощь... Но как работают деревья я знаю...
Вопрос в другом... как их красивее вывести...

__________________
Админ - вождь Апачей...

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 15-11-2005 17:15
Нажмите сюда для просмотра профайла he][es Отправить Персональное сообщение he][es Найти сообщения от he][es Добавить he][es в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Xel'[Naga]
Участник

Зарегистрирован: Aug 2003
Место проживания: г. Зеленогорск
Публикаций: 76
Статус: Xel'[Naga] в оф-лайне
[сообщение #79504]

Может что-нить наподобии проводника? Имхо удобно когда сильно много вложений. Типа с плюсиками и всё такое =)

__________________
Всего хорошего.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 15-11-2005 19:47
Нажмите сюда для просмотра профайла Xel'[Naga] Отправить Персональное сообщение Xel'[Naga] Найти сообщения от Xel'[Naga] Добавить Xel'[Naga] в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
he][es
Участник+
Средний рейтинг: 4.07 | Оценок: 30
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: he][es в оф-лайне
[сообщение #79509]

Xel'[Naga] ну что то на подобе и нужно. НО в виде таблицы!.. По др. не получится

__________________
Админ - вождь Апачей...

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 16-11-2005 06:44
Нажмите сюда для просмотра профайла he][es Отправить Персональное сообщение he][es Найти сообщения от he][es Добавить he][es в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
polo
Администратор
Средний рейтинг: 4.77 | Оценок: 106
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус: polo в оф-лайне
[сообщение #79524]

Я например при использовании деревьев, сначало создаю массив типа:
массив[уникид] = набор записи
и другой массив:
массив1[уникид - родительская][] = уникид - подкатегории

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

__________________
Всегда есть решение.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 17-11-2005 12:04
Нажмите сюда для просмотра профайла polo Отправить Персональное сообщение polo Посетить домашнию страничку polo! Найти сообщения от polo Добавить polo в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
he][es
Участник+
Средний рейтинг: 4.07 | Оценок: 30
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: he][es в оф-лайне
[сообщение #79527]

polo я вот тоже "умозрительно" пришёл к подобному варианту. Но возникла какая то фигня при
array_title[] = 5;
он упорно выдает ошибку JS... Т.е. нужно обязательно нумеровать все элементы?..

__________________
Админ - вождь Апачей...

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 17-11-2005 14:38
Нажмите сюда для просмотра профайла he][es Отправить Персональное сообщение he][es Найти сообщения от he][es Добавить he][es в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
polo
Администратор
Средний рейтинг: 4.77 | Оценок: 106
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус: polo в оф-лайне
[сообщение #79528]

ну для JS нужно генерировать массив совместимый с JS.

__________________
Всегда есть решение.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 17-11-2005 16:25
Нажмите сюда для просмотра профайла polo Отправить Персональное сообщение polo Посетить домашнию страничку polo! Найти сообщения от polo Добавить polo в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя



Формат времени GMT. Текущее время 00:46.
Новая тема   Ответить на эту тему [ Версия для печати Печать | Отправить эту страницу другу/знакомому! Отправить | Получать уведомления об обновлении этой темы Подписка ] Предыдущая тема     Следующая тема
Навигация по форуму:
Оценка темы:

Правила форума:
Вы не можете создавать новые темы.
Вы не можете отвечать на существующие темы.
Вы не можете прикреплять файлы.
Вы не можете редактировать свои сообщения.
HTML теги выкл.
Спец. код вкл.
Смайлики вкл.
[IMG] тег выкл.
 

Page generated in 0.86139202 seconds (99.03% PHP - 0.97% MySQL) with 23 queries.


  Главная :: Форум :: Web ClipArt :: Поиск :: Статистика :: Топ 10 :: Публикация :: Рекомендовать
©NetAdmin.ws, 2001-2026.
Powered by: vBulletin
Copyright ©2000, 2001, Jelsoft Enterprises Limited.