X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Построение графиков средствами php
sc2r2bey
sc2r2bey
Topic Starter сообщение 20.6.2010, 19:22; Ответить: sc2r2bey
Сообщение #1


кто нибудь сталкивался?


--------------------
Заметки о разработке и не только
программирую web и для we
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 20.6.2010, 19:52; Ответить: ZiTosS
Сообщение #2


sc2r2bey, Что именно интересует? Графический пакет в PHP присутствует :rolleyes:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 20.6.2010, 20:32; Ответить: sc2r2bey
Сообщение #3


Меня интересует, как сделать график из базы данных.


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 20.6.2010, 20:46; Ответить: ZiTosS
Сообщение #4


sc2r2bey, А что у тебя хранится в БД? Позиции какие-либо?
Вообще бы стоило класс написать, хотя уже есть:
http://habrahabr.ru/blogs/webdev/30202/
http://www.softtime.ru/info/graph.php
http://forum.vingrad.ru/topic-71149.html

А вообще всё зависит от нужд и что и как хотим строить. Делать велосипеды, когда уже многое есть....


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 20.6.2010, 21:12; Ответить: sc2r2bey
Сообщение #5


мне нужен подобный график http://www.jqplot.com/tests/highlighterTests.php 1 вариант, но как увязать скрипт с php и mysql не понимаю пока.
скрипт вывода таблицы:
[php]<?php
// публикуем аналитику
echo "<div class=\"article\"><h3>Аналитика</h3>";

echo "<table id=\"tbl1\">
<thead>
<tr>
<td>месяц, сезон</td>
<td>июль</td>
<td>август</td>
<td>сентябрь</td>
<td>октябрь</td>
<td>ноябрь</td>
<td>декабрь</td>
<td>январь</td>
<td>февраль</td>
<td>март</td>
<td>апрель</td>
<td>май</td>
<td>июнь</td>
<td>всего</td>
</tr>
</thead>";

$result = mysql_query("SELECT COUNT(*) FROM `season`");
$posts = mysql_result($result,0);
if ($posts > 0)
{
for ($i = 1; $i <= $posts; $i++)
{
echo "<tr>";
echo "<td>";
$sql = "SELECT * FROM `season` WHERE `id`=$i";
$season= mysql_query($sql);
if (mysql_num_rows($season) > 0)
{
$qseason = mysql_fetch_assoc($season);
echo $qseason['season'];
$id = $qseason['id'];
}
else
{
echo $GLOBALS["error"];
}
echo"</td>";
$summa = 0;
$sql = "SELECT * FROM `month` WHERE `season`=$id";
$month= mysql_query($sql);
if (mysql_num_rows($month) > 0)
{
while ($qmonth = mysql_fetch_assoc($month))
{

echo "<td>".$qmonth['parameter']."</td>";
$summa = $summa+$qmonth['parameter'];
}
echo "<td>".$summa."</td>";
}
else
{
echo $GLOBALS["error"];
}

echo "</tr>";
}
}
else
{
echo $GLOBALS["error"];
}


echo"</table>";

echo"</div>";

?>[/php]
получается http://novocms.ru/index.php?module=analitics

дамп таблиц:
-- --------------------------------------------------------

--
-- Table structure for table `month`
--

CREATE TABLE IF NOT EXISTS `month` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`season` int(11) unsigned NOT NULL,
`month` varchar(8) NOT NULL,
`parameter` bigint(20) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=121;

--
-- Dumping data for table `month`
--

