Statistika přístupů v PHP – koláčové grafy
Na závěr celého seriálu již jen 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. Vzhledem k tomu, že se jedná o poslední díl celého seriálu, budete si moci kompletní zdrojové kódy stáhnout.
Všechny podstatné věci týkající se vytvoření grafů pomocí aplikace JpGraph byly popsány v minulém dílu. Jelikož zdrojové kódy jsou dostatečně okomentované, nebudu se již více rozepisovat.
Rozlišení (resolution.php)
include("../function.php"); // obsahuje funkci WinIso()
// načtení souborů nutných pro vytvoření grafu
include("../jpgraph.php");
include("../jpgraph_pie.php");
$sql_access_date = StripSlashes(URLDecode($sql_access_date)); // datum
// vybíráme rozlišení podle jejich zastoupení
$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"]; // počet přístupů s jednotlivými typy rozlišení
$legend[] = $result["screenres"] . ' (' . $result["count_it"] . ')'; // legenda (+ hodnoty)
endwhile;
// koláčový graf (velikost)
$graph = new PieGraph(400,250);
$graph->SetShadow(); // stín grafu
$graph->SetColor("linen"); // barva pozadí grafu
// titulek (font)
$graph->title->Set(Win_Iso("Rozlišení"));
$graph->title->SetFont(FF_FONT2,FS_BOLD);
// koláčový graf
$p1 = new PiePlot($data);
$p1->SetLegends($legend); // legenda
$p1->SetCenter(0.25, 0.50); // pozice koláče
$p1->value->SetFormat("%.2f%%"); // formát popisku u částí koláče
$p1->SetSize(0.37); // velikost koláče
// přidej graf
$graph->Add($p1);
// zobraz graf
$graph->Stroke();
Barevná hloubka (depth.php)
include("../function.php"); // obsahuje funkci WinIso()
// načtení souborů nutných pro vytvoření grafu
include("../jpgraph.php");
include("../jpgraph_pie.php");
include("../jpgraph_pie3d.php");
$sql_access_date = StripSlashes(URLDecode($sql_access_date)); // datum
// vybíráme barevné hloubky podle jejich zastoupení
$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"]; // počet přístupů s jednotlivými typy barevné hloubky
$legend[] = $result["description"]; // legenda
endwhile;
// koláčový graf (velikost)
$graph = new PieGraph(400,200);
$graph->SetShadow(); // stín grafu
// titulek (font)
$graph->title->Set("Barevná hloubka");
$graph->title->SetFont(FF_FONT2,FS_BOLD);
// 3D koláčový graf
$p1 = new PiePlot3D($data);
$p1->SetLegends($legend); // legenda
$p1->SetCenter(0.25, 0.50); // pozice koláče
$p1->SetAngle(45); // úhel koláče
//$p1->SetEdge("black", 1); // okraje částí koláče
// přidej 3D koláčový 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 třetí řádek a knihovnu načíst "ručně". Pokud však chcete používat aplikaci JpGraph, je lepší upravit soubor php.ini tak, aby GD knihovna byla načtena trvale. Stačí, když na řádku ;extension=php_gd.dll odstraníte počáteční středník.
include("db.php"); // připojení k databázi
//dl("php_gd.dll"); // načte 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 shlédnutých stran a počet visits.
$sql_access_date = "access_date >= '$today' AND access_date <= '$today 23:59:59'";
// PAGEVIEWS - shlédnuté stránky
$query = MySQL_Query("SELECT count(*) FROM access WHERE $sql_access_date");
$result = MySQL_Fetch_Array($query);
$pageviews = $result["count(*)"];
// VISITS
$query = MySQL_Query("SELECT count(*) FROM access WHERE visit = 1 AND $sql_access_date");
$result = MySQL_Fetch_Array($query);
$visits = $result["count(*)"];
Jako podklad použijeme obrázek counter.png. Na něj poté pomocí funkce ImageString(obrázek, font, souřadnice x, souřadnice y, text, barva) vypíšeme oba získané údaje.
$img = ImageCreateFromPNG("counter.png"); // vytvoří obrázek podle původního obrázku
$textcolor = ImageColorAllocate($img, 0, 64, 128); // barva textu
ImageString($img, 3, 60, 0, $visits, $textcolor); // vypíše visits
ImageString($img, 2, 60, 15, $pageviews, $textcolor); // vypíše pageviews
ImagePNG($img);
Instalace Statistiky přístupů
- Download – vybrat si můžete ze dvou verzí – bez grafů a s grafy, pokud budete používat verzi s grafy nainstalujte si nejprve aplikaci JpGraph (instalace je popsána v článku Profesionální grafy v PHP snadno a rychle), poté rozbalte counter_grafy.zip do adresáře jpgraph/src/.
- Vytvoření databáze – např. pomocí příkazu mysqladmin create counter.
- Nastavení databáze – upravte soubor db.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ř. \. 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");.
- No_referer – v souboru counter.php vložte do proměnné $no_referer alespoň částečnou adresu vašich stránek (např. mojestranky.webzdarma.cz).
- 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).
<!--
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>
<img src=" vas_server__/counter.php" width="1" height="1" alt="" border="0">
</noscript>
Doufám, že vám statistika přístupů bude dobře sloužit. Případnou kritiku či náměty na vylepšení uvítám v diskusi pod článkem.
Předchozí díly:
Statistika přístupů v PHP – sloupcové grafyStatistika přístupů v PHP – kalendář
Statistika přístupů v PHP – hodinová a denní návštěvnost
Statistika přístupů v PHP – regionální lokalizace
Statistika přístupů v PHP – domény nejvyšší úrovně
Statistika přístupů v PHP – vyhledávací fráze
Statistika přístupů v PHP – odkud přicházejí návštěvníci
Statistika přístupů v PHP – rozlišení a barevná hloubka
Statistika přístupů v PHP – detekce operačního systému
Statistika přístupů v PHP – detekce prohlížeče
Statistika přístupů v PHP – počet unikátních návštěvníků