Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [PHP] Динамическое создание цвета бэкграунда ячеек, по каким либо данным. 
:(
    Опции темы
Guedda
Дата 30.11.2007, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


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

Репутация: 6
Всего: 78



В общем, ситуация такова. Есть матрица чисел. Допустим, диапазон значений в этой матрице от 10 до 2510. Так вот мне необходимо эту матрицу закрасить цветами (приблизительно одинаковыми), но только этих цветов должно быть примерно 5. Так вот как мне это осуществить с помощью пхп?
Вот пример, что должно получиться. На том сайте цвет берется от средней стоимости за 1 кв. м. http://rielti.ru/statistic.htm

Заранее благодарен за ответ. С меня плюсик и море позитива ;)


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
skyboy
Дата 30.11.2007, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


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

Репутация: 5
Всего: 260



т.е. тебе  надо перейти от непрерывного диапазона(учитвая, что числа могут быть и дробными) "10 -> 2510" к дискретному диапазону "1-> 5", чтоб потом использовать хначение из этого дискретного диапазона, как индекса для массива, да?
тогда так:
Код

colors   <= array(#FFF, #EEE, #999, #555, #222)

minVal     <= 10
maxVal    <= 2510

minInd    <= 1
maxInd   <= 5

curVal     <= 1280.5555 // текущее значение

curInd     <= trunc((curVal - minVal) / (maxVal - minVal) * (maxInd - minInd)) + minInd

curColor  <=  colors[curInd]

типа, алгоритм smile
PM MAIL   Вверх
Guedda
Дата 30.11.2007, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


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

Репутация: 6
Всего: 78



К сожалению, твой алгоритм мне не подходит, так как скрипт просто не обрабатывается :( Есть ли другие алгоритмы???


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
skyboy
Дата 30.11.2007, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


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

Репутация: 5
Всего: 260



Цитата(Guedda @  30.11.2007,  16:54 Найти цитируемый пост)
 так как скрипт просто не обрабатывается

в смысле? я ж тебе не код привел, а последовательность действий...
PM MAIL   Вверх
Guedda
Дата 2.12.2007, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


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

Репутация: 6
Всего: 78



Цитата(skyboy @  30.11.2007,  19:10 Найти цитируемый пост)
в смысле? я ж тебе не код привел, а последовательность действий... 

Я понимаю. Но эта последовательность действий, почему то не срабатывает. И, тем более, минимальное и максимальное значение не известно ;)


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Guedda
Дата 2.12.2007, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


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

Репутация: 6
Всего: 78



Всё заработало. Вот код:
Код

$colors = array ("#fff8a9","#fff19d","#ffe98f", "#ffe68a","#ffd66e","ffd368");
$minVal = min($m_sum_arr);
$maxVal = max($m_sum_arr);
$minInd = 1;
$maxInd = 6;

$curVal = $m_sum;
$curInd = intval(($curVal - $minVal) / ($maxVal - $minVal) * ($maxInd - $minInd)) + $minInd;
$curColor = $colors[$curInd];



--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

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


 




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


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

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