INSERT INTO `month` (`id`, `season`, `month`, `parameter`) VALUES
(1, 1, 'Июль', 0),
(2, 1, 'Август', 0),
(3, 1, 'Сентябрь', 16496),
(4, 1, 'Октябрь', 176715),
(5, 1, 'Ноябрь', 66387),
(6, 1, 'Декабрь', 52527),
(7, 1, 'Январь', 41851),
(8, 1, 'Февраль', 38021),
(9, 1, 'Март', 5626),
(10, 1, 'Апрель', 4633),
(11, 1, 'Май', 8545),
(12, 1, 'Июнь', 0),
(13, 2, 'Июль', 53830),
(14, 2, 'Август', 128420),
(15, 2, 'Сентябрь', 125894),
(16, 2, 'Октябрь', 119930),
(17, 2, 'Ноябрь', 136761),
(18, 2, 'Декабрь', 111448),
(19, 2, 'Январь', 138979),
(20, 2, 'Февраль', 156846),
(21, 2, 'Март', 162972),
(22, 2, 'Апрель', 130116),
(23, 2, 'Май', 170750),
(24, 2, 'Июнь', 175378),
(25, 3, 'Июль', 176021),
(26, 3, 'Август', 164719),
(27, 3, 'Сентябрь', 169329),
(28, 3, 'Октябрь', 178041),
(29, 3, 'Ноябрь', 180163),
(30, 3, 'Декабрь', 147578),
(31, 3, 'Январь', 190407),
(32, 3, 'Февраль', 149225),
(33, 3, 'Март', 178640),
(34, 3, 'Апрель', 160315),
(35, 3, 'Май', 156939),
(36, 3, 'Июнь', 114800),
(37, 4, 'Июль', 65960),
(38, 4, 'Август', 107867),
(39, 4, 'Сентябрь', 151659),
(40, 4, 'Октябрь', 98365),
(41, 4, 'Ноябрь', 147518),
(42, 4, 'Декабрь', 68532),
(43, 4, 'Январь', 49748),
(44, 4, 'Февраль', 41059),
(45, 4, 'Март', 27000),
(46, 4, 'Апрель', 41446),
(47, 4, 'Май', 10130),
(48, 4, 'Июнь', 34700),
(49, 5, 'Июль', 0),
(50, 5, 'Август', 106315),
(51, 5, 'Сентябрь', 166923),
(52, 5, 'Октябрь', 172461),
(53, 5, 'Ноябрь', 152057),
(54, 5, 'Декабрь', 163575),
(55, 5, 'Январь', 128993),
(56, 5, 'Февраль', 74725),
(57, 5, 'Март', 171347),
(58, 5, 'Апрель', 193142),
(59, 5, 'Май', 174807),
(60, 5, 'Июнь', 190615),
(61, 6, 'Июль', 220819),
(62, 6, 'Август', 209000),
(63, 6, 'Сентябрь', 230000),
(64, 6, 'Октябрь', 177567),
(65, 6, 'Ноябрь', 200863),
(66, 6, 'Декабрь', 201964),
(67, 6, 'Январь', 181044),
(68, 6, 'Февраль', 141572),
(69, 6, 'Март', 167000),
(70, 6, 'Апрель', 107648),
(71, 6, 'Май', 112144),
(72, 6, 'Июнь', 115856),
(73, 7, 'Июль', 101536),
(74, 7, 'Август', 209864),
(75, 7, 'Сентябрь', 207445),
(76, 7, 'Октябрь', 205428),
(77, 7, 'Ноябрь', 219670),
(78, 7, 'Декабрь', 207273),
(79, 7, 'Январь', 180000),
(80, 7, 'Февраль', 205000),
(81, 7, 'Март', 206197),
(82, 7, 'Апрель', 223489),
(83, 7, 'Май', 245761),
(84, 7, 'Июнь', 115500),
(85, 8, 'Июль', 190000),
(86, 8, 'Август', 210000),
(87, 8, 'Сентябрь', 244000),
(88, 8, 'Октябрь', 341642),
(89, 8, 'Ноябрь', 315000),
(90, 8, 'Декабрь', 295000),
(91, 8, 'Январь', 240179),
(92, 8, 'Февраль', 76000),
(93, 8, 'Март', 85478),
(94, 8, 'Апрель', 42853),
(95, 8, 'Май', 74355),
(96, 8, 'Июнь', 8257),
(97, 9, 'Июль', 216114),
(98, 9, 'Август', 372571),
(99, 9, 'Сентябрь', 330061),
(100, 9, 'Октябрь', 301292),
(101, 9, 'Ноябрь', 323594),
(102, 9, 'Декабрь', 391895),
(103, 9, 'Январь', 173019),
(104, 9, 'Февраль', 230746),
(105, 9, 'Март', 397500),
(106, 9, 'Апрель', 337783),
(107, 9, 'Май', 247738),
(108, 9, 'Июнь', 190500),
(109, 10, 'Июль', 256693),
(110, 10, 'Август', 335875),
(111, 10, 'Сентябрь', 262520),
(112, 10, 'Октябрь', 352105),
(113, 10, 'Ноябрь', 227000),
(114, 10, 'Декабрь', 313718),
(115, 10, 'Январь', 290000),
(116, 10, 'Февраль', 270000),
(117, 10, 'Март', 260000),
(118, 10, 'Апрель', 290000),
(119, 10, 'Май', 0),
(120, 10, 'Июнь', 0);

