| ||
|
Брояч за уникални посещяния с MySQL![]() Първо трябва да направим таблицата в съответната база данни. Това е кода: create table 'ipcount'( 'id' int not null auto_increment primary key, 'ip' varchar(15) not null, 'timestamp' bigint(15) not null ) Ето го и скрипта, като statistics.php <?php //Тук всеки си слага своите настройки mysql_connect("localhost","root","") or die("There is no connection to the mysql server!"); //ще отбележа,че базата данни ми се казва ipcounter,но вие може да си я създадете с каквото име желаете mysql_select_db("ipcounter") or die("The ipcounter database could not be selected!"); $ip=$_SERVER["REMOTE_ADDR"]; $time=time(); $dnes=0; $v4era=0; $last6=0; $sred_dnevno=0; $rekord_date=time(); $den_na4=mktime(0,0,0,date('m'),date('d'),date('Y')); $den_krai=mktime(0,0,0,date('m'),date('d')+1,date('Y')); $v4era_na4=mktime(0,0,0,date('m'),date('d')-1,date('Y')); $before6=mktime(0,0,0,date('m'),date('d')-6,date('Y')); $query1="select ip,timestamp from ipcount where ip='$ip' and timestamp>='$den_na4'"; $result1=mysql_query($query1) or die("The query1 could not be made!"); $num1=mysql_num_rows($result1); if($num1==0) { $query="insert into ipcount values('','".$ip."','".$time."')"; mysql_query($query); } else { $row=mysql_fetch_array($result1); $timestamp=$row['timestamp']; $ip_baz=$row['ip']; $query="update ipcount set timestamp=".$time." where ip=$ip_baz and timestamp=$timestamp"; mysql_query($query); } //Това е кода за получаването на уникалните посещения днес и вчера $query2="select * from ipcount where timestamp>=$v4era_na4 and timestamp<$den_krai"; $result2=mysql_query($query2); while($row=mysql_fetch_array($result2)) { if($row["timestamp"]<$den_na4) { $v4era++; } else { $dnes++; } } //това е частта от кода за получаването на уникалните посещения(без днешния) за последните 6 дни $query3="select count(distinct ip) from ipcount where timestamp>=$before6 and timestamp<$den_na4"; $result3=mysql_query($query3); $broi=mysql_num_rows($result3); if($broi>0) { list($last6)=mysql_fetch_array($result3); } /*Това е частта от кода за получаването на средно дневните посещения за последните 6 дни,без да броим днешния(той все още не е изтекъл)*/ $query4="select * from ipcount where timestamp>=$before6 and timestamp<$den_na4"; $result4=mysql_query($query4); $sred_dnevno=substr(mysql_num_rows($result4)/6,0,4); /*Това е частта от кода за намирането на рекорда на уникалните посешения за последната седмица,тук вече си вземаме и днешният ден,независимо че не е изминал, защото вече може да имаме рекорд поставен днес*/ for($i=-1;$i<6;$i++) { $a[$i+1]=array(); $na4=mktime(0,0,0,date('m'),date('d')-($i+1),date('Y')); $krai=mktime(0,0,0,date('m'),date('d')-$i,date('Y')); $query5="select ip,timestamp from ipcount where timestamp>=$na4 and timestamp<$krai"; $result5=mysql_query($query5); $a[$i+1][0]=mysql_num_rows($result5); if($a[$i+1][0]>0) { $tek_time=mysql_result($result5,0,'timestamp'); $a[$i+1][1]=date("j F Y",$tek_time); } else { $a[$i+1][1]=0; } } $rekord_mas=max($a[0],$a[1],$a[2],$a[3],$a[4],$a[5],$a[6]); $rekord=$rekord_mas[0]; $rekord_date=$rekord_mas[1]; if($rekord==$a[0][0]) { $rekord_date=$rekord_date."(днес)"; } //Остана само да изведем данните echo "<font color='red' size='4'>Уникални посещения днес:$dnes<br>Уникални посещения вчера:$v4era<br>"; echo "Общо уникални посещения за последните 6 дни(без днешния):$last6<br>"; echo "Уникални посещения средно на ден през последните 6 дни(без днешния): $sred_dnevno<br>Рекорд за последната седмица: ".$rekord." уникални посещения на ".$rekord_date."</font>"; ?> Това което трябва да се визуализира е: Уникални посещения днес: 25 Уникални посещения вчера: 19 Общо уникални посещения за последните 6 дни (без днешния): 110 Уникални посещения средно на ден през последните 6 дни (без днешния):23 Рекорд за последната седмица: 27 уникални посещения поставен на 5 October 2007";
|
|