Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
3 / 2 / 1
Регистрация: 12.02.2013
Сообщений: 130

pChart, передача переменной из 1-го файла php в файл php построения графика, метод include

14.05.2013, 19:15. Показов 3020. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть два файла:
1-й: здесь запрашивается график т.е 2-й файл, а также из 1-го нужно передать переменную $name1 во 2-й файл для построения графика.
2-й: строит pChart график, в этот файл приходит переменная $name1 из 1-го файла.

В посте привожу простой пример 1-го файла. А в реале будет цикл, при каждой итерации будет передаваться новое значение $name1 из массива или БД, как результат надо построить несколько графиков.

Сталкнулся с проблемой. После запуска 1-го файла, на экран выводится пустая область графика с красным крестиком в левом верхнем углу(стандартная картинка когда не загружается изображение). Подсажите в чем проблема?

По отдельности все работает, переменная передается, все строится. Строится если запускаю 2-й файл, при этом в файле метод include 1.php - откуда берется переменная $name1.

1-й файл:

PHP
1
2
3
4
<?php
    $name1 = "'Пупкин'";
    echo  "<img src='2.php'>";
?>
2-й файл:

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
<?php
    ini_set('display_errors', true);
    error_reporting(-1);
 
    include("../pChart/class/pDraw.class.php");
    include("../pChart/class/pImage.class.php");
    include("../pChart/class/pData.class.php");
    
    include '1.php';
    
    $myData = new pData();
 
    $db = mysql_connect("localhost", "root", "xxxxxx");
    mysql_select_db("calc",$db);
 
    mysql_set_charset('utf8');
 
   
    $query = "select `date`, sum from calc_names where name = $name1 order by `date` asc";
    $result = mysql_query($query,$db);
 
    while($row = mysql_fetch_array($result))
        {
            $myData->AddPoints($row["date"],"date");
            $myData->AddPoints($row["sum"],"sum");
        }
    $myData->setAbscissa("date");
 
     /* Create a pChart object and associate your dataset */
    $myPicture = new pImage(1000,300,$myData);
 
    /* Choose a nice font */
    $myPicture->setFontProperties(array("FontName"=>"../pChart/fonts/calibri.ttf","FontSize"=>11));
 
    /* Define the boundaries of the graph area */
    $myPicture->setGraphArea(60,40,1000,250);
 
    /* Draw the scale, keep everything automatic */
    $myPicture->drawScale();
 
    /* Draw the scale, keep everything automatic */
    $myPicture->drawSplineChart();
 
    /* Render the picture (choose the best way) */
    $myPicture->autoOutput("pictures/2.png");
?>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.05.2013, 19:15
Ответы с готовыми решениями:

pChart, скрипт php построения графика в html тегах не работает, результат - кракозябры
pChart, скрипт php построения графика в html тегах не работает. Результат - кракозябры. Взял рабочий пример pChart, заключил его в html...

Передача переменной из PHP файла в метод класса
Здравствуйте! Нужно передать переменную($link) с details.php файла в метод подключенного класса(ParserClass), там с помощью регулярного...

Построение графика в PHP с использованием библиотеки PChart
Задача следующая: нужно построить график в PHP с помощью библиотеки PChart, который бы менялся при изменении входных данных, которые...

4
3 / 2 / 1
Регистрация: 12.02.2013
Сообщений: 130
16.05.2013, 10:46  [ТС]
Решил проблему так:
1. Создал функцию построения графика, и сохранения его в виде картинки;
2. Вызов всех картинок вторым php файлом.

