Простой график на PHP и HTML

PHP  /  Tweaks  /  Фриланс  




Делая один интересный проект для клиента с фриланса, натолкнулся на задачу создать диаграмму для медленных запросов MySQL, и решил поделиться, может кому-то пригодится.

Забегая вперед, покажу картинку что у нас должно получиться в итоге...


Приведу краткий скрипт, который рисует такое чудо:

<?php

 function rrange ($val, $v1, $v2)
  {
    if (($val >= $v1) and ($val < $v2))
      {
        return TRUE;
      }
    else
      {
        return FALSE;
      }
  }
 
 function drawdiv ($val)

  {
// Запускаем цикл от одного, до значения колонки. Затем в зависимости от текущего значения переменной цикла, будем подставлять цвета
    for ($i = 1; $i < $val; $i++)
      {
        if (rrange($i, 0, 2))
          {
            $col = "#00aa00";
          }
        if (rrange($i, 2, 4))
          {
            $col = "#00bb00";
          }
        if (rrange($i, 4, 6))
          {
            $col = "#00dd00";
          }
        if (rrange($i, 6, 8))
          {
            $col = "#88dd00";
          }
        if (rrange($i, 8, 10))
          {
            $col = "#bbdd00";
          }
        if (rrange($i, 10, 12))
          {
            $col = "#dddd00";
          }
        if (rrange($i, 12, 14))
          {
            $col = "#eedd00";
          }
        if (rrange($i, 14, 16))
          {
            $col = "#ffdd00";
          }
        if (rrange($i, 16, 20))
          {
            $col = "#ffcc00";
          }
        if (rrange($i, 20, 24))
          {
            $col = "#ffbb00";
          }
        if (rrange($i, 24, 28))
          {
            $col = "#ffaa00";
          }
        if (rrange($i, 28, 32))
          {
            $col = "#ff9900";
          }
        if (rrange($i, 32, 50))
          {
            $col = "#ff8800";
          }
        if (rrange($i, 50, 100))
          {
            $col = "#ff7700";
          }
        if (rrange($i, 100, 150))
          {
            $col = "#ff6600";
          }
        if (rrange($i, 150, 200))
          {
            $col = "#ff5500";
          }
        if (rrange($i, 200, 250))
          {
            $col = "#ff3300";
          }
        if (rrange($i, 250, 1300))
          {
            $col = "#ff0000";
          }
        $h = $i * 3;
        // Рисуем квадратик
        echo "<div style='box-shadow: 0 0 10px $col;position: absolute; width: 3px; height: 2px; background-color: $col; bottom: $h" . "px;'></div>";
      }
  }
// Рисуем обрамляющий div  
echo "<div style='width: 1000px; height: 602px; vertical-align: bottom; position: relative; overflow: auto; border-left: 1px solid #aaa;'>";
$x=0;
 for ($i = 1; $i <= 150; $i++)
      {
            $x = $x + 5;
           // Рисуем собственно вертикальную колонку шириной в 4 пикс, и с шагом каждые 5 пикс
           echo "<div style='background: none;left: $x" . "px; position: absolute; bottom:0; float: left; width: 4px; height: 600px;'>";
           // Заполняем ее красивыми разноцветными квадратиками, генерируя значения на лету. Чем выше значение - тем краснее квадратик
           drawdiv(rand(3,200));
           echo "</div>";
      
      }
echo "</div>";
?>

 

Как видите, ничего сложного нет, скрипт не использует ни одну экзотическую библиотеку, выводя все средствами HTML и CSS. И может быть оптимизирован, если вы обладаете знаниями PHP чуть выше меня 


Удачного вам программирования!




Метки текста:


http://minidevices.info/images/ava.png
http://minidevices.info/images/ava.png
2016-03-20 00:11
root 20 марта в 00:11  0 

919
2016-03-20 00:11


Комментировать



Опубликовать запись