#1

wke

Routinier  (282 Punkte)  ·   männlich  ·   Deutschland  ·   Nachricht senden
 http://www.kleinstaedter.de

  Hallo zusammen,

 

ich habe einen Besucherzähler in PHP erstellt, der die nachstehende Ausgabe erzeugt. Das Script arbeitet mit einer Mysql-Datenbank.     

 

    
  
  Datenbank:


  

Der erste Satzinhalt ist zwingend vorgeschrieben, da hier der Gesamtzähler gespeichert wird:

Hier das PHP-Script.   

<?php   
/* *******************************************************
* Besucherzähler in PHP - heute,gestern, gesamt *
* ---------------------------------------------------------------- *
*  01.11.2013                                                           *      
*********************************************************  *
*/

$verbindung = mysql_connect("dbxxxxxxx.db.1and1.com","dboxxxxxxx","Passwort");
mysql_select_db("dbxxxxxxx");
$ip = $_SERVER["REMOTE_ADDR"];
$ipges = "gesamt";
$today = strtotime("00:00:00");                 
// Zeit in Sekunden ab 1.1.1970 für Heute 00 Uhr
$yesterday = strtotime('-1 day',
$today);       
// Zeit in Sekunden ab 1.1.1970 für Gestern 00 Uhr
$heute = date("d.m.Y", $today);                 
// Zeit TT.NN.JJJJ für Heute
$gestern = date("d.m.Y", $yesterday);           
// Zeit TT.NN.JJJJ für Gestern
//  echo "today = $today<br>";
//  echo "yesterday = $yesterday<br>";
//  echo "heute = $heute<br>";
//  echo "gestern = $gestern<br>"; 

$status = "0";
// gesamt feststellen
$res = mysql_query("SELECT * FROM counter WHERE ip = '$ipges'");
$dsatz = mysql_fetch_assoc($res);
$anzahl_gesamt = $dsatz["gesamt"];  
$sql = mysql_query("SELECT * FROM counter where ip = '$ip' AND time = '$heute'");
$row = mysql_fetch_object($sql);
 
if($ip == $row->ip)  
    {      
        if($heute == $row->time)  
            {        
                $status = "0";      
            }      
        else      
            {         
                 $status = "1";      
            }    
      }
       else       
     {        
           $status = "2";      
     }
/*

switch ($status)      
{      
case "0";             echo "$ip hat uns heute schon besucht<br>";            
                           break;      
case "1";             echo "$ip hat uns heute noch nicht besucht<br>";     
                           break;      
case "2";             echo "$ip $row->ip hat uns heute oder gestern noch nicht besucht<br>";            
                           break;      
}
*/ 

if ($status > 0)      
   {        
    $anzahl_gesamt = $anzahl_gesamt + 1;        
    $sqlab = "INSERT INTO counter SET ip='$ip', time='$heute', datum='$today', gesamt=$anzahl_gesamt";
    mysql_query($sqlab);      
    } 

$anzahl_heute = mysql_query("SELECT * FROM counter WHERE time = '".$heute."' ORDER BY ip DESC"); $anzahl_gestern = mysql_query("SELECT * FROM counter WHERE time = '".$gestern."' ORDER BY ip DESC");

echo "Heute: ";
echo mysql_num_rows($anzahl_heute)."<br>";
echo "Gestern: ";
echo mysql_num_rows($anzahl_gestern)."<br>";  
echo "Gesamt: ";
echo $anzahl_gesamt;

// gesamt in db updaten
$sqlab  = "update counter set gesamt = $anzahl_gesamt where ip = 'gesamt'";
mysql_query($sqlab);

// alle Sätze löschen, die älter als gestern sind
$sqlab  = "delete from counter where datum < '$yesterday'";
mysql_query($sqlab);

?>


  
  
  
  
 
 


Dieser Beitrag wurde bereits 2 mal bearbeitet, zuletzt von »wke« (16.03.2014, 15:15)
#2

Volker W.

Administrator  (7906 Punkte)  ·   männlich  ·   Deutschland  ·   Nachricht senden
 https://www.warmers.de  ·   vwarmers  ·   vwarmers  ·   volkerw68

#3

wke

Routinier  (282 Punkte)  ·   männlich  ·   Deutschland  ·   Nachricht senden
 http://www.kleinstaedter.de

Hallo zusammen,

 

jetzt den Besucherzähler noch einmal mit dem neuen Code-Button. Ich hab das Script noch etwas verschlimmbessert und am Anfang abgefragt, ob die Tabelle schon vorhanden ist und bei fehlender Tabelle eine neue angelegt.

 

