| 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: 15 let
|
|||
0