Statistiky v PHP 4. díl – Počítání IP adres

V minulém díle jsme si ukázali, jak uložit všechna získaná data do databáze tak, aby se nám poté zobrazovali statistiky celkových počtu přístupů za určitá období. Nepřičítali jsme však unikátní IP adresy, dnes budeme tento problém řešit.
V minulém díle jsme si ukázali, jak uložit všechna získaná data do databáze tak, aby se nám poté zobrazovali statistiky celkových počtu přístupů za určitá období. Nepřičítali jsme však unikátní IP adresy, dnes budeme tento problém řešit.

V případě, že budete chtít ukládat i počet IP adres budete si muset upravit i strukturu vašich tabulek, které již máte vytvořené v databázi. Těmito SQL příkazy přidáte do každé tabulky pole s názvem „lidi“ vždy za každé pole „id“:

ALTER TABLE prehled ADD lidi INT not null AFTER id;
ALTER TABLE mesic ADD lidi INT not null AFTER id;
ALTER TABLE rok ADD lidi INT not null AFTER id;

V minulém díle se soubor nazýval prehled.php a pro zachování jmen souborů stačí, když přepíšete obsah souboru tímto zdrojovým kódem:

<?
/* presny cas posledniho pristupu */
$time = Time();

/* ukladame do tabulky prehled - nejdrive overime existenci dnesniho datumu a dalsim SQL prikazem zjistime, jestli je uzivatel zapsan v databazi*/
$datum_prehled = Date("d.m.Y");
$vysledek=mysql_query("select * from prehled where datum=`$datum_prehled`");
$pocet=mysql_num_rows($vysledek);

$vysledek2=mysql_query("select * from den where ip=`$ip` and domena=`$host` and browser=`$browser` and system=`$system` and pristupy=`1`");
$pocet2=mysql_num_rows($vysledek2);

if ($pocet2=="1") {

if ($pocet=="0") {
/* prvni SQL prikaz smaze vsechny polozky z pole den, kdyz se aktualni datum nerovna tomu v databazi, druhy vlozi novy den do tabulky prehled a treti prikaz vlozi zaznam o uzivateli do tabulky den (znovu, protoze jsme smazali celou tabulku prvnim SQL prikazem) */
mysql_query("delete from den");
mysql_query("insert into prehled values(``, `1`, `1`, `$datum_prehled`, `$time`)");
mysql_query("insert into den values(``, `$ip`, `$host`, `$refer`, `$browser`, `$system`, `$sek`, `1`)");
}
else {
mysql_query("update prehled set stranek=stranek+1, time=`$time`, lidi=lidi+1 where datum=`$datum_prehled`");
}
}

else {

if ($pocet=="0") {
mysql_query("delete from den");
mysql_query("insert into prehled values(``, `1`, `1`, `$datum_prehled`, `$time`)");
mysql_query("insert into den values(``, `$ip`, `$host`, `$refer`, `$browser`, `$system`, `$sek`, `1`)");
}
else {
mysql_query("update prehled set stranek=stranek+1, time=`$time` where datum=`$datum_prehled`");
}
}


/* ukladame do tabulky mesic */
$datum_mesic = Date("m.Y");
$vysledek=mysql_query("select * from mesic where datum=`$datum_mesic`");
$pocet=mysql_num_rows($vysledek);

if ($pocet2=="1") {

if ($pocet=="0") {
mysql_query("insert into mesic values(``, `1`, `1`, `$datum_mesic`, `$time`)");
}
else {
mysql_query("update mesic set stranek=stranek+1, time=`$time`, lidi=lidi+1 where datum=`$datum_mesic`");
}
}

else {

if ($pocet=="0") {
mysql_query("insert into mesic values(``, `1`, `1`, `$datum_mesic`, `$time`)");
}
else {
mysql_query("update mesic set stranek=stranek+1, time=`$time` where datum=`$datum_mesic`");
}
}


/* ukladame do tabulky rok */
$datum_rok = Date("Y");
$vysledek=mysql_query("select * from rok where datum=`$datum_rok`");
$pocet=mysql_num_rows($vysledek);

if ($pocet2=="1") {

if ($pocet=="0") {
mysql_query("insert into rok values(``, `1`, `1`, `$datum_rok`, `$time`)");
}
else {
mysql_query("update rok set stranek=stranek+1, time=`$time`, lidi=lidi+1 where datum=`$datum_rok`");
}
}

else {

if ($pocet=="0") {
mysql_query("insert into rok values(``, `1`, `1`, `$datum_rok`, `$time`)");
}
else {
mysql_query("update rok set stranek=stranek+1, time=`$time` where datum=`$datum_rok`");
}
}
?>

