Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2019, 14:36   #1
dima.ul
Новичок
Джуниор
 
Регистрация: 13.05.2019
Сообщений: 14
По умолчанию не пойму как вставить данный код в HTML без ошибки

Доброго времени суток

есть код на PHP, код берет данные с БД и рисует по этим данным график

но я не могу вставить этот код в HTML , что бы этот график выводился на странице где нужно

код ошибки

Warning: Cannot modify header information - headers already sent by

у меня нет опыта на PHP, поэтому прошу сильно не пинать )

заранее спасибо за помощь ...


Код:
<?php
    //вспомогательная функция для определения цвета
    function ImageColor($im, $color_array)
    {
      return ImageColorAllocate(
      $im,
      isset($color_array['r']) ? $color_array['r'] : 0, 
      isset($color_array['g']) ? $color_array['g'] : 0, 
      isset($color_array['b']) ? $color_array['b'] : 0 
      );
    }

    $host = 'localhost';  // Хост, у нас все локально
    $user = 'test';    // Имя созданного вами пользователя
    $pass = 'password'; // Установленный вами пароль пользователю
    $db_name = 'test';   // Имя базы данных
    
    $link = mysqli_connect($host, $user, $pass, $db_name); // Соединяемся с базой
    
    if (!$link) {
      echo 'Не могу соединиться с БД. Код ошибки: ' . mysqli_connect_errno() . ', ошибка: ' . mysqli_connect_error();
      exit;
    }

    $data = array();

    //Получаем данные
    $sql = mysqli_query($link, 'SELECT `temp1` FROM `sensor_data`');
    while ($sql_data = mysqli_fetch_array($sql)) 
    {
      $data[] = (float)$sql_data['temp1'];
    }
 
    //параметры изображения  
    $width   = 1000; //ширина
    $height  = 500; //высота
    $padding = 20;  //отступ от края 
    $step = 1;      //шаг координатной сетки
 
    //создаем изображение
    $im = @ImageCreate ($width, $height) 
      or die ("Cannot Initialize new GD image stream");
 
    //задаем цвета, которые будут использоваться при отображении картинки
    $bgcolor = ImageColor($im, array('r'=>255, 'g'=>255, 'b'=>255)); 
    $color = ImageColor($im, array('b'=>175)); 
    $green = ImageColor($im, array('g'=>175)); 
    $gray = ImageColor($im, array('r'=>175, 'g'=>175, 'b'=>175)); 
 
    //определяем область отображения графика
    $gwidth  = $width - 2 * $padding; 
    $gheight = $height - 2 * $padding; 
 
    //вычисляем минимальное и максимальное значение  
    $min = min($data);
    $min = floor($min/$step) * $step;
    $max = max($data);
    $max = ceil($max/$step) * $step;
 
    //рисуем сетку значений
    for($i = $min; $i < $max + $step; $i += $step)
   {
      $y = $gheight - ($i - $min) * ($gheight) / ($max - $min) + $padding;
      ImageLine($im, $padding, $y, $gwidth + $padding, $y, $gray);
      ImageTTFText($im, 8, 0, $padding + 1, $y - 1, $gray, 'verdana.ttf', $i);
    }
 
    //отображение графика
    $cnt = count($data);
    $x2 = $padding;
    $i  = 0;
 
    //стоит отметить, что начало координат для картинки находится 
    //в левом верхнем углу, что определяет формулу вычисления координаты y
    $y2 = $gheight - ($data[$i] - $min) * ($gheight) / ($max - $min) + $padding;
 
    for($i = 1; $i < $cnt; $i++)
    {
      $x1 = $x2;
      $x2 = $x1 + (($gwidth) / ($cnt - 1));
      $y1 = $y2;
      $y2 = $gheight - ($data[$i] - $min) * ($gheight) / ($max - $min) + $padding;
 
      //Рисуются две линии, чтобы сделать график более заметным      
      ImageLine($im, $x1, $y1, $x2, $y2, $color);
      ImageLine($im, $x1 + 1, $y1, $x2 + 1, $y2, $color);
    }
 
    //Отдаем полученный график браузеру, меняя заголовок файла
    header ("Content-type: image/png");	
    ImagePng ($im);

?>

______________________
Используйте тег [CODE] (кнопка [CODE] в форме сообщения) при вставке кода на форум. Подробнее в FAQ

Последний раз редактировалось Serge_Bliznykov; 13.05.2019 в 14:40.
dima.ul вне форума Ответить с цитированием
Старый 13.05.2019, 14:45   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

1. Вы разделом не ошиблись? Фриланс - работа(помощь) за деньги
2. в ошибке четко английским сказано в чем дело - вывод в заголовок до того как послали header
3. причин может быть множество- надо смотреть... начиная от правильной кодировки файла и непечатных символов, заканчивая выводом каких либо ошибок до того как послан заголовок
ADSoft вне форума Ответить с цитированием
Старый 13.05.2019, 14:50   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
1. Вы разделом не ошиблись? Фриланс - работа(помощь) за деньги
я перенёс ваш пост из раздела Фриланс в эту тему.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.05.2019, 14:55   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Не вставляйте этот код на страницу, сохраняйте в отдельном файле и вызывайте.
p51x вне форума Ответить с цитированием
Старый 13.05.2019, 15:10   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
е вставляйте этот код на страницу, сохраняйте в отдельном файле и вызывайте.
точно так.
у меня ваш пример отработал:
image2.zip

а если этот график нужно показать на странице, то так и показывайте:
Код:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Пример страницы с графиком</title>
</head>

<body>
<p>Пример текста.</p>
<hr>
<p>А это график</p>
<img src="/image2.php" />
</body>
</html>

Последний раз редактировалось Serge_Bliznykov; 13.05.2019 в 15:15.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.05.2019, 15:56   #6
dima.ul
Новичок
Джуниор
 
Регистрация: 13.05.2019
Сообщений: 14
По умолчанию

не отображает график
Изображения
Тип файла: png Снимок.PNG (6.3 Кб, 54 просмотров)
dima.ul вне форума Ответить с цитированием
Старый 13.05.2019, 16:00   #7
dima.ul
Новичок
Джуниор
 
Регистрация: 13.05.2019
Сообщений: 14
По умолчанию

подскажите пожалуйста, что не так делаю
dima.ul вне форума Ответить с цитированием
Старый 13.05.2019, 16:10   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от dima.ul Посмотреть сообщение
подскажите пожалуйста, что не так делаю
нужен веб-сервер, который и будет выполнять PHP код.

Как Вы получали ошибку выполнения PHP кода?
Если Вы эту ошибку получали, значит, сервер с PHP у Вас есть?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.05.2019, 16:25   #9
dima.ul
Новичок
Джуниор
 
Регистрация: 13.05.2019
Сообщений: 14
По умолчанию

web server Apache

php код отрабатывает нормально, но который вы код прислали не работает
dima.ul вне форума Ответить с цитированием
Старый 13.05.2019, 16:26   #10
dima.ul
Новичок
Джуниор
 
Регистрация: 13.05.2019
Сообщений: 14
По умолчанию

выводит просто пиктограмму картинки
dima.ul вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вставить данный из другого листа в значениях Iskin Microsoft Office Excel 11 22.12.2017 08:25
Вставить php в html AlexDn PHP 5 28.10.2013 22:38
ошибки не пойму((. Таблично управляемый синтаксический разбор сверху вниз Huligan799 Общие вопросы Delphi 6 05.12.2012 10:54
Здравствуйте. Попытался написать программу метод резолюции на прологе, но программа мне выдает ошибки не пойму почему. jeka1 Помощь студентам 0 08.05.2012 12:27
Покритикуйте код. Интересно мнение. Пойму ошибки. Проект и подробности в теме... Casper-SC Общие вопросы .NET 2 28.01.2011 07:22