Zoner.cz | Czechia.com | Inshop.cz | CA Czechia.cz
Nic
TOPlist
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)

Rozlišení

include("db.php");    
// připojení k databázi
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)

Barevná hloubka

include("db.php");    
// připojení k databázi
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.

<img src="graph_counter.php" width="88" height="31" border="0" alt="Dnešní statistika">

Dnešní statistika

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.

Header("Content-type: image/png");    
// výstup je PNG obrázek
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.

$today = Date("Y-m-d");
$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.


// IKONA
$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ů

  1. 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/.
  2. Vytvoření databáze – např. pomocí příkazu mysqladmin create counter.
  3. Nastavení databáze – upravte soubor db.php.
  4. 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.
  5. GD knihovna – pokud nemáte GD knihovnu načtenou trvale, odkomentujte v souborech counter.php a graph_counter.php řádek //dl("php_gd.dll");.
  6. 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).
  7. 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 language="JavaScript" 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>
<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é grafy
Statistika 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ů


Michal Kebrt (23.9. 2002)




Vyhledávání

Rozšířené vyhledávání



Nejčtenější







Diskuzní kotel






Četli jste už?






Hodnotilo: 28 čtenářů
Výsledek: 2,67


 Tisk
 Doporučit článek

Diskuze: Statistika přístupů v PHP – koláčové grafy
23.09.2002, 05:39 Ondrej Ivanic Nadherne az na...
23.09.2002, 09:47 Richie Problem........
23.09.2002, 09:53 Ondrej Ivanic ccProblem........
23.09.2002, 10:03 Richie cc1Problem........
23.09.2002, 10:17 Ondrej Ivanic cc11Problem........
23.09.2002, 10:28 Ondrej Ivanic cc11ccProblem........
23.09.2002, 11:17 Richie cc11cc1Problem........
23.09.2002, 11:23 Richie cc11cc1ccProblem........
23.09.2002, 18:52 Michal Kebrt cc11cc1ccProblem........
23.09.2002, 19:56 Richie cc11cc1ccccProblem........
23.09.2002, 18:48 Jméno a příjmení cc11ccProblem........
23.09.2002, 19:09 Lukas problem
23.09.2002, 19:55 Richie ccproblem
23.09.2002, 20:37 Hackkk Chyba
23.09.2002, 22:03 Ondrej Ivanic ccChyba
24.09.2002, 15:07 Richie cc1Chyba
24.09.2002, 16:25 Michal Kebrt cc11Chyba
24.09.2002, 16:22 Michal Kebrt cc1Chyba
23.09.2002, 22:59 Richie ccChyba
Zobrazit všePřidat nový
Redakce Interval.cz |  Inzerce na Interval.cz |  Hledáme nové autory ISSN 1212-8651 
 © Zoner software, s.r.o., všechna práva vyhrazena, tento server dodržuje právní předpisy o ochraně osobních údajů.