To bychom měli ukládání přístupů, další a také poslední v pořadí je statistika typů prohlížečů a operačních systémů, které vlastnili uživatelé vašich stránek když je navštívili.

Struktura tabulek:

CREATE TABLE operacni_systemy (
  nazev text NOT NULL,
  pocet int(11) NOT NULL
);

CREATE TABLE prohlizece (
  nazev text NOT NULL,
  pocet int(11) NOT NULL
);

Pro zapsání do tabulek použijeme jednoduchý skript, který umístíme pomocí include() na konec souboru count.php, kde z předchozích dílů tohoto seriálu máme skript prehled.php, soubor pro zapsání prohlížečů a operačních systémů se může jmenovat třeba p_os.php:

include("p_os.php");

a zde je zdrojový kód, který do něj vložíme:

<?

/* skript ověří, zda je prohlížeč zapsán v databázi - když není, tak zapíše nový záznam a když se už v databázi nalézá, tak se k počtu přičte číslo 1 */

$vysledek=mysql_query("select * from prohlizece where nazev=`$browser`");
$pocet=mysql_num_rows($vysledek);

if ($pocet=="0") {
mysql_query("insert into prohlizece values(`$browser`, `1`)");
}
else {
mysql_query("update prohlizece set pocet=pocet+1 where nazev=`$browser`");
}


$vysledek=mysql_query("select * from operacni_systemy where nazev=`$system`");
$pocet=mysql_num_rows($vysledek);

if ($pocet=="0") {
mysql_query("insert into operacni_systemy values(`$system`, `1`)");
}
else {
mysql_query("update operacni_systemy set pocet=pocet+1 where nazev=`$system`");
}
?>

A to je vše k části vkládání dat do databáze a získávání údajů k pozdějšímu zpracování, tj. zobrazení. V příštím díle si totiž ukážeme, jak z databáze všechny údaje co nejlépe a srozumitelně vypíšeme.

Diskuze (8) Další článek: Intel zlevňuje procesory až o 19 procent

Témata článku: Software, PHP, Programování, Statistika, Nota, Adresa, From, Díl, Host, Update, Počítání, Alter, Browser, Elsa, Sta, Seti, Time, Select, Stem


Určitě si přečtěte

Pojďme programovat elektroniku: České chytré zásuvky Netio pro kutily i firmy

Pojďme programovat elektroniku: České chytré zásuvky Netio pro kutily i firmy

** Wi-Fi zásuvky nevyrábí pouze Čína ** Vyzkoušeli jsme českou Netio PowerCable ** Je přímo určená pro vývojáře, má totiž jednoduché JSON API

Jakub Čížek | 44

Podívejte se, jak vypadá mikrofon nebo blecha pod elektronovým mikroskopem

Podívejte se, jak vypadá mikrofon nebo blecha pod elektronovým mikroskopem

** Z Brna pochází třetina světové produkce elektronových mikroskopů ** První československý kus vyrobila Tesla už v 50. letech ** Dnes na ni navazuje třeba brněnský Tescan

Jakub Čížek | 19

Hledá se způsob, jak uložit elektřinu. Možná pomohou obří gravitační baterie

Hledá se způsob, jak uložit elektřinu. Možná pomohou obří gravitační baterie

** Jak uložit elektřinu z fotovoltaiky a větrných turbín ** Pomohou třeba staré autobaterie, nebo setrvačníky ** A pak tu jsou bizarní gravitační akumulátory velikosti mrakodrapu

Jakub Čížek | 250

Nejlepší notebooky do 10 000 korun: Co koupit a čemu se raději vyhnout

Nejlepší notebooky do 10 000 korun: Co koupit a čemu se raději vyhnout

** Do deseti tisíc korun lze dnes koupit slušné notebooky ** V nabídce ale i tak převládají zastaralé a pomalé modely ** Poradíme, jak dobře vybrat i s omezeným rozpočtem

David Polesný | 104

10 mýtů a polopravd o bateriích, kterým možná ještě věříte

10 mýtů a polopravd o bateriích, kterým možná ještě věříte

** Kolem baterií a akumulátorů koluje řada mýtů, nepravd a polopravd ** Dnes vám devět z nich zkusíme vyvrátit na základě faktů ** Většina z nich totiž neplatí pro moderní lithiové baterie

Karel Kilián, David Polesný | 99


Aktuální číslo časopisu Computer

Megatest: 20 powerbank s USB-C

Test: mobily do 3 500 Kč

Radíme s výběrem routeru

Tipy na nejlepší vánoční dárky