Скрипт запрашивает из текст. файла данные вида:
Иванов, 21
Петров, 32
........
по фамилии запрашивает из базы данные, строит график из данных без вывода на экран, и сохраняет график как
картинку:

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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
    ini_set('display_errors', true);
    error_reporting(-1);
 
    include("../pChart/class/pDraw.class.php");
    include("../pChart/class/pImage.class.php");
    include("../pChart/class/pData.class.php");
    
    $f = fopen("names.txt", "r");
    
    function DrowChart($name1,$j)
        {
 
            $myData = new pData();
 
            $db = mysql_connect("localhost", "root", "xxxxxx");
            mysql_select_db("calc",$db);
 
            mysql_set_charset('utf8');
 
   
            $query = "select `date`, sum from calc_names where name = $name1 order by `date` asc";
            $result = mysql_query($query,$db);
 
            while($row = mysql_fetch_array($result))
                {
                    $myData->AddPoints($row["date"],"date");
                    $myData->AddPoints($row["sum"],"sum");
                }
            $myData->setAbscissa("date");
 
             /* Create a pChart object and associate your dataset */
            $myPicture = new pImage(1000,300,$myData);
 
            /* Choose a nice font */
            $myPicture->setFontProperties(array("FontName"=>"../pChart/fonts/calibri.ttf","FontSize"=>11));
 
            /* Define the boundaries of the graph area */
            $myPicture->setGraphArea(60,40,1000,250);
 
            /* Draw the scale, keep everything automatic */
            $myPicture->drawScale();
 
            /* Draw the scale, keep everything automatic */
            $myPicture->drawSplineChart();
 
            /* Render the picture (choose the best way) */
            //$myPicture->autoOutput("pictures/2.png");
            $myPicture->Render("$j.png");
        } 
     $j = 1;   
     while (!feof($f))
        {
 
        // Создать массив с запятой-разделителем
           $arrM = explode(",",fgets($f));
           foreach ($arrM as $key => $value)
                {
                    $arrM[$key] = iconv("windows-1251", "UTF-8",$value);
                }
           $name1 = "'".$arrM[0]."'";
           DrowChart($name1,$j);
           $j = $j + 1;        
       }
    fclose($f);
    mysql_close();  
?>
При запуске 2-го файла все картинки выводятся на экран:

<
PHP
1
2
3
4
5
6
7
8
9
?php
     $i = 1;
     while ($i < 10)
        {
 
            echo  "<img src='$i.png'>";
            $i++;
        }
?>
0
0 / 0 / 0
Регистрация: 22.04.2017
Сообщений: 18
13.06.2017, 16:47
привет. Подскажи, может сможешь помочь с построением графика. Я так понял, ты в этой библиотеке разобрался.
Суть в чем: пробую построить график (на основе библиотеки pChart) по пользователям, которые входят и выходят. Работа идет из под IIS 7 Windows 2008 R2, ну и база данных соответственно MS SQL 2012
Беда в том, что при отработке запроса массивы выводятся в нужном виде для построения графика, а вот при подключении в действие самой библиотеки внутрь этого файла, на вывод картинки нет, т.е. появляется дефолтная иконка, что картинка не найдена. При этом, если просто вывести статичную информацию отдельно в файле, в этой же директории, то график строится и показывается.
Полный код ниже.
Кликните здесь для просмотра всего текста

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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
    try {
    $con = new PDO("odbc:Driver={SQL Server Native Client 11.0};Server=SERVER;Database=mydb; Uid=user;Pwd=111111; charset=UTF-8");
    } catch(PDOException  $e ){
echo "Ошибка : ".$e;
}
    if ($con == true){
      echo "Соединение удалось!!!";
    }
 query = $con->query("SELECT TOP 15 [ChekID],[Time] FROM [mydb].[db].[info_User]");
$rows = $query->fetchALL(PDO::FETCH_ASSOC); 
 
$kol = array();
$vrem = array();
$enter = array();
$out = array();
 
