Statistika p°φstup∙ v PHP - kolßΦovΘ grafy
V tomto Φlßnku budeme pokraΦovat v prßci s grafy. Vytvo°φme dva kolßΦovΘ grafy, zachycujφcφ statistiku jednotliv²ch typ∙ rozliÜenφ a barevnΘ hloubky. Krom∞ toho se dozvφte, jak vytvo°it ikonu znßzor≥ujφcφ poΦet shlΘdnut²ch stran.
VÜechny podstatnΘ v∞ci, t²kajφcφ se vytvß°enφ graf∙ pomocφ knihovny JpGraph, byly popsßny v p°edchßzejφcφm Φlßnku. Jeliko₧ zdrojovΘ k≤dy jsou dostateΦn∞ okomentovanΘ, nebudu se ji₧ vφce rozepisovat. (K dispozici je vßm i ukßzka aplikace, m∞°φcφ statistiky p°φstup∙ strßnek http://www.czechia.cz/help/, ovÜem bez zde popisovan²ch graf∙.)
RozliÜenφ (resolution.php)
Graf rozliÜenφ u₧ivatelsk²ch za°φzenφ m∙₧e vypadat nap°φklad takto:
Zdrojov² k≤d pro vytvo°enφ grafu:
require './db.php'; // pripojeni k databazi
// nacteni souboru nutnych pro vytvorenφ grafu
require JPGRAPH_PATH . '/src/jpgraph.php';
include JPGRAPH_PATH . '/src/jpgraph_pie.php';
if (isset($_GET['from_date']) and isset($_GET['to_date'])) {
$from_date = addslashes(urldecode($_GET['from_date']));
$to_date = addslashes(urldecode($_GET['to_date']));
// omezenφ statistiky na urcite obdobi
$sql_access_date = "access_date >= '$from_date' AND access_date <= '$to_date 23:59:59'";
// vybirame rozliseni podle jejich zastoupeni
$query = mysql_query("SELECT screenres, count(*) AS count_it FROM resolution, access WHERE resolution.id = resolution AND $sql_access_date GROUP BY resolution ORDER BY count_it DESC");
while ($result = mysql_fetch_array($query)) {
$data[] = $result['count_it']; // pocet pristupu s jednotlivymi typy rozliseni
$legend[] = $result['screenres'] . ' (' . $result['count_it'] . ')'; // legenda (+ hodnoty)
}
// kolacovy graf (velikost)
$graph = new PieGraph(400,250);
$graph->SetShadow(); // stin grafu
$graph->SetColor('linen'); // barva pozadi grafu
// titulek (font)
$graph->title->Set('RozliÜenφ');
$graph->title->SetFont(FF_FONT2,FS_BOLD);
// kolacovy graf
$p1 = new PiePlot($data);
$p1->SetLegends($legend); // legenda
$p1->SetCenter(0.25, 0.50); // pozice kolace
$p1->value->SetFormat('%.2f%%'); // format popisku u casti kolace
$p1->SetSize(0.37); // velikost kolace
// pridej graf
$graph->Add($p1);
// zobraz graf
$graph->Stroke();
}
Barevnß hloubka (depth.php)
Graf barevnΘ hloubky u₧ivatelsk²ch za°φzenφ m∙₧e vypadat nap°φklad takto:
Odpovφdajφcφ zdrojov² k≤d:
require './db.php'; // pripojeni k databazIso()
// nacteni souboru nutnych pro vytvorenφ grafu
require JPGRAPH_PATH . '/src/jpgraph.php';
require JPGRAPH_PATH . '/src/jpgraph_pie.php';
require JPGRAPH_PATH . '/src/jpgraph_pie3d.php';
if (isset($_GET['from_date']) and isset($_GET['to_date'])) {
$from_date = addslashes(urldecode($_GET['from_date']));
$to_date = addslashes(urldecode($_GET['to_date']));
// omezeni statistiky na urcite obdobi
$sql_access_date = "access_date >= '$from_date' AND access_date <= '$to_date 23:59:59'";
// vybirame barevne hloubky podle jejich zastoupeni
$query = mysql_query("SELECT description, count(*) AS count_it FROM colordepth, access WHERE colordepth.id = colordepth AND $sql_access_date GROUP BY colordepth ORDER BY count_it DESC");
while ($result = mysql_fetch_array($query)) {
$data[] = $result['count_it']; // pocet pristupu s jednotlivymi typy barevne hloubky
$legend[] = $result['description']; // legenda
}
// kolacovy graf (velikost)
$graph = new PieGraph(400,200);
$graph->SetShadow(); // stin grafu
// titulek (font)
$graph->title->Set('Barevnß hloubka');
$graph->title->SetFont(FF_FONT2,FS_BOLD);
// 3D kolacovy graf
$p1 = new PiePlot3D($data);
$p1->SetLegends($legend); // legenda
$p1->SetCenter(0.25, 0.50); // pozice kolace
$p1->SetAngle(45); // uhel kolace
//$p1->SetEdge("black", 1); // okraje casti kolace
// pridej 3D kolacovy graf
$graph->Add($p1);
// zobraz graf
$graph->Stroke();
}
Ikona se statistick²mi ·daji (graph_counter.php)
Touto ikonou se rozumφ mal² obrßzek (88 x 31 px), na kterΘm je zobrazena dennφ statistika strßnek - tuΦn²m pφsmem poΦet visits a obyΦejn²m pφsmem poΦet shlΘdnut²ch strßnek (pageviews). Pokud chcete tuto ikonu vlo₧it n∞kam do sv²ch strßnek, aby nßvÜt∞vnφci m∞li p°ehled o nßvÜt∞vnosti, m∙₧ete pou₧φt tento kratiΦk² HTML k≤d:
V²sledkem pak m∙₧e b²t nßsledujφcφ ikona:
Skript vytvß°ejφcφ ikonu se statistikou vlo₧φme do souboru graph_counter.php. Proto₧e v²stupem bude obrßzek, musφme pou₧φt p°φsluÜnou hlaviΦku, v naÜem p°φpad∞ to je formßt PNG. Pokud nemßte GD knihovnu, kterß slou₧φ pro prßci s grafikou, naΦtenou neustßle, musφte odkomentovat Φtvrt² °ßdek nßsledujφcφ ukßzky a knihovnu naΦφst "ruΦn∞". Pokud vÜak chcete pou₧φvat knihovnu JpGraph, je lepÜφ upravit soubor php.ini tak, aby GD knihovna byla naΦtena trvale. StaΦφ, kdy₧ bu∩ na °ßdku ;extension=php_gd.dll nebo ;extension=php_gd2.dll odstranφte poΦßteΦnφ st°ednφk.
require './config.php'; // konfigurace
require './db.php'; // pripojeni k databazi
//dl("php_gd.dll"); // nacte GD knihovnu
V dalÜφ Φßsti musφme urΦit obdobφ, pro kterΘ se statistika bude vytvß°et. NejlepÜφ bude na ikon∞ zobrazovat statistiku pro aktußlnφ den. Nßsledn∞ si z databßze vytßhneme poΦet pageviews a poΦet visits. Jako podklad pou₧ijeme obrßzek counter.png, na kter² pomocφ funkce imagestring vypφÜeme oba zφskanΘ ·daje.
$sql_access_date = "access_date >= '$today' AND access_date <= '$today 23:59:59'";
// PAGEVIEWS - shlednutΘ stranky
$query = mysql_query("SELECT count(id) FROM access WHERE $sql_access_date");
$result = mysql_fetch_array($query);
$pageviews = $result['count(id)'];
// VISITS
$query = mysql_query("SELECT count(id) FROM access WHERE visit = 1 AND $sql_access_date");
$result = mysql_fetch_array($query);
$visits = $result['count(id)'];
// IKONA
$img = imagecreatefrompng('counter.png'); // vytvori obrazek podle puvodnφho obrazku
$textcolor = imagecolorallocate($img, 0, 64, 128); // barva textu
imagestring($img, 3, 60, 0, $visits, $textcolor); // vypise visits
imagestring($img, 2, 60, 15, $pageviews, $textcolor); // vypise pageviews
imagepng($img);
Instalace Statistiky p°φstup∙
- Download - kompletnφ zdrojovΘ k≤dy, pokud budete chtφt pou₧φvat i grafy, nainstalujte si takΘ knihovnu JpGraph (instalace je popsßna v Φlßnku Profesionßlnφ grafy v PHP snadno a rychle)
- Vytvo°enφ databßze - nap°φklad pomocφ p°φkazu mysqladmin create counter
- Nastavenφ databßze - upravte soubor config.php
- Vytvo°enφ databßzov²ch tabulek - pomocφ p°φkazu mysql counter spus¥te klienta, v n∞m zapiÜte p°φkaz \. vase_cesta\counter.sql; (nap°φklad \. c:\lokal\counter\counter.sql;), m∙₧ete vÜak pou₧φt i phpMyAdmin
- GD knihovna - pokud nemßte GD knihovnu naΦtenou trvale, odkomentujte v souborech counter.php a graph_counter.php °ßdek //dl("php_gd.dll");
- Nastavenφ statistiky - v souboru config.php nastavte pot°ebnΘ ·daje
- HTML k≤d - do strßnek, u kter²ch chcete m∞°it statistiku, vlo₧te nßsledujφcφ k≤d (nezapomen≥te upravit cestu k souboru counter.php)
<script type="text/javascript">
<!--
document.write("<img src=\"__vas_server__/counter.php?referer=" + escape(top.document.referrer) + "&screenres=" + screen.width + "x" + screen.height + "&colordepth=" + screen.colorDepth + "\" width=\"1\" height=\"1\" alt=\"\" />");
// -->
</script>
<noscript>
<div>
<img src="vas_server__/counter.php" width="1" height="1" alt="" />
</div>
</noscript>
Pozn. red.: Tento Φlßnek vyÜel poprvΘ 17. 9. 2002. P∙vodnφ verze Φlßnku a k n∞mu vedenΘ diskuse jsou vßm k dispozici v ZIP archivech.