-- --------------------------------------------------------

--
-- Table structure for table `season`
--

CREATE TABLE IF NOT EXISTS `season` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`season` varchar(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=11;

--
-- Dumping data for table `season`
--

INSERT INTO `season` (`id`, `season`) VALUES
(1, '2000 - 2001'),
(2, '2001 - 2002'),
(3, '2002 - 2003'),
(4, '2003 - 2004'),
(5, '2004 - 2005'),
(6, '2005 - 2006'),
(7, '2006 - 2007'),
(8, '2007 - 2008'),
(9, '2008 - 2009'),
(10, '2009 - 2010');


хочется получить график где один вектор это сезон, а второй всего.


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 20.6.2010, 22:50; Ответить: ZiTosS
Сообщение #6


sc2r2bey, во-первых, скрипт который ты привёл не на PHP, а на JavaScript :rolleyes:
Во-вторых, опишу в комментах что каждая строчка означает на основе первого примера:
// определяем JS-массив линии, формат которого
// Array([X1,Y1], [X2,Y2], ..., [Xn,Yn])
line1=[['23-May-08', 578.55], ['20-Jun-08', 566.5], ['25-Jul-08', 480.88], ['22-Aug-08', 509.84],
    ['26-Sep-08', 454.13], ['24-Oct-08', 379.75], ['21-Nov-08', 303], ['26-Dec-08', 308.56],
    ['23-Jan-09', 299.14], ['20-Feb-09', 346.51], ['20-Mar-09', 325.99], ['24-Apr-09', 386.15]];

// создаём объект plot1 передавая параметры: id блока куда вставляем график (chart1), что вставляем (line1 - обвертка в массив)
plot1 = $.jqplot('chart1', [line1], {
    // остальные параметры передаются как неименованный объект
    title:'Data Point Highlighting', // заголовок графика
    axes:{ // координаты
        xaxis:{ // Координаты X
            renderer:$.jqplot.DateAxisRenderer, // изображать (тип - дата)
            rendererOptions:{tickRenderer:$.jqplot.CanvasAxisTickRenderer}, // опции рисования (SVG графика)
            tickOptions:{ // опции отметок
                formatString:'%b %#d, %Y', // формат вывода отметок
                fontSize:'10pt', // размер шрифта отметок
                fontFamily:'Tahoma', // имя шрифта отметок
                angle:-30 // поворот отметок на -30 градусов
            }
        },
        yaxis:{tickOptions:{formatString:'$%.2f'}} // Координаты Y - опции отметок - формат вывода отметок
    },
    highlighter: {sizeAdjust: 7.5}, // как я понял, речь идёт о подсветке пунсонов, а точнее опция размера пунсона при наведении
    cursor: {show: false} // отключение отображения курсора(противоположность примеру 2)
});

В-третьих, чтобы получить то что ты хочешь, тебе нужно использовать Ajax-запрос к PHP-скрипту, который будет тебе формировать нужные данные line1. Передавать эти данные можно в формате JSON.
В примере переменная line1 задается вручную, нам же надо отправить Ajax-запрос серверу, который в ответ пришлёт сформированные JSON-данные, которые затем надо будет передать для формирования графика.

Было бы время, я бы показал на примере твоих данных, как это реализовывается. А в общих словах я тебе всё описал, если ты знаешь JSON-формат и, имея на хостинге поодержку на стороне PHP, библиотеки использования JSON-данных(есть аналог-класс формирования/разбора JSON написанный на PHP, называется fastJSON), ты формируешь на стороне сервера по запросу массив и кодируешь его в JSON формат. Затем эти JSON-данные возвращаются клиенту, и там мы передаём эти данные для формированрия графика скрипту jqplot

Можно обойтись и без AJAX, чисто формируя данные массива на лету :)
[php]<?php

// сезон
$season_coords = array();
$season_str = "";

$season = 3;
$sql = "SELECT * FROM `month` WHERE season={$season}";
$res = mysql_query($sql);
if( mysql_num_rows($res) == 0 )
{
$season_coords[] = "[0,0]";
} else {
while( $array = mysql_fetch_assoc($res) )
$season_coords[] = "[{$array['month']}, {$array['parameter']}]";
}

?>
<html>
<head>
<script type="text/javascript">
season = <?php echo"[". implode(',', $season_coords) ."]"?>;

plot_season = $.jqplot('block_season', [season], {
title:'Сезон 3',
axes:{
xaxis:
rendererOptions:{tickRenderer:$.jqplot.CanvasAxisTickRenderer},
tickOptions:{
fontSize:'10pt',
fontFamily:'Tahoma',
angle:-30
}
},
highlighter: {sizeAdjust: 7.5},
cursor: {show: false}
});
</script>
</head>
<body>
<div id="block_season"></div>
</body>
</html>[/php]


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 21.6.2010, 6:59; Ответить: sc2r2bey
Сообщение #7


(ZiTosS @ 20.6.2010, 22:50) *
sc2r2bey, во-первых, скрипт который ты привёл не на PHP, а на JavaScript :rolleyes:

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

Кстати вопрос, а что надо изучить, чтоб разобраться в этом вопросе?


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 21.6.2010, 11:56; Ответить: ZiTosS
Сообщение #8


sc2r2bey, а ты проверил? То что я написал, должно работать по сезонам, должен выводится график 3-го сезона.
Чтобы разобраться в данном вопросе тебе нужно изучить типы данных Javascript, в основном массивы и объекты. Затем, если хочется обращаться напрямую к БД, а не формировать данные на лету, тебе надо изучить Ajax. Естественно лучше не чистый Ajax(потому что он ужасен), а достаточно какой-либо библиотеки, к примеру jQuery
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 21.6.2010, 12:23; Ответить: sc2r2bey
Сообщение #9


ну да я с jQuery и стараюсь работать, еще надо знать JSON


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 21.6.2010, 12:28; Ответить: ZiTosS
Сообщение #10


sc2r2bey, так ты и не ответил на первый мой вопрос...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое
5 CULA 3293 19.12.2023, 18:55
автор: CULA
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1171 24.11.2023, 14:46
автор: alexey
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВеб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
56 qpPeW 44767 19.7.2023, 10:03
автор: qpPeW
Открытая тема (нет новых ответов) Есть спецы по php/laravel?
3 Mixatraider 1856 26.5.2023, 20:48
автор: Mixatraider
Открытая тема (нет новых ответов) Опытный PHP\Python разработчик в поиске интересных задач
6 daikzlex 3361 25.5.2023, 13:55
автор: daikzlex


 



RSS Текстовая версия Сейчас: 29.3.2024, 11:49
Дизайн