foreach ($rows as $key => $value) {
 
$time = strtotime($value['Time']);
  
  if (!array_key_exists($time, $enter)){
    $enter[$time] = 0;
  }
  if (!array_key_exists($time, $out)){
    $out[$time] = 0;
  }
 
  if (!(in_array($time, $vrem))){
    
    $vrem[] = $time; //0 значение маассива времени
 
    $kol[$time] = 1; // массив kol с меткой массива vrem  
        
    if($value['BorderRoutingID'] == '1') {
      $enter[$time] = 1;  
    } else {
      $out[$time] = 1;
    }
 
        } else {
    $kol[$time] = $kol[$time] + 1;
  
    if($value['BorderRoutingID'] == '1') {
      if($enter[$time]){
        $enter[$time] = $enter[$time] + 1;
      } else {
        $enter[$time] = 1;  
      }
    } else {
      if($out[$time]){
        $out[$time] = $out[$time] + 1;
      } else {
        $out[$time] = 1;  
      }
    }
 
  } 
} 
  include("class/pData.class.php"); 
  include("class/pDraw.class.php"); 
  include("class/pImage.class.php"); 
 
   /* Create and populate the pData object */ 
   $MyData = new pData(); 
 
    $myData->addPoints($vrem,"vrem");
 
    $myData->addPoints($enter,"вход");
  
    $myData->addPoints($out,"выход");
 
  //Помещаем временной параметр на ось Х
   $myData->setAbscissa('время');
  // данные для оси У
   $myData->setSerieOnAxis('kol',1);
 
  //Даем название оси
    $myData->setXAxisName(0,'ДАТА');
    $myData->setXAxisDisplay(0,'ДАТА');
 
   $myData->setXAxisDisplay(AXIS_FORMAT_DATE,"d.m  H:i");
 
   $myData->setAxisName(0,'Количество');
   $myData->setAxisUnit(0," Чел. ");
    
    $myPicture = new pImage(1050,250,$myData);
    
    $myPicture->setFontProperties(array("FontName"=>"fonts/calibri.ttf","FontSize"=>"8"));
 
    $myPicture->setGraphArea(60,20,1000,200); 
  $myPicture->drawLegend(280,230,array("Style"=>LEGEND_NOBORDER,"Mode"=>LEGEND_HORIZONTAL)); 
 
  $myPicture->drawScale(array("XMargin"=>10,"YMargin"=>10,"Floating"=>TRUE,"DrawSubTicks"=>TRUE,"Mode"=>SCALE_MODE_ADDALL_START0));
 
  $myPicture->drawStackedAreaChart(array("DrawPlot"=>TRUE,"DrawLine"=>TRUE,"LineSurrounding"=>-20));
 
  $myPicture->setShadow(TRUE,array("X"=>1,"Y"=>1,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>10)); 
 
  $myPicture->autoOutput();
0
3 / 2 / 1
Регистрация: 12.02.2013
Сообщений: 130
15.06.2017, 13:14  [ТС]
Привет, я в этой библиотеке особо не разобрался, делал по примерам, сейчас даже не помню особо что я делал. Уже все забыл. В итоге я ее не использовал. Советую использовать библиотеку amcharts, то же делал по примерам, лучше получаются графики, и возможностей больше. Сейчас программированием не занимаюсь так что мне трудно тебе помочь.
0
0 / 0 / 0
Регистрация: 22.04.2017
Сообщений: 18
15.06.2017, 21:16
Все равно спасибо за совет. Буду пробовать что-то пока с этим, сроки уходят по этим графикам.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.06.2017, 21:16
Помогаю со студенческими работами здесь

Передача переменной из одного файла php в другой
Добрый день. Необходимо передавать данные из одного файла php Во второй, таким образом: Передать данные через метод POST или GET на...

PHP & MySQL передача в запрос SQL значения переменной из PHP
Здравствуйте. Мне необходимо передать в SQL-запрос значение любой переменной. Например, мне нужно передать в качестве значения...

Как прописать Если time() >= a1 и <= b1 то include 'c1.php'; include 'd1.php';
Сейчас для вывода информации по временному графику пользуюсь кодом $a = mktime(23,59,59,12,31,2013); if(time()&lt;$a){ include...

Передача значения из PHP файла в отдельный файл JS
Есть файл index.php в нем происходит магия и выводится переменная perem, которая уже является переменной JS. Как ее значение передать...

Передача файла или строки в файл на сервер PHP
Добрый день господа. Я работаю на стороне веб сервера PHP (хостинге) и дал доступ на запись в файл chmod 777, мой товарищ не может понять...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru