Counter Hilfe

EuroCent

Klappstuhl 2.0
Hallo ich bräuchte grad eben mal Hilfe

und Zwar:

Ich habe vier Tabellen angelegt (jetzt, heute, gestern und gesamt)

Also ich lasse Prüfen ob dir IP des Besuchers schon vorhanden ist wenn ja dann Aktualisiere ich die Zeit wenn nicht lege ich sie in der Datenbank an!

Dann Erhöhe ich jeweils heute und Gesamt auf +1

Aber wie mach ich das dann bei Gestern?

Also möchte das wenn 0Uhr ist das heute auf 0 und gestern auf die Zahl von heute gesetzt wird aber wie genau muss ich das dann machen?

Wäre euch sehr dankbar
 
PHP:
<?php
$month = date ( "j" ) < 2 ? date ( "m" ) - 1 : date ( "m" );
$count = date ( "t" , mktime ( 0 , 0 , 0 , $month - 1 , 1 , date ( "Y" ) ) );
$day = date ( "j" ) < 2 ? $count : date ( "j" );

$start = mktime ( 0 , 0 , 0 , $month , $day - 1 , date ( "Y" ) );
$end = mktime ( 23 , 59 , 59 , $month , $day - 1 , date ( "Y" ) );
$sql = "SELECT * FROM `table` WHERE `time` BETWEEN $start AND $end";
?>
 
Zuletzt bearbeitet:
PHP:
<?php
$month = date ( "j" ) < 2 ? date ( "m" ) - 1 : date ( "m" );
$count = date ( "t" , mktime ( 0 , 0 , 0 , $month - 1 , 1 , date ( "Y" ) ) );
$day = date ( "j" ) < 2 ? $count : date ( "j" );

$start = mktime ( 0 , 0 , 0 , $month , $day - 1 , date ( "Y" ) );
$end = mktime ( 23 , 59 , 59 , $month , $day - 1 , date ( "Y" ) );
$sql = "SELECT * FROM `table` WHERE `time` BETWEEN $start AND $end";
?>

Erstmal danke dafür

Also bei Jetzt werden immer die angezeigt die auch derzeit Online sind, welches ich aus time auslese!

Bei Heute, Gestern und Gesamt hab ich nur ein Feld mit Online

Heute und Gesamt werden um +1 erhöht!

Bei Gestern soll dann der gesamt wert aus Heute in Gestern übertragen werden wenn die Uhr 0:00 ist! Dann soll Heute auf 0 wieder gesetzt werden!

Die Frage ist nun wie soll ich das jetzt genau anstellen?
 
Immer wenn jemand online geht, würde ich einen Eintrag in eine Tracking Tabelle schreiben. Wenn du dazu den Timestamp einträgst, kannst du dass so abfragen wie ich geschrieben hatte.
PHP:
<?php
$month = date ( "j" ) < 2 ? date ( "m" ) - 1 : date ( "m" );
$count = date ( "t" , mktime ( 0 , 0 , 0 , $month - 1 , 1 , date ( "Y" ) ) );
$day = date ( "j" ) < 2 ? $count : date ( "j" );

$start = mktime ( 0 , 0 , 0 , $month , $day - 1 , date ( "Y" ) );
$end = mktime ( 23 , 59 , 59 , $month , $day - 1 , date ( "Y" ) );
$sql = "SELECT * FROM `table` WHERE `time` BETWEEN $start AND $end";
?>
 
Immer wenn jemand online geht, würde ich einen Eintrag in eine Tracking Tabelle schreiben. Wenn du dazu den Timestamp einträgst, kannst du dass so abfragen wie ich geschrieben hatte.
PHP:
<?php
$month = date ( "j" ) < 2 ? date ( "m" ) - 1 : date ( "m" );
$count = date ( "t" , mktime ( 0 , 0 , 0 , $month - 1 , 1 , date ( "Y" ) ) );
$day = date ( "j" ) < 2 ? $count : date ( "j" );

$start = mktime ( 0 , 0 , 0 , $month , $day - 1 , date ( "Y" ) );
$end = mktime ( 23 , 59 , 59 , $month , $day - 1 , date ( "Y" ) );
$sql = "SELECT * FROM `table` WHERE `time` BETWEEN $start AND $end";
?>

Sorry wenn ich das frage

Aber was ist eine Tracking Tabelle!

Soll ich eine Neue anlegen, oder wie soll ich das verstehen?

Wenn ja mit welchen werten? Bisher hab ich noch keinen Counter gemacht der mit Gestern war immer nur mit Heute, Jetzt und gesamt
 
Welche Tabelle existiert denn bis jetzt.
Und wie sieht der Quellcode von dem INSERT INTO aus?
 
Welche Tabelle existiert denn bis jetzt.
Und wie sieht der Quellcode von dem INSERT INTO aus?

Meine Index.php

