Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
21 / 21 / 2
Регистрация: 29.06.2009
Сообщений: 283

Логика закраски ячеек.

10.09.2009, 18:49. Показов 918. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Идея проста. В таблице есть список курсов. Так вот если курс вырос то ячейку закрасить красный если упал то ячейку закрасить зеленым.


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
$niz = '#00ff00';     //зеленый
$verh = '#ff0016' ;   //красный
 
    while ($line = mysql_fetch_array($result, MYSQL_BOTH)) {
    print "\t<tr>\n";
    //$line[0] dollar
    //$line[1] evro
    //$line[2] Дата
//    $line[0] В этом месте переменная получила уже новый курс за следующий день
 //$line0  В данной переменной сохранился вчерашний курс
    if ($line0 > $line[0])  // Тут мы сравниваем, если курс сегодня $line[0]  меньше чем вчера $line0
     {
     print "\t\t<td align=center bgcolor=$verh>".$line[0]."</td>\n";
     //Отображаем ячейку зеленной
     }
     else
     {
          print "\t\t<td align=center bgcolor=$niz>".$line[0]."</td>\n";
          //Отображаем ячейку красной
      }
 
     if ($line1 > $line[1])
     {
 
     print "\t\t<td align=center bgcolor=$verh>".$line[1]."</td>\n";
     }
     else
     {
          print "\t\t<td align=center bgcolor=$niz>".$line[1]."</td>\n";
      }
 
            if ($line[2] == date_time1("") ) //Если дата сегодня date_time1("") равна с датой в базе
             {
               print "\t\t<td bgcolor=#c49696  align=center>$line[2]</td>\n";
               //Выделить текущую ячейку другим цветом.
            }
           else
               {
               //или отобразить ее просто как есть.
                  print "\t\t<td align=center>$line[2]</td>\n";
               }
 
      $line0 = $line[0];  //запомнили курс сегодня
     $line1 = $line[1];
 
     print  "\t</tr>\n";
 
   }
Результат следующий.



Результат если приглядеться не правильный
Скажите где я ступил? или это вообще не так делается? Может флаг к базе добавить? Но это будет лишний запрос к базе
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.09.2009, 18:49
Ответы с готовыми решениями:

Логика работы ссылочных ячеек как в excel
Привет всем. Занимаюсь написанием редактора и потребовалось реализовать что-то вроде работы ссылок в excel. В общем так, на форме имеется...

алгоритм закраски
Помогите реализовать алгоритм закраски для выпуклого и монотонного многоугольника на delphi

Модель закраски
Подскажите пожалуйста, как рассчитывается цвет полигона фигуры для случая одного источника света?

4
Почетный модератор
 Аватар для Humanoid
11557 / 4352 / 452
Регистрация: 12.06.2008
Сообщений: 12,454
10.09.2009, 19:18
Такой способ подходит, если ты даты по возрастанию сделаешь... а т.к. они по убыванию, то надо вначале получить следующую строку, сравнить их, и только после этого вывести предыдущую... а текущую запомнить. Могу ошибаться, но что-то вроде такого:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
    if ($line = mysql_fetch_array($result, MYSQL_BOTH))
    {
      $old = $line;
    }
    $line = mysql_fetch_array($result, MYSQL_BOTH);
    do {
     print "\t<tr>\n";
 
     if ($old[0] > $line[0])  // Если более верхняя строка больше (т.е. курс вырос), то
     {
       print "\t\t<td align=center bgcolor=$verh>".$old[0]."</td>\n"; // выводим !предыдущее! значение
       //Отображаем ячейку зеленной (только по твоим переменным это красный цвет)
      }
      else
      {
        print "\t\t<td align=center bgcolor=$niz>".$old[0]."</td>\n";
        //Отображаем ячейку красной (опять же, вроде, наоборот)
      }
 
      if ($old[1] > $line[1])
      {
        print "\t\t<td align=center bgcolor=$verh>".$old[1]."</td>\n";
      }
      else
      {
        print "\t\t<td align=center bgcolor=$niz>".$old[1]."</td>\n";
      }
 
      if ($old[2] == date_time1("") ) //Если дата сегодня date_time1("") равна с датой в базе
      {
        print "\t\t<td bgcolor=#c49696  align=center>$old[2]</td>\n";
          //Выделить текущую ячейку другим цветом.
      }
      else
      {
               //или отобразить ее просто как есть.
        print "\t\t<td align=center>$old[2]</td>\n";
      }
 
      $old = $line; //запомнили курс сегодня
 
      print  "\t</tr>\n";
 
   } while ($line = mysql_fetch_array($result, MYSQL_BOTH));
Сдаётся мне, что я тут что-то перемудрил... если не будет работать, то не забивай голову.
0
21 / 21 / 2
Регистрация: 29.06.2009
Сообщений: 283
10.09.2009, 19:30  [ТС]
честно говоря не понял почему while ($line = mysql_fetch_array($result, MYSQL_BOTH)); оказался в конце
0
Почетный модератор
 Аватар для Humanoid
11557 / 4352 / 452
Регистрация: 12.06.2008
Сообщений: 12,454
10.09.2009, 21:11
Я плохо умею объяснять свои мысли... в общем, это из-за того, что первый мы берём отдельно в начале.
Например, у нас есть три строки. В самом начале мы берём первую строку и запоминаем её в массиве $old. Потом ещё считываем вторую строку в массив $line. После этого входим внутрь цикла, где вначале обрабатываем первую и вторую строки (при этом первую из массива $old отправляем клиенту), вторую из $line загоняем на место первой в $old. И в конце цикла считываем третью. Возвращаемся в начало цикла... сравниваем вторую и третью... вторую отправляем клиенту.
Точно, перемудрил. Получается, что последнюю строку мы клиенту так и не отправим. Похоже, её придется отдельно отправлять после цикла. Сравнивать уже ничего не надо, а только отправить.

Так что действительно, условие while можно вернуть как было раньше - в начале. Тогда перед началом цикла строка
$line = mysql_fetch_array($result, MYSQL_BOTH);
будет лишней.

Наверное, я только с толку сбиваю
0
21 / 21 / 2
Регистрация: 29.06.2009
Сообщений: 283
10.09.2009, 22:46  [ТС]
да, я еще больше запутался Ну ладно буду мудрить дальше....

Добавлено через 10 минут
попробую ставить флаг в базе
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.09.2009, 22:46
Помогаю со студенческими работами здесь

Определить количество информационных ячеек, проверочных ячеек и всего ячеек
В груповой код внесена двукратная ошибка. Передается 128 сообщений. Определить количество информационных ячеек, проверочных ячеек и всего...

Интересный эффект закраски
Здравствуйте. Может знаете как делается такой эффект? http://www.aaccent.ru/ Если двигать мышью в шапке сайта, то она закрашивается...

Проблем закраски движущихся объектов
закрашивает голыбым цветом от окна (ему никто не разреал) что делать?) uses graphABC; var x,y,i:integer; begin ...

Измерить скорость закраски треугольника
Здравствуйте. Помогите пожалуйста написать программу: Измерить скорость закраски треугольника при использовании функций языка Турбо...

Алгоритмы закраски (растеризация области)
Здравствуйте, подскажите, пожалуйста, как переделать &quot;Алгоритм построчной заливки области.pdf&quot; в &quot;Алгоритм заливки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru