grafiek-met-unieke-bezoekers
Gesponsorde koppelingen
PHP script bestanden
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
<?
/********** MySQL **********
CREATE TABLE `bezoek` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ip` varchar(50) NOT NULL,
`datum` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
********** MySQL ***********/
/********* connect.php ******
*********** Grafiek *********
********** connect.php ******/
$host = ""; // hostname
$db = ""; // database
$user=""; // username
$pass=""; // wachtwoord
$connectie = @mysql_connect ($host, $user, $pass) or die('ERROR: Kan geen verbinding maken met de database'); // onderdrukken van fouten zodat bij eventuele fouten bezoeker geen belangrijke informatie krijgt
@mysql_select_db ($db, $connectie) or die('ERROR: Kan de database niet vinden');
/********** tel.php **********
******** Tel Bezoekers *******
********** tel.php ***********/
include_once("connect.php");
$ip = $_SERVER['REMOTE_ADDR']; // ip-adres
$nu = date("j n Y"); // huidige datum
$results = "SELECT ip FROM bezoek WHERE ip = '$ip' AND date_format(datum, '%e %c %Y') = '$nu'";
$check = mysql_query($results) or die ('Er is een fout opgetreden bij het uitvoeren van de query.');
if(mysql_num_rows($check)==0) // als het je eerste keer is dat je vandaag op deze pagina komt wordt de teller verhoogt
{
$sql = "INSERT INTO bezoek VALUES ('', '$ip', now())";
$query = mysql_query($sql) or die ('Er is een fout opgetreden bij het uitvoeren van de query.');
}
/********** afb.php **********
*********** Grafiek **********
********** afb.php ***********/
// connectie
include_once("connect.php");
// afbeelding maken
header("content-type: image/png"); // soort afbeelding
$image = imagecreate(426, 300); // grootte van de afbeelding (360*200)
// kleuren instellen (RGB waarden)
$achtergrond = imagecolorallocate($image, 234, 234, 234); // achtergrondkleur
$verticale = imagecolorallocate($image, 224, 224, 224); // horizontale en verticale rechten
$zwart = imagecolorallocate($image, 0, 0, 0); // tekst
$grey = imagecolorallocate($image, 180, 180, 180); // balkjes
// verticale strepen trekken
$a=63; // startpunt linker-verticale
for($i=0;$i<12;$i++)
{
imageline($image, $a, 0, $a, 300, $verticale);
$a +=33; // afstand tot linkerkant telkens verhogen
}
// horizontale strepen trekken
$b=0; // startpunt bovenste horizontale
for($i=0;$i<10;$i++)
{
imageline($image,30,$b,426,$b,$verticale);
$b +=30; // afstand tot bovenkant telkens verhogen
}
// gegevens uit database halen per maand en in array steken
$next = date("n")+1; // volgende maand
$vorig_jaar = date("Y")-1; // vorig jaar
$dit_jaar = date("Y"); // dit jaar
for($i=$next;$i<13;$i++)
{ // maanden van vorig jaar
$sql = "SELECT id FROM bezoek WHERE date_format(datum, '%c') = '$i' AND date_format(datum, '%Y') = '$vorig_jaar'";
$query = mysql_query($sql) or die(mysql_error());
$aant_bez = mysql_num_rows($query);
$maand_bez[] = $aant_bez; // aantallen in array steken
}
if($i==13)
{ // maanden dit jaar
for($i=1;$i<$next;$i++)
{
$sql = "SELECT id FROM bezoek WHERE date_format(datum, '%c') = '$i' AND date_format(datum, '%Y') = '$dit_jaar'";
$query = mysql_query($sql) or die(mysql_error());
$aant_bez = mysql_num_rows($query);
$maand_bez[] = $aant_bez; // aantallen in array steken
}
}
// balken weergeven
$maximum=max($maand_bez); // getal selecteren van de maand met meeste bezoekers
$var_opt=34; // startpunt balk tot linker verticale streep
$var_opt2=59; // startpunt balk tot rechter verticale streep
for($i=0;$i<12;$i++)
{
$hoogte=$maand_bez[$i]/$maximum*300; // hoogte van je balkje bepalen
$hoogte=round($hoogte,0);
$tot=300-$hoogte;
imagefilledrectangle($image,$var_opt,$tot,$var_opt2,300,$grey); // balkje tekenen
$var_opt+=33; // telkens 33 px opschuiven nr rechts
$var_opt2+=33; // telkens 33 px opschuiven nr rechts
}
// namen van de maanden weergeven
$maanden_ned=array("Januari","Februari","Maart","April","Mei","Juni","Juli","Augustus","September","Oktober","November","December");
$maand_eng=date("n");
$a=38; // afstand tot linker verticale streep
for($i=$maand_eng;$i<12;$i++)
{
$maand_ned=$maanden_ned[$i];
$maand_ned=substr($maand_ned,0,3);
imagestring($image, 2, $a, 283, $maand_ned, $zwart);
$a +=33;
}
if($i==12)
{
for($i=0;$i<$maand_eng;$i++)
{
$maand_ned=$maanden_ned[$i];
$maand_ned=substr($maand_ned,0,3);
imagestring($image, 2, $a, 283, $maand_ned, $zwart);
$a +=33;
}
}
// aantallen links plaatsen
$b=1;
for($i=10;$i>-1;$i--)
{ // 10 getallen weergeven, van boven naar beneden
$getal=$maximum/10*$i; // getal berekenen
imagestring($image, 1, 3, $b, $getal, $zwart);
$b +=30;
}
// kader trekken rondom afbeelding
imagerectangle($image,30,0,425,299,$zwart);
imagepng($image);
imagedestroy($image);
?>
/********** MySQL **********
CREATE TABLE `bezoek` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ip` varchar(50) NOT NULL,
`datum` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
********** MySQL ***********/
/********* connect.php ******
*********** Grafiek *********
********** connect.php ******/
$host = ""; // hostname
$db = ""; // database
$user=""; // username
$pass=""; // wachtwoord
$connectie = @mysql_connect ($host, $user, $pass) or die('ERROR: Kan geen verbinding maken met de database'); // onderdrukken van fouten zodat bij eventuele fouten bezoeker geen belangrijke informatie krijgt
@mysql_select_db ($db, $connectie) or die('ERROR: Kan de database niet vinden');
/********** tel.php **********
******** Tel Bezoekers *******
********** tel.php ***********/
include_once("connect.php");
$ip = $_SERVER['REMOTE_ADDR']; // ip-adres
$nu = date("j n Y"); // huidige datum
$results = "SELECT ip FROM bezoek WHERE ip = '$ip' AND date_format(datum, '%e %c %Y') = '$nu'";
$check = mysql_query($results) or die ('Er is een fout opgetreden bij het uitvoeren van de query.');
if(mysql_num_rows($check)==0) // als het je eerste keer is dat je vandaag op deze pagina komt wordt de teller verhoogt
{
$sql = "INSERT INTO bezoek VALUES ('', '$ip', now())";
$query = mysql_query($sql) or die ('Er is een fout opgetreden bij het uitvoeren van de query.');
}
/********** afb.php **********
*********** Grafiek **********
********** afb.php ***********/
// connectie
include_once("connect.php");
// afbeelding maken
header("content-type: image/png"); // soort afbeelding
$image = imagecreate(426, 300); // grootte van de afbeelding (360*200)
// kleuren instellen (RGB waarden)
$achtergrond = imagecolorallocate($image, 234, 234, 234); // achtergrondkleur
$verticale = imagecolorallocate($image, 224, 224, 224); // horizontale en verticale rechten
$zwart = imagecolorallocate($image, 0, 0, 0); // tekst
$grey = imagecolorallocate($image, 180, 180, 180); // balkjes
// verticale strepen trekken
$a=63; // startpunt linker-verticale
for($i=0;$i<12;$i++)
{
imageline($image, $a, 0, $a, 300, $verticale);
$a +=33; // afstand tot linkerkant telkens verhogen
}
// horizontale strepen trekken
$b=0; // startpunt bovenste horizontale
for($i=0;$i<10;$i++)
{
imageline($image,30,$b,426,$b,$verticale);
$b +=30; // afstand tot bovenkant telkens verhogen
}
// gegevens uit database halen per maand en in array steken
$next = date("n")+1; // volgende maand
$vorig_jaar = date("Y")-1; // vorig jaar
$dit_jaar = date("Y"); // dit jaar
for($i=$next;$i<13;$i++)
{ // maanden van vorig jaar
$sql = "SELECT id FROM bezoek WHERE date_format(datum, '%c') = '$i' AND date_format(datum, '%Y') = '$vorig_jaar'";
$query = mysql_query($sql) or die(mysql_error());
$aant_bez = mysql_num_rows($query);
$maand_bez[] = $aant_bez; // aantallen in array steken
}
if($i==13)
{ // maanden dit jaar
for($i=1;$i<$next;$i++)
{
$sql = "SELECT id FROM bezoek WHERE date_format(datum, '%c') = '$i' AND date_format(datum, '%Y') = '$dit_jaar'";
$query = mysql_query($sql) or die(mysql_error());
$aant_bez = mysql_num_rows($query);
$maand_bez[] = $aant_bez; // aantallen in array steken
}
}
// balken weergeven
$maximum=max($maand_bez); // getal selecteren van de maand met meeste bezoekers
$var_opt=34; // startpunt balk tot linker verticale streep
$var_opt2=59; // startpunt balk tot rechter verticale streep
for($i=0;$i<12;$i++)
{
$hoogte=$maand_bez[$i]/$maximum*300; // hoogte van je balkje bepalen
$hoogte=round($hoogte,0);
$tot=300-$hoogte;
imagefilledrectangle($image,$var_opt,$tot,$var_opt2,300,$grey); // balkje tekenen
$var_opt+=33; // telkens 33 px opschuiven nr rechts
$var_opt2+=33; // telkens 33 px opschuiven nr rechts
}
// namen van de maanden weergeven
$maanden_ned=array("Januari","Februari","Maart","April","Mei","Juni","Juli","Augustus","September","Oktober","November","December");
$maand_eng=date("n");
$a=38; // afstand tot linker verticale streep
for($i=$maand_eng;$i<12;$i++)
{
$maand_ned=$maanden_ned[$i];
$maand_ned=substr($maand_ned,0,3);
imagestring($image, 2, $a, 283, $maand_ned, $zwart);
$a +=33;
}
if($i==12)
{
for($i=0;$i<$maand_eng;$i++)
{
$maand_ned=$maanden_ned[$i];
$maand_ned=substr($maand_ned,0,3);
imagestring($image, 2, $a, 283, $maand_ned, $zwart);
$a +=33;
}
}
// aantallen links plaatsen
$b=1;
for($i=10;$i>-1;$i--)
{ // 10 getallen weergeven, van boven naar beneden
$getal=$maximum/10*$i; // getal berekenen
imagestring($image, 1, 3, $b, $getal, $zwart);
$b +=30;
}
// kader trekken rondom afbeelding
imagerectangle($image,30,0,425,299,$zwart);
imagepng($image);
imagedestroy($image);
?>