![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Есть таблица абстрактного вида, строчки которой нужно раскрасить на четные-нечетные. Таблица хранится и формируется из базы, так что это нисколько не парсинг, а именно генерация. Задача усложняется тем, что некоторые строки могут быть с colspan'ами/rowspan'ами. Здравый смысл, говорит мне, что каждый столбик придется таким образом раскрашивать отдельно, пробежавшись по всем им сверху-вниз (благо бежать все равно придется при выводе), однако при этом желательно избегать продолжительной "шахматной раскраски" таблицы.
Моя лень советует мне сначала спросить совета у форума ![]() Кода - не надо, разве что на PHP звучит понятнее, чем на русском... идей, мыслей, пинков в нужном направлении вполне достаточно... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: -1 Всего: 17 |
то есть таблица не плоская? какая она, приведи пример? посмоти еще тут на javascript http://forum.vingrad.ru/forum/topic-261770.html |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
s0lman |
|
|||
![]() Белый и лохматый ![]() ![]() Профиль Группа: Участник Сообщений: 637 Регистрация: 1.11.2007 Где: Ukraine Репутация: 9 Всего: 29 |
ksnk, в самом деле, не проще ли это сделать js?
В статьях по JQuery что-то подобное было первым примером... -------------------- Когда я уже выучусь на волшебника? :( |
|||
|
||||
rMaveric |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 18.7.2003 Репутация: 3 Всего: 6 |
ksnk, Судя по приведенному отрывку у тебя происходит теление именно на категории в строках. И в категории может находится несколько элементов являющихся именно строками.
С этой точки зрения рекомендую тебе использовать следующие виды раскраски ------------------------------------------------------------------------------------------------- раздел (цвет А) | строка чет (Цвет Б) | строка нечет (цыет В) | строка чет (цвет Б) ------------------------------------------------------------------------------------------------- раздел (цвет А) | строка нечет (Цвет В) ------------------------------------------------------------------------------------------------- раздел (цвет А) | строка чет (Цвет Б) Таким образом для раскрашивания тебе необходимо давать стили не строке, а ячейкам не входящим в столбец раздела. и будет смотрется как надо. К примеру разделы все белые, а строки уже бледно розовыми и бледноголубыми ![]() -------------------- |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
rMaveric, Проблема в решении абстрактной задачи по раскраске абстрактной таблицы. В этом решении допускаются только 2 цвета и никакого разделения на "разделы", к сожалению нет. Rowspan'ы могут появится не только в первом столбце, но и во всех остальных.
Нужно не допускать одинаковой окраски в 3-х и более сверху/снизу-соседних ячейках. В моем примере - каждая нечетная строка получала свой цвет, от того ячейки с четным rowspan'ом получались одного цвета. Пока остановился на таком решении: -- каждая нечетная строка (элемент TR) получает дополнительный класс "odd" -- каждая четная строка (элемент TR) получает дополнительный класс "even" , как у меня уже и было. два класса от того, что потенциально бывают, наверное, еще и просто строки таблицы, которые просто нарисованы в шаблоне и окрашены по другому... Какие-нибудь характерные футеры или хидеры... Для каждой ячейки, обладающей четным rowspan, следующая за ней ячейка получит собственный класс 'invert'. вот, собственно и все. CSS, окрашивающий таблицу, получился таким
Ну и пример раскрашенной таблицы ![]() s0lman, На JavaScript'е этого делать не хочется, все равно уже окрашивается в PHP ![]() Это сообщение отредактировал(а) ksnk - 12.6.2009, 12:58 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: -1 Всего: 17 |
ksnk, а какая структура данных, ну логично будет записывать куда-то тот элмент последний который ты присвоил в предыдущий раз.... $plus, п отмо счетчик велить, получиться на оборот
|
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
gcc, У меня в системе вставляемый на страничку контент побит на элементы. Текст+Фото, список ссылок, галлерея, заголовок-якорь и так далее. Один из этих элементов - таблица. Вставляется таблица обычно так : В Excel'е (word, броузер) отмечается нужный набор ячеек, говориться "Copy". В Админке в поле текстового редактора, замаскированного под "особую кнопку", тыкается правая кнопка мышки и выбирается "Paste", после этого в текстовом редакторе оседает HTML в котором эта таблица нарисована, Он парсится, преобразуется во внутренне представление - таблица вставлена. Способ оказался настолько удобным, что юзеры пару месяцев не замечали, что у меня уже нельзя создать таблицу "с нуля", из-за накопившихся ошибок ;-)
Внутренне представление - массив строк, каждая строка - массив ячеек. Каждая ячейка - набор параметров. В каждой строке одинаковое количество ячеек, независимо от colspan-rowspan, просто некоторые ячейки помечаются как "затычки" и при рендеринге в html не выводятся. Так получается немного удобнее работать со строками - столбцами по номеру, удалить или скопировать. Так что что там такое вставил юзер - это его юзерово дело. Он может про-rowspan'ить несколько рядом находящихся ячеек и выделить из них группу будет нельзя. запоминать только один номер тоже нельзя, "длинных" ячеек потенциально может быть много ;-) gcc, В прнципе - я идею понял. предлагается "сдвигать" "цвето-четность" всей следующей ячейки. Это не особенно подходит, так как rowspan'ы это скорее исключение, чем правило. И "сдвигать" цвет всей строки из 10 элементов из-за одного первого элемента, значит "склеить" почти полностью пару соседних строк. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
rMaveric |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 18.7.2003 Репутация: 3 Всего: 6 |
ksnk, все хорошо, но не нравится в твоем алгоритме большая вероятность шахматных комбинаций...
Иными словами мне не нравится то, что у тебя в таблице последней "Экскаваторы-погрузчики" белые, а дальше вся строка идет серой, к томуже если возникнет в вышестоящей строке опять роуспан, то опять сместится раскраска... Не гут. Я правда не знаю насколько у тебя абстрактная задача для абстрактной таблицы... Но раскраска по строкам нужно в 99% только когда идет логика в строках. И не требуется групировать строки. -------------------- |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
rMaveric, Здесь требуется визуально разделить строки. Логически они делятся другими методами... Заголовки разделов или еще как... В общем это не дело этого алгоритма
![]() А что такое на моем втором примере "шахматная комбинация"? Это сообщение отредактировал(а) ksnk - 14.6.2009, 16:46 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
rMaveric |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 18.7.2003 Репутация: 3 Всего: 6 |
Ну... Вот допустим у тебя не 2 столбца, а 5. И предположим в 3м столбце ты объединишь роуспаном 2 ячейки последних в разделе "Транспорт для грузоперевозок." Тогда нижеидущая строка будет выглядеть следующей раскраской белый-серый-белый-серый, что-то мне подсказывает, что тебе так не надо. -------------------- |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Ну, не вижу в этом ничего особенно страшного, совершенства в мире нет ;-) Так как цель - визуальное разделение строк, то и так нормально.
В этом случае получатся "шашечки" на нижней строке, зато на следующей они пропадут, сменившись нормальной строковой раскраской. При этом ячейки одного цвета визуально "склеятся". Это - минусы. Так как склеятся ячейки в "узкой" строке, то это предполагается меньшим злом, чем если бы "склеились" "Большие" ячейки... А плюсом, imho, является то, что для такого случая все равно в 2 цвета прилично не раскрасить... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |