Jednou jsem hledal na nějakém webu určitý článek, který jsem četl před několika měsíci a odkaz na něj jsem chtěl poslat svému kamarádovi. Bohužel jsem nebyl schopný ho jednoduše dohledat. Google taky mlčel a tak jsem nakonec kvůli tomu článku musel proklikat skoro celý web, než se mi podařilo ho najít. A to byl přesně ten okamžik, kdy jsem si řekl: „Nebylo by jednodušší, kdyby měl každý web možnost vytvořit si na něm záložky na zajímavé články?“ Uživatel by si tak přehledně umístil odkazy na to, co ho na webu nejvíce zaujalo a mohl by se k tomu lehce kdykoliv vrátit.
Tady, na QARK.net, jsem to zrealizoval, a pokud se vám ten nápad líbí stejně jako mně, není problém si u sebe vytvořit vlastní záložky také.
Počítadlo už máme hotové, včetně jeho grafického výsledného zobrazení. V dnešním díle si proto ukážeme, jak vytvořit sloupcový graf s týdenním přehledem návštěvnosti. Funkce na zobrazení grafu se může hodit na cokoliv, je jen na vás k čemu ji budete v budoucnu používat.
V předchozím díle jsem vám ukázal, jak si jednoduše vytvořit počítadlo přístupů v PHP. Dneska použijeme funkce z prvního dílu a zaměříme na grafické zobrazení počtu návštěvníků. Konečný výpis bude vypadat přesně jako mám já na svém webu vpravo. Získáte tak jednoduchý přehled dnešních, celkových a online návštěvníků, který vypadá lépe, než jeho textová podoba.
Pokud si chcete na web umístit počítadlo přístupů, které počítá kolik lidí je právě online, kolik lidí vás navštívilo tento den a kolik lidí vás navštívilo celkem, nabízím vám rychlé a jednoduché řešení. Potřebovat budete PHP a MySQL.
Každého zajímá, odkud přicházejí návštěvníci na web a jaká klíčová slova hledají. Ale jak to zjistit?
Možností je několik. Nejlepší je awstats, pokud ho hosting nabízí, nebo můžete použít nějaká počítadla přístupů. Získáte tak přehlednou a graficky zpracovanou statistiku.
Pokud tyhle možnosti nemáte, nebo nechcete využít, můžete si naprogramovat vlastní REFERER
, a já vám teď ukážu jak na to.
Rozhodl jsem se udělat srovnávací test tří dostupných WYSIWYG editorů pro úpravu a tvorbu (X)HTML kódu. To
„X“ je v závorce, protože podle pravidel XHTML pracuje pouze FCKeditor. TinyMCE se o XHTML snaží, ale mně osobně třeba velmi vadí, že používá značku <font>
, která v XHTML 1.0 Strict už neexistuje. Poslední
z trojice, SPAW, produkuje bohužel jen obyčejné HTML.
Možná, že znáte CSS pastelky od Chrise Hestera. Jde o obrázek barevných pastelek vytvořený pouze pomocí 1452 divů.
Samozřejmě je to úplně k ničemu, protože výsledný obrázek zabírá mnohonásobně víc než předloha, ale mně se to tak zalíbílo, že jsem si hned vytvořil převodník Jpg/Png obrázku do CSS v PHP a nabízím vám zdrojový kód.
Nedávno jsem vyslovil domněnku, že mě Google nemá rád, protože mi neindexuje nové články. Proto jsem si napsal malý skriptík, který ukládá přístupy vyhledávacích botů do databáze. Ze všech vyhledávačů jsem se zaměřil pouze na Google a Jyxo, protože mě zajímalo, který mi první najde nový článek.
Předpokládám, že v PHP něco málo umíte a tak nebudu psát, jak se připojuje k databázi. Nejprve si ale vytvoříme následující tabulku.
Minule jsme psal o tom, jak zjistíte stát podle IP adresy a doporučil jsem databázi zdarma. Dnes to ještě trošku rozšíříme, protože jsem narazil na vynikající web, kde najdete databázi organizací, států, měst a souřadnic podle IP adres. Podobných databází je sice na netu spousta, ale tahle vás nebude stát ani korunu.
Použití je jednoduché, pomocí těchto skriptů zjistíte z IP adresy cokoliv a můžete si tak obohatit třeba svoje webstatistiky.
<?php include("geoipcity.inc"); $gi = geoip_open("GeoIPCity.dat",GEOIP_STANDARD); $record = geoip_record_by_addr($gi,$REMOTE_ADDR); print $record->country_code . " " . $record->country_code3 . " " . $record->country_name . "<br/>"; print $record->city . "<br/>"; print $record->latitude . "<br/>"; print $record->longitude . "<br/>"; geoip_close($gi); ?>
Před několika měsíci jsem hledal nějaký solidní WYSIWYG editor, který by fungoval jak v IE, tak v Mozille a Netscape. Tenkrát jsem našel FCKeditor a hned si jej zamiloval. Editor pěkně vypadal, měl všechny potřebné funkce.. ale mnoho chyb. Já se nevzdal a plno chyb opravil, ale přesto editor občas reagoval nepředvídatelně. Nakonec jsem jej pustil k ledu.
Před dvěma dny jsem se ale znovu podíval na domovskou stránku editoru a s potěšením zjistil, že editor dospěl do funkční verze 2.0 RC2. Hned jsem jej zkusil a tak vám přináším svoje dojmy.
28. října vyšlo nové MySQL, které konečně zvládá i vnořené selekty. Neodolal jsem a hned jsem verzi 4.1 stáhl a nainstaloval. Přinásím vám takové menší srovnání rychlosti mezi novým MySQL 4.1 a starším MySQL 3.23.38.
Představme si, že existují dvě tabulky. První (files, 16 000 záznamů) obsahuje jména souborů, počet stažení, id adresáře a další věci. A druhá (directories, 2000 záznamů) názvy adresářů. Obě tabulky lze spojit pomocí id adresáře a tak zjistit kde se jednotlivý soubor nachází.
SELECT * FROM files ORDER BY nazev DESC LIMIT 10MySQL 4.1 -> 0.08s
SELECT sum(stazeno) FROM filesMySQL 4.1 -> 0.01s
SELECT avg(stazeno) FROM files, directories WHERE files.adresar=directories.idMySQL 4.1 -> 0.02s
SELECT avg(stazeno) FROM files -> vysledek 24.5175MySQL 4.1 -> 0.02s
SELECT count(*) FROM files WHERE stazeno<24.5175MySQL 4.1 -> 0.02s
SELECT count(*) FROM files WHERE stazeno<(SELECT avg(stazeno) FROM files)MySQL 4.1 -> 0.09s
Z výsledku vídíme, že nové MySQL je o trošičku pomalejší, což je úměrné složitosti řešení. Z mého testu vyplývá, že je vhodnější nahradit jeden složený selekt více jednoduchými , čímž dosáhneme rychlejšího zpracování.
Rychlost jsem testoval i na eshopu ProComs, kde nové MySQL dosáhlo o 0.1s–0.23s horšího výsledku v rychlosti provedení.
Nedávno jsem potřeboval zjistit z kterého státu přicházejí návštěvníci na stránky, abych jim mohl nabídnout správnou jazykovou verzi. Pátral jsem po internetu jak to vyřešit a našel jsme plno databází IP adres, bohužel placených.
Nedal jsem se a hledal dál, až jsem nakonec narazil na jednu super adresu, kde si můžete stáhnout databázi zdarma.
Databáze je aktualizovaná každý měsíc.
Pokud jste někdy přemýšleli jak vybrat texty z databáze a potom v nich provést PHP kód, tak mám pro vás malou ukázku.
Určitě jste si všimli, že existuje funkce eval();, která provede PHP kód podle řetězce… tak od toho je jen malý krůček k vytvoření vlastní funkce, která vám přeloží PHP kód, uzavřený ve značce <php></php>
<?php function provedcode($pole) { eval("\$pole[2] = $pole[2];"); return $pole[2]; } $retezec = "Dnes je: <php>date('d. m. Y');</php>"; echo preg_replace_callback("/(<php>)(.*?)(<\/php>)/si", "provedcode", $retezec); ?>