cybton.com
Über uns | Jobs | Werbung | Sitemap | AGB | Impressum | Hilfe ?
 Kostenlos anmelden)
eBooks
Hochgeladene Bilder
Letzte Änderungen

Lexikon

Bücher
Themengebiete

Tutorials


Statistik
Mitglieder gesamt: 68138
Mitglieder online: 6
Gäste online: 9
mehr...

Anzeige
Tutorials » Tutorials: PHP/MySQL » Tutorial: php/mysql Counter

Tutorial: php/mysql Counter

php/mysql Counter

Hier werde ich meinen counter veröffentlichen und auch ein wenig erläutern...Viel Spaß damit


Aänderungen habe ich fett hervorgehoben...
+ 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
<?php
[b]//Verbindugn zur Datenbank:
$connection = mysql_connect("datenbankserver","benutzername","passwort");
mysql_select_db("Name der Datenbank");[/b]
//Definieren der Variablen, die ich noch verwenden werde
$jetzt = time();  //bis zur nächsten Beschreibung alles nötige an Datums und Zeiten
$tstamp = mktime(0, 0, 0, date("m"), date("d"), date("Y"));
$heute = date("Ymd", $tstamp);
$heute2 = date("d.m.Y", $tstamp);
$tstamp = mktime(0, 0, 0, date("m"), date("d")-1, date("Y"));
$gestern = date("Ymd", $tstamp);
$gestern2 = date("d.m.Y", $tstamp);
$ip = $_SERVER['REMOTE_ADDR']; //aufrufen der IP
$now = $jetzt-(86400); //der ip-block steht auf 24h (24*60*60 = 86400)
//Ip Block, ablauf 24h - Einträge in der Datenbank, die älter sind, werden gelöscht
[b]mysql_query("Delete From `counterip` Where `time`<'".$now."'");[/b]
//Abfrage, die die Datensätze löscht, die älter als 24h sind
 
//wenn heute ein neuer Tag ist, dann das bisherige heute mit einer 3 versehen
//ansonsten den gestrigen wert abspeichern
$query3 = mysql_query("SELECT * FROM counter WHERE id = '3' LIMIT 1");
while($row3 = mysql_fetch_array($query3))
 {if($row3[start] == $gestern)
   {$wertg = $row3[wert];}
  else
   {$query4 = mysql_query("SELECT * FROM counter WHERE id = '2' LIMIT 1");
    while($row4 = mysql_fetch_array($query4))
     {$wertg = $row4[wert];
      [b]mysql_query("UPDATE `counter` SET `id` = '' WHERE `id`='3' LIMIT 1");
      mysql_query("UPDATE `counter` SET `id` = '3' WHERE `id`='2' LIMIT 1");
      mysql_query("INSERT INTO counter SET `id` = 2, `wert`=0, `start`=$heute");[/b]
     }
   }
 }
//überprüft, ob die ip geblockt ist
//wenn ja, wird eine variable ($block) dementsprechend gesetzt (auf 0)
 
$query6 = mysql_query("SELECT * FROM `counterip` WHERE `ip` = '$ip' LIMIT 1");
// wenn die ip nicht vorhanden ist, neuen Eintrag anlegen und IP nicht blocken
if (mysql_num_rows($query6) == 0)
 {[b]mysql_query("INSERT INTO counterip SET ip='".$ip."', time='".$jetzt."', counter='1'");[/b]
  $block = 1;}
else
{
while($row6 = mysql_fetch_array($query6))
//wenn die ip vorhanden ist, also nicht gelöscht wurde, wird sie geblockt
 {if($row6[counter] == 1)
   {$block = 0;}
//ansonsten nicht blocken
//also die variable auf 1 setzen, dann wird der Besucher gezählt
  else
   {$block = 1;
    [b]mysql_query("UPDATE `counterip` SET `counter` = '1', `time` = '$jetzt' WHERE `ip`='$ip' LIMIT 1");[/b]
   }
 }
}
//besucher von heute auf  0, wenn heute (in der Datenbank) noch nicht heute(in der Wirklichkeit) ist
$query8 = mysql_query("SELECT * FROM counter WHERE id = '2' LIMIT 1");
while($row8 = mysql_fetch_array($query8))
 {if($row8[start] == $heute)
   {$werth = $row8[wert];}
  else
   {[b]mysql_query("UPDATE `counter` SET `wert` = '0', `start` = '$heute' WHERE `id`='2' LIMIT 1");[/b]
    $werth = 0;}
 }
//Besucher gesamt auslesen
$query10 = mysql_query("SELECT * FROM counter WHERE id = '1' LIMIT 1");
while($row10 = mysql_fetch_array($query10))
 {$werta = $row10[wert];
 }
//besucher heute (gesamt) +1, wenn ip nicht geblockt
if($block==1)
   {$werta++;
    $werth++;
    [b]mysql_query("UPDATE `counter` SET `wert` = '$werth' WHERE `id`='2' LIMIT 1");
    mysql_query("UPDATE `counter` SET `wert` = '$werta' WHERE `id`='1' LIMIT 1");
[/b]    $block = 0;
   }
//max Wert bestimmen, wenn heute max Wert überholt, dann ersetzen
$query13 = mysql_query("SELECT * FROM counter WHERE id = '4' LIMIT 1");
while($row13 = mysql_fetch_array($query13))
 {$wertm = $row13[wert];
  $am = $row13[start];
  if ($werth > $wertm)
   {$wertm = $werth;
    $am = $heute2;
   [b]mysql_query("UPDATE `counter` SET `wert` = '$wertm', `start` = '$heute2' WHERE `id`='4' LIMIT 1");[/b]
   }
 }
//online Besucher bestimmen (in letzten 5min, also 5*60 = 300)
[b]mysql_query("UPDATE `counterip` SET `online` = '$jetzt' WHERE `ip`='$ip' LIMIT 1");[/b]
$now2 = $jetzt-300; //die oben genannten 300
[b]$query16 = mysql_query("SELECT * FROM counterip WHERE `online` >'".$now2."'");
$online2 = mysql_num_rows($query16);[/b]
 
[b]//[/b]in folgenden Variablen stehen folgende Werte
 
echo"
Online-Besucher: $online2 <br>
Besucher-gesamt: $werta <br>
Besucher-Heute: $werth <br>
Besucher-Gestern: $wertg <br>
Besucher-Max: $wertm <br>
Wann war dieses Max?: $am <br>
";
php?>
Das ist erstmal der Code, erklärungen stehen immer hinter //

für die Datenbank müsst ihr nun noch folgende mysql codes ausführen
PHP:
1
2
3
4
5
6
7
8
9
10
CREATE TABLE `counter` (
  `id` int(1) NOT NULL default '0',
  `wert` int(10) NOT NULL default '0',
  `start` varchar(255) NOT NULL default ''
) TYPE=MyISAM;
 
INSERT INTO `counter` VALUES (1, 0, '01.01.2006');
INSERT INTO `counter` VALUES (4, 0, '01.01.2006');
INSERT INTO `counter` VALUES (3, 0, '20060102');
INSERT INTO `counter` VALUES (2, 0, '20060103');
Diese 4 Datensätze sind die Startdatensätze.
Der mit 1 anfängt (id=1) ist die gesamt Zahl seit dem Datum, welches hinten steht (hier 01.01.2006)
Der mit 2 anfängt (id=2) sind die Besucher heute, wieder mit Datum
Der mit 3 anfängt (id=3) sind die Besucher gestern
Der mit 4 anfängt (id=4) ist die Besucherzahl, die bis heute das maximum war

Alle weiteren, die mit der zeit noch dazukommen werden, werden immer id=0 haben, da sie weder gestern, noch heute oder maximum sind, einfach nur die ganzen Tage....

Nun noch eine Datenbank
PHP:
1
2
3
4
5
6
CREATE TABLE `counterip` (
  `ip` varchar(64) NOT NULL default '',
  `time` int(32) default NULL,
  `counter` int(10) NOT NULL default '0',
  `online` int(32) NOT NULL default '0'
) TYPE=MyISAM;
diese wird nur zur ip-sperre benötigt, daher keine Einträge...

ich hoffe euch gefällt der counter, wenn etwas nicht funktioniert, macht mich ruhig nieder, aber bei mir läuft er nun schon ganz lange ohne Probleme...

thx & bitteschön
Michael

Dieses Tutorial wurde von michael88 am 03.01.2006 verfasst.

Kommentare

DarkSweet meinte am 20.10.2006 um 16:21 Uhr:
klappt gut und ist auch gut, nur ich mag es immer nicht, wenn so viel code auf einmal da steht
phpnoob meinte am 04.10.2006 um 11:36 Uhr:
Das Tut ist wirklich sehr gut und hilfreich..
kuatf meinte am 15.04.2006 um 21:15 Uhr:
SEHR GUT!!!!!!
flohundengel meinte am 02.02.2006 um 08:26 Uhr:
@ 123teddy321: Welchen Teil hat er denn vergessen auszukommentieren? @ Michael88: Ist trotzdem ein sehr gutes Tutorial!
123teddy321 meinte am 20.01.2006 um 21:31 Uhr:
Du hast vergessen, einen kleinen teil des codes auszukommentieren! aber ich denke dass kann jeder selber machen! ansonsten nich schlecht! nur hab ich meinen eigenen ;-)
nach obennach oben

Copyright © 2008 cybton-network

Google
Partner: #Musik - Dein Internetradio - nexem. - .wir machen news - Your-Book.net - Dein kostenloses Gästebuch
ANEXIA - PHP Entwicklung - Dockers - s.Oliver Schuhe - Think Schuhe - der eigene Weg - Dorfen - Paul Green Schuhe - Bequeme Geox - Web-Entwicklung