Autor | Zpráva | ||
---|---|---|---|
lopik007 Profil |
#1 · Zasláno: 15. 8. 2010, 15:04:00
Zdravím Vás, moc, ale opravdu moc Vás prosím o pomoc. Dnes jsem si napsal script pro návštěvnost, jenže problém je v tom, že to započítá jen mou návštěvu jednou za den, a ostatních uživatelů ne. Zjistil jsem to tak, že Top-list ukazuje: Dnes: 3 návštěvy, jenže script ukazuje: Dnes: 1 návštěva. Prosím všechny o velkou pomoc, kde ve scriptu který jsem napsal je chyba?
<?php session_start(); include("./spojeni.php"); /* Jednodenní kontrola pro menší zátěž serveru */ if($_SESSION['navstevnost'] != date("d-n-y")) { /* Byl dnes už započítán? */ $zadnes = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS pocet FROM poc_host WHERE ip='$ip' AND datum='".date("Y-m-d")."';")); if($zadnes['pocet'] == 0) { /* Ne? Tak ho započítáme */ $byluz = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS pocet FROM poc_host WHERE ip='$ip';")); if($byluz['pocet'] == 0) { $pocitat = true; mysql_query("INSERT INTO poc_host VALUES('".$ip."', '".date("Y-m-d")."')"); } else { $pocitat = true; mysql_query("UPDATE poc_host SET datum='".date("Y-m-d")."' WHERE ip='".$ip."'"); } if($pocitat) { /* Návštěvnost celkem */ if(mysql_num_rows(mysql_query("SELECT * FROM poc_celkem")) != 0) { $celkem = mysql_result(mysql_query("SELECT * FROM poc_celkem"), 0) + 1; mysql_query("UPDATE poc_celkem SET pocet=pocet+1"); } else { $celkem = 1; mysql_query("INSERT INTO poc_celkem VALUES(1)"); } /* Měsíční návštěvnost */ $aktmesic = mysql_fetch_object(mysql_query("SELECT * FROM poc_mesic WHERE mesic='".date("Y-m-00")."'")); $mesic = $aktmesic->pocet+1; if($mesic == 1) { mysql_query("INSERT INTO poc_mesic VALUES('".date("Y-m-00")."', 1)"); } else { mysql_query("UPDATE poc_mesic SET pocet=pocet+1 WHERE mesic='".date("Y-m-00")."'"); } /* Denní návštěvnost */ $zaznam = mysql_fetch_object(mysql_query("SELECT * FROM poc_dnes WHERE datum='".date("Y-m-d")."'")); $dnes = $zaznam->pocet+1; if($dnes == 1) { mysql_query("INSERT INTO poc_dnes VALUES('".date("Y-m-d")."', 1)"); } else { mysql_query("UPDATE poc_dnes SET pocet=pocet+1 WHERE datum='".date("Y-m-d")."'"); } } $_SESSION['navstevnost'] = date("d-n-y"); } else { $_SESSION['navstevnost'] = date("d-n-y"); } } /* Celkem */ $celkem = mysql_fetch_array(mysql_query("SELECT * FROM poc_celkem;")); $poc_celkem = $celkem['pocet']; /* Unikátní IP */ $celkem_unikat = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS pocet FROM poc_host")); $celkem_unikat = $celkem_unikat['pocet']; /* Za měsíc */ $mesic = mysql_fetch_array(mysql_query("SELECT * FROM poc_mesic WHERE DATE_FORMAT(mesic,'%Y-%m')= DATE_FORMAT(NOW(),'%Y-%m');")); $poc_mesic = $mesic['pocet']; switch (date("n")) { case 1 : $mes = "leden"; break; case 2 : $mes = "únor"; break; case 3 : $mes = "březen"; break; case 4 : $mes = "duben"; break; case 5 : $mes = "květen"; break; case 6 : $mes = "červen"; break; case 7 : $mes = "červenec"; break; case 8 : $mes = "srpen"; break; case 9 : $mes = "září"; break; case 10 : $mes = "říjen"; break; case 11 : $mes = "listopad"; break; case 12 : $mes = "prosinec"; break; } /* Minulý měsíc */ $minuly_mesic = mysql_fetch_array(mysql_query("SELECT * FROM poc_mesic WHERE DATE_FORMAT(mesic,'%Y-%m')= DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 1 MONTH),'%Y-%m');")); $minuly_mesic = $minuly_mesic['pocet']; /* Tento týden */ if(date("l") == "Monday") {$denvtydnu = -1; $tydodecist = -7;} if(date("l") == "Tuesday") {$denvtydnu = -2; $tydodecist = -8;} if(date("l") == "Wednesday"){$denvtydnu = -3; $tydodecist = -9;} if(date("l") == "Thursday") {$denvtydnu = -4; $tydodecist = -10;} if(date("l") == "Friday") {$denvtydnu = -5; $tydodecist = -11;} if(date("l") == "Saturday") {$denvtydnu = -6; $tydodecist = -12;} if(date("l") == "Sunday") {$denvtydnu = -7; $tydodecist = -13;} $tyden = mysql_fetch_array(mysql_query("SELECT SUM(pocet) AS pocet FROM poc_dnes WHERE datum > ADDDATE(now(), '".$denvtydnu."')")); $poc_tyden = $tyden['pocet']; /* Minulý týden */ $minulytyden = mysql_fetch_array(mysql_query("SELECT SUM(pocet) AS pocet FROM poc_dnes WHERE datum BETWEEN ADDDATE(now(), '".$tydodecist."') and ADDDATE(now(), '".$denvtydnu."')")); $minulytyden = $minulytyden['pocet']; /* Dnes */ $dnes = mysql_fetch_array(mysql_query("SELECT * FROM poc_dnes WHERE DATE_FORMAT(datum,'%Y-%m-%d')= DATE_FORMAT(NOW(),'%Y-%m-%d');")); $poc_dnes = $dnes['pocet']; /* Průměrně za den */ $prumer_den = mysql_fetch_array(mysql_query("SELECT avg(pocet) AS prumer FROM poc_dnes;")); $denni_prumer = @round($prumer_den['prumer']); ?> <div class="navstevy"> <div style="text-align:center;font-weight:bold;font-size:13px;border-bottom:solid 1px #000000;background-color:#15add0">Návštěvy stránky</div> <div style="padding: 5px 5px 5px 5px;"> Průměrně za den: <?=$denni_prumer?><br /> Minulý měsic: <?=$minuly_mesic?><br /> Minulý týden: <?=$minulytyden?><br /> Tento týden: <?=$poc_tyden?><br /> Unikátní IP: <?=$celkem_unikat?><br /> Za <?=$mes?>: <td></td><td><?=$poc_mesic?></td><br /> Celkem: <?=$poc_celkem?><br /> Dnes: <?=$poc_dnes?><br /> </div> </div> |
||
marek094 Profil * |
#2 · Zasláno: 15. 8. 2010, 15:22:58
Toplist nepočítá unikátní návštěvy, takže ty "ostatní uživatele" tam nemáš :-) jsi to jen ty!
Taky se mi zdá nereálné aby se návštěvy započítávali jen tobě to je nemožné! Jinak hezkej script. |
||
lopik007 Profil |
#3 · Zasláno: 15. 8. 2010, 18:24:41
marek094:
No započítá se jen když já vstoupím na stránku. V čem je chyba? |
||
lopik007 Profil |
#4 · Zasláno: 15. 8. 2010, 21:24:58 · Upravil/a: lopik007
|
||
Hologos Profil |
#5 · Zasláno: 17. 8. 2010, 00:45:45
Můžu se zeptat, co to jsou "Miny Novinky"?
|
||
lopik007 Profil |
#6 · Zasláno: 17. 8. 2010, 20:18:14 · Upravil/a: lopik007
Hologos:
Tam upravuji texty pro novinky, ale tohle nepatří k tématu. Já vím má tam být i místo y. Již jsem opravil, tohle je starý screen |
||
radas Profil * |
#7 · Zasláno: 17. 8. 2010, 21:27:38
lopik007:
kde je definovana $ip |
||
lopik007 Profil |
#8 · Zasláno: 18. 8. 2010, 01:01:03 · Upravil/a: lopik007
radas:
Změnil bych svou zprávu, ale nemůžu editovat první zprávu v tématu. Prosím vás o pomoc, i když script funguje, ale vypisuje chybovou hlášku. Která po aktualizaci stránky zmizí. Vůbec nevím proč mi to vypisuje chybu. Zde je chybová hláška: Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/free/own.cz/l/lopik/root/www/admin/inc/statik.php on line 9 A zde je poupravený kód: <?php session_start(); include("./spojeni.php"); /* Jednodenní kontrola pro menší zátěž serveru */ if($_SESSION['navstevnost'] != date("d-n-y")) { /* Byl dnes už započítán? */ $zadnes = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS pocet FROM poc_host datum='".date("Y-m-d")."';")); if($zadnes['pocet'] == 0) { /* Ne? Tak ho započítáme */ $byluz = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS pocet FROM poc_host WHERE ip='$ip';")); if($byluz['pocet'] == 0) { $pocitat = true; mysql_query("INSERT INTO poc_host VALUES('".$ip."', '".date("Y-m-d")."')"); } else { $pocitat = true; mysql_query("UPDATE poc_host SET datum='".date("Y-m-d")."''"); } if($pocitat) { /* Návštěvnost celkem */ if(mysql_num_rows(mysql_query("SELECT * FROM poc_celkem")) != 0) { $celkem = mysql_result(mysql_query("SELECT * FROM poc_celkem"), 0) + 1; mysql_query("UPDATE poc_celkem SET pocet=pocet+1"); } else { $celkem = 1; mysql_query("INSERT INTO poc_celkem VALUES(1)"); } /* Měsíční návštěvnost */ $aktmesic = mysql_fetch_object(mysql_query("SELECT * FROM poc_mesic WHERE mesic='".date("Y-m-00")."'")); $mesic = $aktmesic->pocet+1; if($mesic == 1) { mysql_query("INSERT INTO poc_mesic VALUES('".date("Y-m-00")."', 1)"); } else { mysql_query("UPDATE poc_mesic SET pocet=pocet+1 WHERE mesic='".date("Y-m-00")."'"); } /* Denní návštěvnost */ $zaznam = mysql_fetch_object(mysql_query("SELECT * FROM poc_dnes WHERE datum='".date("Y-m-d")."'")); $dnes = $zaznam->pocet+1; if($dnes == 1) { mysql_query("INSERT INTO poc_dnes VALUES('".date("Y-m-d")."', 1)"); } else { mysql_query("UPDATE poc_dnes SET pocet=pocet+1 WHERE datum='".date("Y-m-d")."'"); } } $_SESSION['navstevnost'] = date("d-n-y"); } else { $_SESSION['navstevnost'] = date("d-n-y"); } } /* Celkem */ $celkem = mysql_fetch_array(mysql_query("SELECT * FROM poc_celkem;")); $poc_celkem = $celkem['pocet']; /* Unikátní IP */ $celkem_unikat = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS pocet FROM poc_host")); $celkem_unikat = $celkem_unikat['pocet']; /* Za měsíc */ $mesic = mysql_fetch_array(mysql_query("SELECT * FROM poc_mesic WHERE DATE_FORMAT(mesic,'%Y-%m')= DATE_FORMAT(NOW(),'%Y-%m');")); $poc_mesic = $mesic['pocet']; switch (date("n")) { case 1 : $mes = "leden"; break; case 2 : $mes = "únor"; break; case 3 : $mes = "březen"; break; case 4 : $mes = "duben"; break; case 5 : $mes = "květen"; break; case 6 : $mes = "červen"; break; case 7 : $mes = "červenec"; break; case 8 : $mes = "srpen"; break; case 9 : $mes = "září"; break; case 10 : $mes = "říjen"; break; case 11 : $mes = "listopad"; break; case 12 : $mes = "prosinec"; break; } /* Minulý měsíc */ $minuly_mesic = mysql_fetch_array(mysql_query("SELECT * FROM poc_mesic WHERE DATE_FORMAT(mesic,'%Y-%m')= DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 1 MONTH),'%Y-%m');")); $minuly_mesic = $minuly_mesic['pocet']; /* Tento týden */ if(date("l") == "Monday") {$denvtydnu = -1; $tydodecist = -7;} if(date("l") == "Tuesday") {$denvtydnu = -2; $tydodecist = -8;} if(date("l") == "Wednesday"){$denvtydnu = -3; $tydodecist = -9;} if(date("l") == "Thursday") {$denvtydnu = -4; $tydodecist = -10;} if(date("l") == "Friday") {$denvtydnu = -5; $tydodecist = -11;} if(date("l") == "Saturday") {$denvtydnu = -6; $tydodecist = -12;} if(date("l") == "Sunday") {$denvtydnu = -7; $tydodecist = -13;} $tyden = mysql_fetch_array(mysql_query("SELECT SUM(pocet) AS pocet FROM poc_dnes WHERE datum > ADDDATE(now(), '".$denvtydnu."')")); $poc_tyden = $tyden['pocet']; /* Minulý týden */ $minulytyden = mysql_fetch_array(mysql_query("SELECT SUM(pocet) AS pocet FROM poc_dnes WHERE datum BETWEEN ADDDATE(now(), '".$tydodecist."') and ADDDATE(now(), '".$denvtydnu."')")); $minulytyden = $minulytyden['pocet']; /* Dnes */ $dnes = mysql_fetch_array(mysql_query("SELECT * FROM poc_dnes WHERE DATE_FORMAT(datum,'%Y-%m-%d')= DATE_FORMAT(NOW(),'%Y-%m-%d');")); $poc_dnes = $dnes['pocet']; /* Průměrně za den */ $prumer_den = mysql_fetch_array(mysql_query("SELECT avg(pocet) AS prumer FROM poc_dnes;")); $denni_prumer = @round($prumer_den['prumer']); ?> |
||
PostCC Profil |
#9 · Zasláno: 18. 8. 2010, 08:51:35
lopik007:
Je to napsané v té chybové hlášce. Výsledek MySQL_Query, předaný funkci MySQL_Fetch_Assoc() není MySQL Result. A to proto, že na řádku: $zadnes = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS pocet FROM poc_host datum='".date("Y-m-d")."';")); chybí v SQL příkazu klíčové slovo "WHERE": $zadnes = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS pocet FROM poc_host WHERE datum='".date("Y-m-d")."'")); Dále - za SQL příkazem ve funkci MySQL_Query() se nepíše středník. Rozdělujte provedení příkazu a zpracování výsledku, tedy např.: $Res = MySQL_Query("SELECT COUNT(*) AS pocet FROM poc_host WHERE datum='".date("Y-m-d")."'"); $zadnes = MySQL_Fetch_Assoc($Res); abyste v případě chyby netápal, ve které z funkcí na jediném řádku nastal problém. A pro potřeby ladění aplikace lze zapnout konfigurační direktivu mysql.trace_mode = On, např. pomocí Ini_Set(), aby se chyby vypisovaly přímo do stránky. Samozřejmě v produkci vypnout. |
||
Časová prodleva: 14 let
|
0