Besucherzähler
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
<?php
  /*  ***************************************************************************
      * Besucherzähler in PHP - heute,gestern, gesamt                           *
      * ----------------------------------------------------------------------- *
      * erstellt von Wolfgang Kessel                                            *
      * Version 1.0 : 01.11.2013                                                *
      * ----------------------------------------------------------------------- *
      * Version 1.1 : 16.03.2014 Tabellenname als Variable                      *
      *                          Create Table, wenn Tabelle nicht vorhanden     *
      * ----------------------------------------------------------------------- *
      *                                                                         *
      ***************************************************************************
  */
 
$db_host = "";              # Der Datenbank-Host
$db_user = "root";          # Der Datenbank-Benutzer
$db_password = "";          # Das Passwort für die Datenbank
$db_name = "ksb";           # Der Datenbank-Name
$db_tbl = "counter";        # Der Tabellenname
 
 
$conn = mysql_connect($db_host,$db_user,$db_password) or die (mysql_error());
mysql_select_db($db_name, $conn) or die (mysql_error());
 
// Abfragen, ob Tabelle vorhanden ist
if (!mysql_query("SELECT * FROM $db_tbl"))
{
	    // Create table
        $sql = "CREATE TABLE $db_tbl
        (
        id int NOT NULL AUTO_INCREMENT,
        ip varchar(32) NOT NULL,
        time varchar(48),
        datum bigint(12),
        gesamt int(6),
        PRIMARY KEY (id)
        )";
        $result = mysql_query($sql);
        $sql = "INSERT INTO $db_tbl (id, ip, time, datum, gesamt) VALUES ('1', 'gesamt', '99.99.9999', '999999999999', '64000')";
        $result = mysql_query($sql);
}
 
$ip = $_SERVER["REMOTE_ADDR"];
$ipges = "gesamt";
$today = strtotime("00:00:00");                  // Zeit in Sekunden ab 1.1.1970 für Heute 00 Uhr
$yesterday = strtotime('-1 day', $today);        // Zeit in Sekunden ab 1.1.1970 für Gestern 00 Uhr
$heute = date("d.m.Y", $today);                  // Zeit TT.NN.JJJJ für Heute
$gestern = date("d.m.Y", $yesterday);            // Zeit TT.NN.JJJJ für Gestern
 
$status = "0";
 
// gesamt feststellen
$res = mysql_query("SELECT * FROM $db_tbl WHERE ip = '$ipges'");
$dsatz = mysql_fetch_assoc($res);
$anzahl_gesamt = $dsatz["gesamt"];
 
$sql = mysql_query("SELECT * FROM $db_tbl where ip = '$ip' AND time = '$heute'");
$row = mysql_fetch_object($sql);
 
if($ip == $row->ip)
  {
      if($heute == $row->time)
      {
        $status = "0";
      }
      else
      {
        $status = "1";
      }
  }
else
      {
        $status = "2";
      }
 
if ($status > 0)
      {
        $anzahl_gesamt = $anzahl_gesamt + 1;
        $sqlab = "INSERT INTO $db_tbl SET ip='$ip', time='$heute', datum='$today', gesamt=$anzahl_gesamt";
        mysql_query($sqlab);
      }
 
$anzahl_heute = mysql_query("SELECT * FROM $db_tbl WHERE time = '".$heute."' ORDER BY ip DESC");
$anzahl_gestern = mysql_query("SELECT * FROM $db_tbl WHERE time = '".$gestern."' ORDER BY ip DESC");
 
echo "Heute: ";
echo mysql_num_rows($anzahl_heute)."<br>";
echo "Gestern: ";
echo mysql_num_rows($anzahl_gestern)."<br>";
 
echo "Gesamt: ";
echo $anzahl_gesamt;
 
// gesamt in db updaten
$sqlab  = "update $db_tbl set gesamt = $anzahl_gesamt where ip = 'gesamt'";
mysql_query($sqlab);
 
// alle Sätze löschen, die älter als gestern sind
$sqlab  = "delete from $db_tbl where datum < '$yesterday'";
mysql_query($sqlab);
 
?>

 

So sieht der Besucherzähler aus:

          

 

Datenbank:

  

Der erste Satzinhalt ist zwingend vorgeschrieben, da hier der Gesamtzähler gespeichert wird:

 


Dieser Beitrag wurde bereits 1 mal bearbeitet, zuletzt von »wke« (27.03.2014, 16:16)
#4

risiko98

Forum-Sponsor  (139 Punkte)  ·   männlich  ·   Deutschland  ·   Nachricht senden
 https://www.risikofonds98.de

Sieht doch direkt sehr übersichtlich aus, danke für die Verbesserung !


Gruß,

Jürgen

4707 Aufrufe | 4 Beiträge