stats-met-mysql

Gesponsorde koppelingen

PHP script bestanden

  1. stats-met-mysql

« Lees de omschrijving en reacties

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL);

//onderstaand bestandje zorgt voor de verbinding met de database.
require_once 'connect.php';
$sql_ansi = "SET SESSION sql_mode = 'ANSI'";
if(!mysql_query($sql_ansi)){
    echo 'werkt niet in ANSI modus';
    }

//query voor bekijken of er al iemand met dit ip eerder op de dag online is geweest
$getsql = "
    SELECT
        id
    FROM
        visitors
    WHERE
        ip = '"
.$_SERVER['REMOTE_ADDR']."'
    AND
        DATE(online) = CURDATE() LIMIT 1"
;
        //Limit 1 toegevoegd, omdat die als er 1 is gevonden, niet verder hoeft te zoeken.
if($getresult = mysql_query($getsql)){
    if(mysql_num_rows($getresult) == 1){
        //is al eerder online geweest vandaag, alleen tijd aanpassen
        $statsql = "
        UPDATE
            visitors
        SET
            online = NOW()
        WHERE
            ip = '"
.$_SERVER['REMOTE_ADDR']."'
        AND
            DATE(online) = DATE(NOW())"
;
            
        }

    else{
        //nog niet eerder online geweest, maak een nieuwe regel aan
        $statsql = "
        INSERT INTO
            visitors
                (ip, online)
            VALUES
                ('"
.$_SERVER['REMOTE_ADDR']."',NOW())";
        }

    if(!mysql_query($statsql)){
        echo 'Gegevens niet bijgwerkt wegens een fout in de SQL code.';
        }
    }



//---------- HIER IS ALLEEN VOOR WEERGAVE VAN STATISTIEKEN ------
// hier worden het aantal bezoekers geteld die op je site zijn geweest. Een IP telt maar 1 keer per dag

$sql_unique = "
    SELECT
        COUNT(id) AS number
    FROM
        visitors"
;
// deze query haalt het aantal bezoekers op dat in de afgelopen 5 minuten online was        
$sql_now_online = "
    SELECT
        COUNT(id) AS now_online
    FROM
        visitors
    WHERE
        TIMEDIFF(NOW(),online) < '00:10:00'"
;
// deze query haalt het maximum aantal bezoekers op een dag op + de bijbehorende datum. -> Stel dat er 2 dagen zijn dat het maximum is bereikt, hier geeft die de laatste datum weer. (meest recente)        
$sql_max_day = "
    SELECT
        COUNT( id ) AS unique_day,
        DATEDIFF(NOW(),DATE(online)) AS date
    FROM
        visitors
    GROUP BY
        DATE( online ),
        DATEDIFF(NOW(),DATE(online))
    ORDER BY
        unique_day DESC,
        online DESC
    LIMIT
        1"
;
// Deze query bepaald het aantal dagen dat de teller actief is.
$sql_count_avg = "
    SELECT
        DATEDIFF( CURDATE( ) , MIN( DATE( online ) ) ) AS days
    FROM
        visitors"
;
if($result_unique = mysql_query($sql_unique)){
    if(mysql_num_rows($result_unique) >= 1){
        $row_unique = mysql_fetch_assoc($result_unique);
        }

    else{
        $row_unique['number'] = 0;
        }
    }

if($result_now_online = mysql_query($sql_now_online)){
    if(mysql_num_rows($result_now_online) >= 1){
        $row_now_online = mysql_fetch_assoc($result_now_online);
        }

    else{
        $row_now_online['now_online'] = 0;
        }
    }

if($result_max_day = mysql_query($sql_max_day)){
    if(mysql_num_rows($result_max_day) >= 1){
        $row_max_day = mysql_fetch_assoc($result_max_day);
        }

    else{
        $row_max_day['unique_day'] = 0;
        }

    if($row_max_day['date'] == 0){
        $row_max_day['date'] = 'Vandaag';
        }

    elseif($row_max_day['date'] == 1){
        $row_max_day['date'] = $row_max_day['date'].' dag geleden';
        }

    else{
        $row_max_day['date'] = $row_max_day['date'].' dagen geleden';
        }
    }

if($result_count_avg = mysql_query($sql_count_avg)){
    if(mysql_num_rows($result_count_avg) >= 1){
        $row_count_avg = mysql_fetch_assoc($result_count_avg);
        }

    else{
        $row_count_avg['days'] = 0;
        }
    }

?>

<strong>Datum:</strong> <?php echo date('Y-m-d') ?><br />
<strong>Nu online:</strong> <?php echo $row_now_online['now_online']; ?><br />
<strong>Totaal bezoekers:</strong> <?php echo $row_unique['number']; ?><br />
<strong>Max per dag:</strong> <?php echo $row_max_day['unique_day']; ?><br />
<strong>Wanneer:</strong> <?php echo $row_max_day['date']; ?><br />
<strong>Gemiddeld:</strong> <?php
// dit was overigens ook prima via SQL te berekenen, maar deze gegevens had ik reeds verkregen, vandaar via de PHP manier
echo round($row_unique['number']/$row_count_avg['days']); ?>
<br />
<strong>Dagen online:</strong> <?php echo $row_count_avg['days']; ?>

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.