Проста графика с резултат от БД

uphero

Registered
Имам таблица в бд в която на всеки час записвам резултат в проценти .
И на база на тези проценти трябва да се изчертае графика
пример: http://upche.info/?dm=55CA
и това трябва да стане в .png формат
Възможно ли е?
 
Изкарваш информацията и я слагаш в някой плъгин и генерира динамична.
http://www.1stwebdesigner.com/css/top-jquery-chart-libraries-interactive-charts/

А може и да искаш да се генерира като картинка?
http://pchart.sourceforge.net/
 
Fakeheal каза:
Изкарваш информацията и я слагаш в някой плъгин и генерира динамична.
http://www.1stwebdesigner.com/css/top-jquery-chart-libraries-interactive-charts/

А може и да искаш да се генерира като картинка?
http://pchart.sourceforge.net/
Да трябва да се генерира изображение , Благодаря ти линковете но не се ориентирах.
Не съм толкова напрад с материяла , трябва ми по прост пример за да мога да го пригодя за моите нужди
 
Малка алтернатива
Click
Даден е пример,само трябва да свалиш файловете,и да ги "require_once"
както е описано.
 
Явно съм много по зле от колкото си мислех.
Не успях да се справя сам,свалих сигурно 100 скрипта ама явно знанията ми не са достатъчни.
Ето SQL-а ако някой може да помогне , без начение е вече как ще се генерира дали ще изображение или не както и как ще изглежда.
тук се записва в всяко поле за часа определен процент
[sql]CREATE TABLE IF NOT EXISTS `charts` (
`id` int(11) NOT NULL auto_increment,
`sid` int(11) NOT NULL default '0',
`1` int(11) NOT NULL default '0',
`2` int(11) NOT NULL default '0',
`3` int(11) NOT NULL default '0',
`4` int(11) NOT NULL default '0',
`5` int(11) NOT NULL default '0',
`6` int(11) NOT NULL default '0',
`7` int(11) NOT NULL default '0',
`8` int(11) NOT NULL default '0',
`9` int(11) NOT NULL default '0',
`10` int(11) NOT NULL default '0',
`11` int(11) NOT NULL default '0',
`12` int(11) NOT NULL default '0',
`13` int(11) NOT NULL default '0',
`14` int(11) NOT NULL default '0',
`15` int(11) NOT NULL default '0',
`16` int(11) NOT NULL default '0',
`17` int(11) NOT NULL default '0',
`18` int(11) NOT NULL default '0',
`19` int(11) NOT NULL default '0',
`20` int(11) NOT NULL default '0',
`21` int(11) NOT NULL default '0',
`22` int(11) NOT NULL default '0',
`23` int(11) NOT NULL default '0',
`24` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=458 ;[/sql]
 
Като ,че ли се справих
Остана само един проблем , как да задам максимума
Искам да е 100 , а сега най високия резултат дори да 30 в графиката излиза като 100%
http://game-stats.eu/c.php?id=30
PHP:
<?php
/*=======================================================================================================================*/
//Хедър
header("Content-type: image/png; charset=utf-8");

/*=======================================================================================================================*/
//Свързваме се с  БД
require_once("connect.php");

/*=======================================================================================================================*/
//Селектираме сървъра от БД
$sid=(int)($_GET['id']);
$sql = mysql_query("SELECT * FROM `charts` WHERE `sid`=".$sid." ");
$row = mysql_fetch_array($sql);

/*=======================================================================================================================*/
//Извеждаме резултатите от БД
$h1=$row['1'];
$h2=$row['2'];
$h3=$row['3'];
$h4=$row['4'];
$h3=$row['5'];
$h6=$row['6'];
$h7=$row['7'];
$h8=$row['8'];
$h9=$row['9'];
$h10=$row['10'];
$h11=$row['11'];
$h12=$row['12'];
$h13=$row['13'];
$h14=$row['14'];
$h15=$row['15'];
$h16=$row['16'];
$h17=$row['17'];
$h18=$row['18'];
$h19=$row['19'];
$h20=$row['20'];
$h21=$row['21'];
$h22=$row['22'];
$h23=$row['23'];
$h24=$row['24'];

/*=======================================================================================================================*/
//Създаваме графиката
$cells = array ( 
1=>$h1,
2=>$h2,
3=>$h3,
4=>$h4,
5=>$h5,
6=>$h6,
7=>$h7,
8=>$h8,
9=>$h8,
10=>$h10,
11=>$h11,
12=>$h12, 
13=>$h13,
14=>$h41,
15=>$h15,
16=>$h16,
17=>$h17,
18=>$h18,
19=>$h19,
20=>$h20,
21=>$h21,
22=>$h22, 
23=>$h23,
24=>$h24
);
$max = max( $cells );
$total = count ( $cells );

/*=======================================================================================================================*/
//Размер
$totalwidth = 300;
$totalheight = 200;

/*=======================================================================================================================*/
//нещо си
$xgutter = 30; // left/right margin
$ygutter = 10; // top/bottom margin
$internalgap = 2; // space between cells
$bottomspace = 15; // gap at the bottom (in addition to margin)

/*=======================================================================================================================*/
//Шрифт
$font = 'fonts/tacint.ttf';

/*=======================================================================================================================*/
//Създаване на графиката
 $graphCanX = ( $totalwidth - $xgutter*2 );
$graphCanY = ( $totalheight - $ygutter*2 - $bottomspace );// starting draw position x - axis
$posX = $xgutter; // starting draw pos - y -  axis
$posY = $totalheight - $ygutter - $bottomspace;
$cellwidth = (int) (( $graphCanX - ( $internalgap * ( $total-1 ) )) / $total) ;
 $textsize = (int)($bottomspace);
// adjust font size
while ( list( $key, $val ) = each ( $cells ) )
    {
     while ( 1 )
        {
        $box = ImageTTFbBox( $textsize, 0, $font, $key );
        $textWidth = abs( $box[2] );
        if ( $textWidth < $cellwidth )
            break;
        $textsize--;
        }
    }
$image = imagecreate( $totalwidth, $totalheight );
$red = ImageColorAllocate($image, 255, 255, 255);
$blue = ImageColorAllocate($image, 100, 100, 100 );
$black = ImageColorAllocate($image, 0, 0, 0 );
$grey = ImageColorAllocate($image, 100, 100, 100 );
 reset ($cells);
 while ( list( $key, $val ) = each ( $cells ) )
     {
     $cellheight = (int) (($val/$max) * $graphCanY);
     $center = (int)($posX+($cellwidth/2));
    imagefilledrectangle( $image, $posX, ($posY-$cellheight), ($posX+$cellwidth), $posY, $blue );
     $box = ImageTTFbBox( $textsize, 0, $font, $key );
     $tw = $box[2];
     ImageTTFText(    $image, $textsize, 0, ($center-($tw/2)),
             ($totalheight-$ygutter), $red, $font, '' );
     $posX += ( $cellwidth + $internalgap);
     }
/*=======================================================================================================================*/
//Извеждаме броя на слотовете от БД
$sql = mysql_query("SELECT * FROM `server` WHERE `sid`=".$sid." ");
$row = mysql_fetch_array($sql);
$maxplayers=$row['maxplay'];
$maxplayers2=ceil($maxplayers/2);
	 imagettftext($image, 10, 0, 5, 16, $black, $font, $maxplayers);
	 imagettftext($image, 10, 0, 5, 93, $black, $font, $maxplayers2);
	 imagettftext($image, 10, 0, 5, 180, $black, $font, "0");
	 imagettftext($image, 10, 0, 30, 190, $black, $font, "Last 24 hours plauers statistics");
	 
/*=======================================================================================================================*/
//Рамка
$im_w = 300;
$im_h = 200;
$ramka_cl = imagecolorallocate($image, 0, 0, 0);
imageline($image, 0,0,$im_w-0,0,$ramka_cl);
imageline($image, 0,$im_h-1,$im_w-0,$im_h-1,$ramka_cl);
imageline($image, 0,0,0,$im_h,$black);
imageline($image, $im_w-1,0,$im_w-1,$im_h,$ramka_cl);

/*=======================================================================================================================*/
//Селектираме сървъра от БД
imagepng($image);
imagedestroy($image);
 ?>
 
Сайта с изображението във upche.*** не ми го отваря, качи снимката тук, за да видя горе-долу към кое си се ориентирал. Колегите по-горе са ти казали принципа как е.

Използвай плъгин генериращ информацията от базата, впрочем защо ползваш толкова полета? И какво точно искаш да извеждаш?

До колкото разбирам във втория линк, сървърите които са били онлайн ги сумираш и им създаваш общ процент за статуса им. Т.е. през последните 24ч. 500 сървъра са били онлайн на 74% примерно - тоест, 74% са онлайн останалите са офлайн нещо такова, а? :)
 
Ticketa каза:
Сайта с изображението във upche.*** не ми го отваря, качи снимката тук, за да видя горе-долу към кое си се ориентирал. Колегите по-горе са ти казали принципа как е.

Използвай плъгин генериращ информацията от базата, впрочем защо ползваш толкова полета? И какво точно искаш да извеждаш?

До колкото разбирам във втория линк, сървърите които са били онлайн ги сумираш и им създаваш общ процент за статуса им. Т.е. през последните 24ч. 500 сървъра са били онлайн на 74% примерно - тоест, 74% са онлайн останалите са офлайн нещо такова, а? :)
Не умея да обяснявам,сори
Не за всеки сървър се записва отделен запис като полетата са съответно часове .
И към всеки час се записва процент на запълване на сървъра (играчи/макс места)
И идеята е да изкарам една графика за това през последните 24 часа , на всеки час какъв е бил процента на играчите.
Дотук добре , само , че сега най-високоя резултат дори да не е 100% се показва като 100%
http://web-tourist.net/userfiles/5/5324.jpg
 

Back
Горе