Autor | Zpráva | ||
---|---|---|---|
PavelG Profil |
#1 · Zasláno: 21. 10. 2016, 21:22:22
Ahoj.
Hned ze začátku sem hodím zdrojový kod, který počítá návštěvnost: <?php require('Db.php'); Db::connect('127.0.0.1', 'navstevnost', 'root', ''); $den = date('d'); $dalsi_den = date('d', strtotime("+1 Day")); $den_db = Db::querySingle('SELECT den FROM za_den'); $dalsi_den_db = Db::querySingle('SELECT dalsi_den FROM za_den'); $pocet = Db::querySingle('SELECT pocet FROM za_den') + 1; Db::query(' UPDATE za_den SET den=? ', $den); if ($den_db == $dalsi_den_db or $dalsi_den_db == $den_db) { Db::query(' UPDATE za_den SET pocet=?, den=?, dalsi_den=? ', "0", $den, $dalsi_den); $novy_pocet_den = Db::querySingle('SELECT pocet FROM za_den'); } else { Db::query(' UPDATE za_den SET pocet=?, den=? ', $pocet, $den); $novy_pocet_den = Db::querySingle('SELECT pocet FROM za_den'); } ?> <!DOCTYPE html> <html lang="cs-cz"> <head> <meta charset="utf-8"> <title>Návštěvnost</title> </head> <body> <p>Počet návštěv za den: <?= htmlspecialchars($novy_pocet_den) ?></p> <p>Počet návštěv za měsíc: </p> <p>Počet návštěv za rok: </p> <p>Počet návštěv celkem: </p> </body> </html> A problém je v tom, že to další den nenuluje. Ale když přepíšu tabulku den na další den nebo dalsi_den na dnešní den, tak to ale nuluje. Nemůže být nějaká chyba v zápisu kódu ? Ve wrapperu není chyba. |
||
Hando Profil |
#2 · Zasláno: 22. 10. 2016, 23:21:52
Ahoj.
To je Db wrapper z itnetworku, že? Na první letmý pohled, co má značit tahle podmínka? if ($den_db == $dalsi_den_db or $dalsi_den_db == $den_db) |
||
PavelG Profil |
Hando:
Ano, wrapper je z itnetworku. Tato podmínka má značit, že pokud se den v db rovná dalsimu dni v db nebo obráceně, tak se updatují oba dny na dnešní a další den, a počet návštěv se nastaví na nula. Pokud se to tak nerovná, počet normálně pokračuje +1 a aby nedošlo k nějaké chybě, updatuje se den a další den. |
||
pcmanik Profil |
PavelG:
Operátor porovnávania (==) je komutatívny, čo znamená že nezáleží na poradí tých dvoch premenných. Čiže v konečnom dôsledku 2 krát overuješ to isté ako píše Hando. |
||
bestik_63 Profil |
#5 · Zasláno: 23. 10. 2016, 10:17:05
Jak to pozná, že ten samý člověk tam už nebyl a nepřičte se 2x návštěvnost toho samého člověka?
|
||
Hando Profil |
#6 · Zasláno: 23. 10. 2016, 11:19:36
Tento script to samozřejmě poznat nemůže. Ono tvořit dnes nějakou svou vlastní analytiku je nošení dříví do lesa. Hádám, že se na tom autor pouze učí.
Na řádné odlišení návštěvníka by nestačila ani aplikace rozlišení IP adresy, musel by se řešit otisk prohlížeče... Víc práce než užitku. :) |
||
bestik_63 Profil |
#7 · Zasláno: 23. 10. 2016, 14:15:35
Ahoj, chybu jsem nenašel, ale zkusím ti poradit. Pokud chceš dělat více než jednodenní statistiku, tak bys asi musel použít ještě jinou tabulku nebo případně změnit přístup.
Co takhle udělat tabulku, která bude obsahovat datum a počet přístupů. Pak ti stačí vždycky kouknout jestli je už pro daný den nový záznam a pak ho založit, nebo provést update počtu přístupů pro řádek který tam už bude. V databázi pak jednoduše vyhledáš počet přístupů za jakékoliv období. |
||
PavelG Profil |
#8 · Zasláno: 23. 10. 2016, 15:04:31
bestik_63:
Ahoj, děkuji za rady, a jak by se to dalo udělat? |
||
Časová prodleva: 8 let
|
0