Statistika návštěvnosti – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Statistika návštěvnosti – PHP – Fórum – Programujte.comStatistika návštěvnosti – PHP – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
filip
~ Anonymní uživatel
101 příspěvků
26. 2. 2008   #1
-
0
-

nasel jsem nekde na netu navod, jak si udelat statistiky přístupů na stránku - vypíše přístupy on-line, dnes a celkově.
problem je v tom, ze mi to nefunguje tak jak má... nevim v cem je chyba. nezobrazuje to správné výsledky. Když jsem se dnes zkoušel na stránku podívat ze školy a pak jsem se doma díval na ip, které se zapsaly do DB, tak tam byl jen jeden zaznam z moji domaci ip. Cili to nezapisuje vsechny navstevniky...

struktura DB (mysql):



CREATE TABLE `kruzek_pristupy` (
`ip` varchar(19) NOT NULL,
`datum` date NOT NULL default '0000-00-00',
`cas` int(10) NOT NULL default '0',
PRIMARY KEY (`datum`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1250;


php kod na strance, ze ktere chci ziskat statistiky


<?php
@$spojeni = mysql_connect("server", "user", "password") or die('K databázi se nelze připojit, prosim zkuste požadavek opakovat později.');
mysql_select_db('databaze');


function kruzek_pristupy()
{
# funkce zjisti, jestli je dnes v tabulce navstevnik a podle toho ho bud vlozi, nebo mu zmeni cas navstevy na aktualni

$ip = getenv("REMOTE_ADDR"); //zjistime IP

#zjistime, jestli se IP dnes nachazi v tabulce
$dotaz = mysql_query("SELECT * FROM kruzek_pristupy
WHERE datum=NOW() AND ip='$ip'");

#jestli tam je, tak zmenime cas navstevy (kvuli online uzivatelum)
if (mysql_num_rows($dotaz))
$dotaz2 = mysql_query("UPDATE kruzek_pristupy SET cas='".time()."'
WHERE datum=NOW() AND ip='$ip'");
else #pokud neni, tak IP vlozime
$dotaz2 = mysql_query("INSERT INTO kruzek_pristupy (ip, datum, cas) VALUES('$ip',NOW(),'".time()."');");
}

function navstevy()
{
#funkce vraci pole s poctem navstev

$navstevnici = array();
#vybereme pocet vsech ulozenych IP adres
$dotaz = mysql_query("SELECT count(*) FROM kruzek_pristupy");
#vlozime hodnotu do pole
list($navstevnici['celkem'])=mysql_fetch_array($dotaz);

#vybereme pocet unikatnich dennich IP adres pro dnesni den
$dotaz = mysql_query("SELECT count(*) FROM kruzek_pristupy WHERE datum=NOW()");
#vlozime hodnotu do pole
list($navstevnici['dnes'])=mysql_fetch_array($dotaz);

#vybereme dnesni IP, ktere nejsou starsi nez 180 sekund = 3 minuty
$dotaz = mysql_query("SELECT count(*) FROM kruzek_pristupy WHERE datum=NOW() AND cas>='".(time()-180)."'");
#vlozime hodnotu do pole
list($navstevnici['online'])=mysql_fetch_array($dotaz);

#vratime pole
# $navstevnici['celkem'] = pocet navstev celkem
# $navstevnici['dnes'] = pocet navstev za dnesni den
# $navstevnici['online'] = pocet navstev, ktere nejsou starsi jak 3 minuty
return $navstevnici;
}


#zavolame kruzek_pristupy
kruzek_pristupy();
#vytvorime pole s pristupy
$navstevnici = navstevy();

#pole $navstevnici vypiseme
echo "ONLINE: $navstevnici[online]<br>
TODAY: $navstevnici[dnes]<br>
TOTAL: $navstevnici[celkem]<br>";
?>


nevite pls nekdo, v cem by mohla byt chyba?
Je preci jedno, jestli navstevnik se na tu stranku proklika nebo si ji otevre ze zalozek...
Diky

Nahlásit jako SPAM
IP: 213.211.55.–
Reklama
Reklama
byF0
Návštěvník
27. 2. 2008   #2
-
0
-



PRIMARY KEY (`datum`)


Tzn., že datumy budou jako primární klíč (přečti si něco o indexování db) => takže do DB se Ti uloží jeden log za den.

Nahlásit jako SPAM
IP: 90.176.137.–
filip
~ Anonymní uživatel
101 příspěvků
28. 2. 2008   #3
-
0
-

kdybych jako primary key dal 'cas', bylo by to lepsi?

Nahlásit jako SPAM
IP: 213.211.55.–
Camaxtli
~ Anonymní uživatel
3 příspěvky
28. 2. 2008   #4
-
0
-

Já ti nevim, ja bych do ty tabulky přidal ID a jako PRIMARY použil jeho...

Nahlásit jako SPAM
IP: 83.208.206.–
byF0
Návštěvník
28. 2. 2008   #5
-
0
-

To filip : Primary key musí být unikátní -> kdyby do db přišli 2 (a více) příspěvků se stejným časem, uložil by se opět jen jeden. Jak píše níže Camaxtli, mnohem lepší je dát jako primární klíč sloupec id a mít na něm nastavený auto_increment.

Nahlásit jako SPAM
IP: 90.176.137.–
filip
~ Anonymní uživatel
101 příspěvků
28. 2. 2008   #6
-
0
-

ok, provedl jsem a vypadá to, že to jede, tak jak má:)
diky moc

Nahlásit jako SPAM
IP: 213.211.55.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 195 hostů

Podobná vlákna

Statistika — založil Pepa

Statistika — založil liborb

Fotbalová statistika — založil Paja2

Štatistika - strany — založil Lovec

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý