|
Home -> Manuali e Tutorials -> Guida PHP -> Counter (2/2)
Scarica il tutorial | Stampa il tutorial | Cerca nel sito
REALIZZARE UN COUNTER IN PHP
Da sottolineare è il vettore globale $_SERVER["HTTP_REFERER"], che mi cattura l'url di provenienza (ad es.: http://www.webstyling.it); per poter memorizzare nel db solo il nome del sito (cioè solo www.webstyling.it), è stata usata la funzione di stringhe explode, passandogli come valore del separatore il "/", per cui il terzo valore dell'array $c associato all'explode stesso è proprio il nome del sito da noi voluto. Tale array globale, assume un valore nullo ogni volta che si effettua un refresh di pagina o si scrive il link diretto nella barra degli URL di IE. Queste opzioni vengono tutte catalogate in un'unica voce nel db, chiamata appunto "Altro". $_SERVER['REMOTE_ADDR'], invece, serve per catturare l'ip dell'utente che si collega al sito, in base al quale viene fatto il controllo sugli utenti online e quello delle visite uniche.
Di seguito è invece riportato il codice del file graf.php che printa le statistiche su grafici o tabelle semplici:
<?
include "../config.php";
$db = mysql_connect("$dbserver", "$dbuser", "$dbpass");
mysql_select_db("$dbbase",$db);
$result = mysql_query("SELECT * FROM annuale where id=1");
while($row=mysql_fetch_array($result,MYSQL_ASSOC))
{
$ret[]=$row;
}
$result2 = mysql_query("SELECT * FROM uniche where id=1");
while($row2=mysql_fetch_array($result2,MYSQL_ASSOC))
{
$ret2[]=$row2;
}
$result3 = mysql_query("SELECT * FROM totali where id=1");
while($row3=mysql_fetch_array($result3,MYSQL_ASSOC))
{
$ret3[]=$row3;
}
?>
<HTML>
<HEAD>
<TITLE>Statistiche Annuali sito www.webstyling.it</TITLE>
<style>
BODY {SCROLLBAR-FACE-COLOR: #dee3e7; SCROLLBAR-HIGHLIGHT-COLOR: #ffffff; SCROLLBAR-SHADOW-COLOR: #dee3e7; SCROLLBAR-3DLIGHT-COLOR: #d1d7dc; SCROLLBAR-ARROW-COLOR: #006699; SCROLLBAR-TRACK-COLOR: #efefef; SCROLLBAR-DARKSHADOW-COLOR: #98aab1; BACKGROUND-COLOR: #e5e5e5; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;font-size:9px;}
TD {
FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;font-size:9px;
}
</style>
<SCRIPT LANGUAGE="JavaScript">
<!-- Hide JavaScript from Java-Impaired Browsers
function getHplot(v1,v2,v3,v4)
{
n=new initArray(0,0,0,0)
v=new initArray(0,0,0,0)
document.write('<TABLE BORDER=0 cellpadding=5 cellspading=15 WIDTH=450><TR><TD '
+'COLSPAN=3 ALIGN=CENTER><B>Riepilogo Annuale ultimi due anni</'
+'B><BR><BR></TD></TR>');
v[0]=v1;
v[1]=v2;
v[2]=v3;
v[3]=v4;
n[9]=0;
n[6]=0;
n[7]=0;
n[8]=0;
for (var i=0;i<4;i++){
if (v[i].length>n[9]){
n[9]=v[i].length;
}
/* The next three lines are needed for visitors who
still live on the Win3.x platform. If none of your
visitors use older platforms,
n[i]=eval(v[i]);
may be substituted for these three lines. */
str=v[i]
StringToNumber();
n[i]=num; // eval(v[i]); may be substituted
if (n[i]<0){
n[i]=0;
}
n[6]+=n[i];
if (n[i]>n[7]){
n[7]=n[i];
}
}
n[10]=(n[9]+6)*8
n[8]=n[7]/(450-n[10]); // my divisor
document.write('<TR><TD><B>Tot.Scorso'
+'</B></TD><TD><IMG SRC="java98a.gif" HEIGHT=10 WIDTH='
+(n[0]/n[8])+' BORDER=1></TD><TD>'+v[0]+'</TD></TR>'
+'<TR><TD><B>Tot_Uniche.Scorso'
+'</B></TD><TD><IMG SRC="java98b.gif" HEIGHT=10 WIDTH='+(n[1]/n[8])
+' BORDER=1></TD><TD>'+v[1]+'</TD></TR>'
+'<TR><TD><B>Totali'
+'</B></TD><TD><IMG SRC="java98c.gif" HEIGHT=10 WIDTH='+(n[2]/n[8])
+' BORDER=1></TD><TD>'+v[2]+'</TD></TR>'
+'<TR><TD><B>Tot_Uniche'
+'</B></TD><TD><IMG SRC="java98d.gif" HEIGHT=10 WIDTH='+(n[3]/n[8])
+' BORDER=1></TD><TD>'+v[3]+'</TD></TR>');
document.write('<TR><TD COLSPAN=3><HR NOSHADE></TD></TR></TABLE>');
}
function getVplot(title,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12)
{
n=new initArray(0,0,0,0,0,0,0,0,0,0,0,0)
v=new initArray(0,0,0,0,0,0,0,0,0,0,0,0)
v[0]=v1;
v[1]=v2;
v[2]=v3;
v[3]=v4;
v[4]=v5;
v[5]=v6;
v[6]=v7;
v[7]=v8;
v[8]=v9;
v[9]=v10;
v[10]=v11;
v[11]=v12;
n[12]=0;
n[13]=0;
n[14]=0;
n[15]=0;
for (var i=0;i<12;i++){
if (v[i].length>n[15]){
n[15]=v[i].length;
}
/* The next three lines are needed for visitors who
still live on the Win3.x platform. If none of your
visitors use older platforms,
n[i]=eval(v[i]);
may be substituted for these three lines. */
str=v[i]
StringToNumber();
n[i]=num; // eval(v[i]); may be substituted
if (n[i]<0){
n[i]=0;
}
n[12]+=n[i];
if (n[i]>n[13]){
n[13]=n[i];
}
}
n[14]=n[13]/100; // my divisor
document.write('<P><TABLE BORDER=0 cellpadding=5 cellspading=15 WIDTH=450><TR><TD'
+' COLSPAN=12 ALIGN=CENTER><B>'+title+'</B><BR><BR></TD></TR><TR>'
+'<TD VALIGN=BOTTOM ALIGN=CENTER><IMG SRC="java98a.gif" HEIGHT='
+(n[0]/n[14])
+' WIDTH=50 BORDER=1></TD>'
+'<TD VALIGN=BOTTOM ALIGN=CENTER><IMG SRC="java98b.gif" HEIGHT='
+(n[1]/n[14])+' WIDTH=50 BORDER=1></TD>'
+'<TD VALIGN=BOTTOM ALIGN=CENTER><IMG SRC="java98c.gif" HEIGHT='
+(n[2]/n[14])+' WIDTH=50 BORDER=1></TD>'
+'<TD VALIGN=BOTTOM ALIGN=CENTER><IMG SRC="java98d.gif" HEIGHT='
+(n[3]/n[14])+' WIDTH=50 BORDER=1></TD>'
+'<TD VALIGN=BOTTOM ALIGN=CENTER><IMG SRC="java98e.gif" HEIGHT='
+(n[4]/n[14])+' WIDTH=50 BORDER=1></TD>'
+'<TD VALIGN=BOTTOM ALIGN=CENTER><IMG SRC="java98a.gif" HEIGHT='
+(n[5]/n[14])+' WIDTH=50 BORDER=1></TD>'
+'<TD VALIGN=BOTTOM ALIGN=CENTER><IMG SRC="java98b.gif" HEIGHT='
+(n[6]/n[14])+' WIDTH=50 BORDER=1></TD>'
+'<TD VALIGN=BOTTOM ALIGN=CENTER><IMG SRC="java98c.gif" HEIGHT='
+(n[7]/n[14])+' WIDTH=50 BORDER=1></TD>'
+'<TD VALIGN=BOTTOM ALIGN=CENTER><IMG SRC="java98d.gif" HEIGHT='
+(n[8]/n[14])+' WIDTH=50 BORDER=1></TD>'
+'<TD VALIGN=BOTTOM ALIGN=CENTER><IMG SRC="java98e.gif" HEIGHT='
+(n[9]/n[14])+' WIDTH=50 BORDER=1></TD>'
+'<TD VALIGN=BOTTOM ALIGN=CENTER><IMG SRC="java98a.gif" HEIGHT='
+(n[10]/n[14])+' WIDTH=50 BORDER=1></TD>'
+'<TD VALIGN=BOTTOM ALIGN=CENTER><IMG SRC="java98b.gif" HEIGHT='
+(n[11]/n[14])+' WIDTH=50 BORDER=1></TD></TR><TR>'
+'<TD ALIGN=CENTER><B>Gen.</B></TD>'
+'<TD ALIGN=CENTER><B>Feb.</B></TD>'
+'<TD ALIGN=CENTER><B>Mar.</B></TD>'
+'<TD ALIGN=CENTER><B>Apr.</B></TD>'
+'<TD ALIGN=CENTER><B>Mag.</B></TD>'
+'<TD ALIGN=CENTER><B>Giu.</B></TD>'
+'<TD ALIGN=CENTER><B>Lug.</B></TD>'
+'<TD ALIGN=CENTER><B>Ago.</B></TD>'
+'<TD ALIGN=CENTER><B>Set.</B></TD>'
+'<TD ALIGN=CENTER><B>Ott.</B></TD>'
+'<TD ALIGN=CENTER><B>Nov.</B></TD>'
+'<TD ALIGN=CENTER><B>Dic.</B></TD></TR>'
+'<TR><TD ALIGN=CENTER>'+v[0]+'</B></TD>'
+'<TD ALIGN=CENTER>'+v[1]+'</TD>'
+'<TD ALIGN=CENTER>'+v[2]+'</TD>'
+'<TD ALIGN=CENTER>'+v[3]+'</TD>'
+'<TD ALIGN=CENTER>'+v[4]+'</TD>'
+'<TD ALIGN=CENTER>'+v[5]+'</TD>'
+'<TD ALIGN=CENTER>'+v[6]+'</TD>'
+'<TD ALIGN=CENTER>'+v[7]+'</TD>'
+'<TD ALIGN=CENTER>'+v[8]+'</TD>'
+'<TD ALIGN=CENTER>'+v[9]+'</TD>'
+'<TD ALIGN=CENTER>'+v[10]+'</TD>'
+'<TD ALIGN=CENTER>'+v[11]+'</TD></TR><TR><TD COLSPAN=12'
+'><HR NOSHADE><P></TD></TR></TABLE>');
}
var pwr=new initArray(1,2,3,4);
pwr[0]=1;
pwr[1]=10;
pwr[2]=100;
pwr[3]=1000;
pwr[4]=10000;
pwr[5]=100000;
pwr[6]=1000000;
pwr[7]=10000000;
pwr[8]=100000000;
pwr[9]=1000000000;
pwr[10]=10000000000;
/* Add more to array - pwr[8]=100000000, etc. -
if strings longer than 8 are to be used. */
var ns="0123456789"
var cr="";
var str="";
/* Pass this function a string (named "str") and it will
return a number (named "num") Useful until all versions
of JavaScript on all platforms support string to numeric
conversions with predictability. */
function StringToNumber(){
num=0;
strl=str.length;
for (var j=strl-1;j>-1;j--){
cr=str.substring(j,j+1);
pos=ns.indexOf(cr);
num+=pos*pwr[strl-j-1];
}
}
function initArray() {
this.length=initArray.arguments.length;
for (var i=0;i<this.length;i++) {
this[i]=initArray.arguments[i];
}
}
// End Hiding -->
</SCRIPT>
</HEAD>
<BODY>
<BR><BR><BR>
<SCRIPT LANGUAGE="JavaScript">
<!-- Hide from JavaScript-Impaired Browsers
getHplot('<?echo($ret[0]["tot_scorso"]);?>','<?echo($ret[0]["tot_uniche_scorso"]);?>','<?echo($ret[0]["totali"]);?>','<?echo($ret[0]["tot_uniche"]);?>');
// End Hiding -->
</SCRIPT>
<BR><BR>
<SCRIPT LANGUAGE="JavaScript">
<!-- Hide from JavaScript-Impaired Browsers
getVplot('Riepilogo Visite Uniche Corrente Anno','<?echo($ret2[0]["gen"]);?>','<?echo($ret2[0]["feb"]);?>','<?echo($ret2[0]["mar"]);?>','<?echo($ret2[0]["apr"]);?>','<?echo($ret2[0]["mag"]);?>','<?echo($ret2[0]["giu"]);?>','<?echo($ret2[0]["lug"]);?>','<?echo($ret2[0]["ago"]);?>','<?echo($ret2[0]["sett"]);?>','<?echo($ret2[0]["ott"]);?>','<?echo($ret2[0]["nov"]);?>','<?echo($ret2[0]["dic"]);?>');
// End Hiding -->
</SCRIPT>
<BR><BR>
<SCRIPT LANGUAGE="JavaScript">
<!-- Hide from JavaScript-Impaired Browsers
getVplot('Riepilogo Pag. Tot. Viste Corrente Anno','<?echo($ret3[0]["gen"]);?>','<?echo($ret3[0]["feb"]);?>','<?echo($ret3[0]["mar"]);?>','<?echo($ret3[0]["apr"]);?>','<?echo($ret3[0]["mag"]);?>','<?echo($ret3[0]["giu"]);?>','<?echo($ret3[0]["lug"]);?>','<?echo($ret3[0]["ago"]);?>','<?echo($ret3[0]["sett"]);?>','<?echo($ret3[0]["ott"]);?>','<?echo($ret3[0]["nov"]);?>','<?echo($ret3[0]["dic"]);?>');
// End Hiding -->
</SCRIPT>
<BR><BR>
<TABLE width=450 cellpadding=0 cellspacing=0 border=1 bordercolor=black>
<TR>
<TD><TABLE width=100% cellpadding=5 cellspacing=5 border=0>
<TR height=30>
<TD bgcolor=#CCCCCC> <B>SITO di provenienza</B></TD>
<TD bgcolor=#CCCCCC width=25> </TD>
</TR>
<?
$result4 = mysql_query("SELECT * FROM url;");
while($row4=mysql_fetch_array($result4,MYSQL_ASSOC))
{
$ret4[]=$row4;
}
foreach($ret4 as $k=>$v)
{
echo("<TR height=20><TD> ".$v["ref"]."</TD><TD><I>".$v["num"]."</I></TD></TR>");
}
?>
</TABLE>
</TD>
</TR>
</TABLE><BR><BR> * <I>Altro</I> : Link diretto o refresh di pagina<BR><BR><BR>
</body>
</html>
<?
mysql_close($db);
?>
|
che non fa altro che printare le query mysql attraverso grafici, realizzati tramite codice javascript, e tabelle.
Torna su | Indice Guida | Pagina << 31 >>
|