PHP:
//Counter Anfrage
$jetzt = 0;
$heute = 0;
$gestern = 0;
$gesamt = 0;
$date = date("d.m.Y", time());
$zeit = date("H:i", time());

$ips = $_SERVER['REMOTE_ADDR']; // IP-Ermittel
$time = time(); // Zeit ermittlen
// Datenabnk Abfragen ob IP schon vorhanden ist
$online = $db->query("SELECT * FROM jetzt");
while($row = $db->fetch_array($online)) {
	$ip = $row['ip'];
}
/*
Überprüfe ob die IP schon vorhanden ist.
Wenn nicht lege sie und erhöhe den Heute- und Gesamt-Zähler auf 1
*/
if($ips != $ip) {
	$db->query("INSERT INTO jetzt SET time='".$time."', ip='".$ips."'"); // Schreibe IP und die Zeit in die Datenbank
	$db->query("UPDATE heute SET online=online+1"); // Erhöhe Heute auf +1
	$db->query("UPDATE gesamt SET online=online+1"); // Erhöhe Gesamt auf +1
} else {
	$db->query("UPDATE jetzt SET time='".$time."' WHERE ip='".$ips."'");
}

/*
Anzahl Jetzt
*/
$hit_j = $db->query_first("SELECT COUNT(*) AS online FROM jetzt WHERE time='".$time."'");
$hits_j = $hit_j['online'];
if($hits_j > $jetzt) {
	$jetzt = $hits_j;
} else {
	$jetzt;
}
/*
Anzahl Heute
*/
$hit_h = $db->query_first("SELECT COUNT(*) AS online FROM heute");
$hits_h = $hit_h['online'];
if($hits_h > $heute) {
	$heute = $hits_h;
} else {
	$heute;
}
/*
Anzahl Gesamt
*/
$hit_g = $db->query_first("SELECT COUNT(*) AS online FROM gesamt");
$hits_g = $hit_g['online'];
if($hits_g > $gesamt) {
	$gesamt = $hits_g;
} else {
	$gesamt;
}

/*
Anzahl Gestern
*/
$hit_gg = $db->query_first("SELECT COUNT(*) AS online FROM gestern");
$hits_gg = $hit_gg['online'];
if($hits_gg > $gesamt) {
	$gestern = $hits_gg;
} else {
	$gestern;
}

Meine DB:

Code:
-- 
-- Tabellenstruktur für Tabelle `gesamt`
-- 

CREATE TABLE `gesamt` (
  `online` int(11) NOT NULL default '0',
  PRIMARY KEY  (`online`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

-- 
-- Daten für Tabelle `gesamt`
-- 

INSERT INTO `gesamt` VALUES (1);

-- 
-- Tabellenstruktur für Tabelle `gestern`
-- 

CREATE TABLE `gestern` (
  `online` int(11) NOT NULL default '0',
  PRIMARY KEY  (`online`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

-- 
-- Daten für Tabelle `gestern`
-- 

INSERT INTO `gestern` VALUES (0);

-- 
-- Tabellenstruktur für Tabelle `heute`
-- 

CREATE TABLE `heute` (
  `online` int(11) NOT NULL default '0',
  PRIMARY KEY  (`online`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

-- 
-- Daten für Tabelle `heute`
-- 

INSERT INTO `heute` VALUES (1);

-- 
-- Tabellenstruktur für Tabelle `jetzt`
-- 

CREATE TABLE `jetzt` (
  `online` int(11) NOT NULL auto_increment,
  `time` int(11) NOT NULL,
  `ip` varchar(20) collate latin1_general_ci NOT NULL,
  PRIMARY KEY  (`online`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=2 ;

-- 
-- Daten für Tabelle `jetzt`
-- 

INSERT INTO `jetzt` VALUES (1, 1174853319, '127.0.0.1');
 
Eine Tabelle reicht. Die nennst du `track`. Die Tabelle hat die Felder id, ip und date. Der Eintrag verläuft einfach so:
PHP:
$sql = "INSERT INTO `track` (`ip`,`date`) VALUES ('$ip'," . time() . ")";
mysql_query ( $sql );
Und dann kannst du auch die Abfrage machen:
PHP:
<?php
$month = date ( "j" ) < 2 ? date ( "m" ) - 1 : date ( "m" );
$count = date ( "t" , mktime ( 0 , 0 , 0 , $month - 1 , 1 , date ( "Y" ) ) );
$day = date ( "j" ) < 2 ? $count : date ( "j" );

$start = mktime ( 0 , 0 , 0 , $month , $day - 1 , date ( "Y" ) );
$end = mktime ( 23 , 59 , 59 , $month , $day - 1 , date ( "Y" ) );

$sql = "SELECT * FROM `track` WHERE `date` BETWEEN $start AND $end";
$result = mysql_query ( $sql );
$gestern = mysql_num_rows ( $result );
?>
 
Zurück