Autor Zpráva
PavelG
Profil
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>
1) pocet 2) den 3) dalsi_den
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
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)
Proč je v ní 2x to samé?
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
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
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
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
bestik_63:
Ahoj, děkuji za rady, a jak by se to dalo udělat?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0