15.02.2006, 14:26
Hallo.
Habe mal wieder nen Problem:
Ich habe mir nen Counter geschrieben. Den in 3 Kategorien Geteilt: Online, Views u. Besucher. Hier mal für alle den Code.
Besucher:
Views:
online:
Die 3 Datein haben natürlich noch keine Verbindung zu einer Datenbank. Ich include die 3 Datein also in einer externen Datei(counter.php) und dort auch die config(dort ist dann auch das Layout der Wiedergabe)
config:
counter.php:
Die Counter.php include ich dann wieder in mein Layout:
Layout: http://www.blacksoul.rof-aue.de/newdesign/
Counter.php: http://blacksoul.rof-aue.de/newdesign/cm...ounter.php
Jetzt habe ich ein Problem: Beim Layout zählt er die Views irgednwie doppelt, aber bei der Counter nur einfach.
Bei Besucher muss ich noch gucken, ob da nen fehler vorliegt, oder es an der IP Sperre liegt, das es sich selten erhöht(im mom 1).
MfG
PS: Weiss jemand warum 1. 2x zählen und beim 2. nur 1x ?
Habe mal wieder nen Problem:
Ich habe mir nen Counter geschrieben. Den in 3 Kategorien Geteilt: Online, Views u. Besucher. Hier mal für alle den Code.
Besucher:
PHP-Code:
<?
######################################
#####Ip löschen wenn die Zeit um ist.#
######################################
$sql = "DELETE FROM
besucherip
WHERE
`timestep`<'$dezeit'";
$result = mysql_query($sql) OR die(mysql_error());
#######################################
#####Holt alle Einträge mit der IP#####
#######################################
$sql = "SELECT
IP
FROM
besucherip
WHERE
`IP` = '$ip'";
$ifip = mysql_query($sql) OR die(mysql_error());
$ifip = mysql_num_rows($ifip);
######################################
##Überprüft ob die Ip eingetragen ist#
######################################
if($ifip == "0")
{
$sql = "INSERT INTO besucherip
(`IP`,`timestep`)
VALUES
('$ip','$zeit')";
$result = mysql_query($sql) OR die(mysql_error());
##########################################
############Zählt Die Besucher############
##########################################
$sql = "UPDATE Besucher
SET `$tag` = `$tag` + '1'
WHERE `ID` = '$monat_zahl'";
$result = mysql_query($sql) OR die(mysql_error());
$sql = "UPDATE
Besucher
SET
gesamt=gesamt+1
WHERE `ID` = '$monat_zahl'";
$monat_gesamt = mysql_query($sql) OR die(mysql_error());
$sql = "UPDATE
Besucher
SET
gesamt=gesamt+1
WHERE `ID` = '13'";
$jahr_gesamt = mysql_query($sql) OR die(mysql_error());
}
$sql = "SELECT `$tag` From Besucher
WHERE `ID` = '$monat_zahl'";
$tag_gesamt = mysql_query($sql) OR die(mysql_error());
$sql = "SELECT `gesamt` From Besucher
WHERE `ID` = '$monat_zahl'";
$monat_gesamt = mysql_query($sql) OR die(mysql_error());
$sql = "SELECT `gesamt` From Besucher
WHERE `ID` = '13'";
$jahr_gesamt = mysql_query($sql) OR die(mysql_error());
$sql = "SELECT `$gestern_tag` From Besucher
WHERE `ID` = '$gestern_monat'";
$gestern_gesamt = mysql_query($sql) OR die(mysql_error());
$row_b1 = mysql_fetch_assoc($tag_gesamt);
$row_b2 = mysql_fetch_assoc($gestern_gesamt);
$row_b3 = mysql_fetch_assoc($monat_gesamt);
$row_b4 = mysql_fetch_assoc($jahr_gesamt);
?>PHP-Code:
<?
$sql = "UPDATE Views
SET `$tag` = `$tag` + '1'
WHERE `ID` = '$monat_zahl'";
$result = mysql_query($sql) OR die(mysql_error());
$sql = "UPDATE
Views
SET
gesamt=gesamt+1
WHERE `ID` = '$monat_zahl'";
$monat_gesamt = mysql_query($sql) OR die(mysql_error());
$sql = "UPDATE
Views
SET
gesamt=gesamt+1
WHERE `ID` = '13'";
$jahr_gesamt = mysql_query($sql) OR die(mysql_error());
$sql = "SELECT `$tag` From Views
WHERE `ID` = '$monat_zahl'";
$tag_gesamt = mysql_query($sql) OR die(mysql_error());
$sql = "SELECT `gesamt` From Views
WHERE `ID` = '$monat_zahl'";
$monat_gesamt = mysql_query($sql) OR die(mysql_error());
$sql = "SELECT `gesamt` From Views
WHERE `ID` = '13'";
$jahr_gesamt = mysql_query($sql) OR die(mysql_error());
$sql = "SELECT `$gestern_tag` From Views
WHERE `ID` = '$gestern_monat'";
$gestern_gesamt = mysql_query($sql) OR die(mysql_error());
$row_v1 = mysql_fetch_assoc($tag_gesamt);
$row_v2 = mysql_fetch_assoc($gestern_gesamt);
$row_v3 = mysql_fetch_assoc($monat_gesamt);
$row_v4 = mysql_fetch_assoc($jahr_gesamt);
?>PHP-Code:
<?
######################################
#####Ip löschen wenn die Zeit um ist.#
######################################
$sql = "DELETE FROM
onlineip
WHERE
`timestep`<'$dezeitonline'";
$result = mysql_query($sql) OR die(mysql_error());
#######################################
#####Holt alle Einträge mit der IP#####
#######################################
$sql = "SELECT
IP
FROM
onlineip
WHERE
`IP` = '$ip'";
$ifip = mysql_query($sql) OR die(mysql_error());
$ifip = mysql_num_rows($ifip);
######################################
##Überprüft ob die Ip eingetragen ist#
######################################
if($ifip == "0")
{
$sql = "INSERT INTO onlineip
(`IP`,`timestep`)
VALUES
('$ip','$zeit')";
$result = mysql_query($sql) OR die(mysql_error());
}
$sql = "SELECT `ID` From onlineip";
$ifip = mysql_query($sql) OR die(mysql_error());
$ifip = mysql_num_rows($ifip);
?>Die 3 Datein haben natürlich noch keine Verbindung zu einer Datenbank. Ich include die 3 Datein also in einer externen Datei(counter.php) und dort auch die config(dort ist dann auch das Layout der Wiedergabe)
config:
PHP-Code:
<?
error_reporting(E_ALL);
define('MYSQL_HOST', '**********');
define('MYSQL_USER', '**********');
define('MYSQL_PASS', '**********');
define('MYSQL_DATABASE', '**********');
@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
$zeit = time(); //timestep
$dezeit = time()-3600;// Zeit nach der ein Besucher wieder gezählt werden soll. Dann wird die IP aus der DB gelöscht. 3600 Sekunden=1 Stunde. Immer in Sekunden angeben!
$dezeitonline = time()-300; // Zeit nach der ein Besucher als nicht mehr online gilt, außer seine IP wurde neu eingetragen
$ip = getenv("REMOTE_ADDR");
$tag = date("j"); //j Tag des Monats ohne führende Nullen 1 bis 31
$monat_zahl = date("n"); //n Monatszahl, ohne führende Nullen 1 bis 12
$gestern_tag = date('j', time() - 24*60*60); // Tag von gestern 1-31
$gestern_monat = date('n', time() - 24*60*60); // Monat von gestern 1-12
$tag = "m".$tag;
$gestern_tag = "m".$gestern_tag;
?>PHP-Code:
$hauptpath = "/var/www/web21/html/newdesign/cms/counter";
include($hauptpath."/config/config.php");
include($hauptpath."/besucher/count_besucher.php");
include($hauptpath."/views/count_views.php");
include($hauptpath."/online/online_besucher.php");
####kommentare######
?>
<table style="border:0px;">
<tr>
<td>
<b><p>Online:</p></b>
</td>
<td>
<p><?php echo $ifip;?></p>
</td>
</tr>
<tr>
<td>
<p><b>Besucher</b></p>
</td>
<td>
</td>
</tr>
<tr>
<td>
Gesamt:
</td>
<td>
<?php echo $row_b4["gesamt"];?>
</td>
</tr>
<tr>
<td>
Heute:
</td>
<td>
<?php echo $row_b1["$tag"];?>
</td>
</tr>
<tr>
<td>
Gestern:
</td>
<td>
<?php echo $row_b2["$gestern_tag"];?>
</td>
</tr>
<tr>
<td>
im Monat:
</td>
<td>
<?php echo $row_b3["gesamt"];?>
</td>
</tr>
<tr>
<td>
<p><b>Views</b></p>
</td>
<td>
</td>
</tr>
<tr>
<td>
Gesamt:
</td>
<td>
<?php echo $row_v4["gesamt"];?>
</td>
</tr>
<tr>
<td>
Heute:
</td>
<td>
<?php echo $row_v1["$tag"];?>
</td>
</tr>
<tr>
<td>
Gestern:
</td>
<td>
<?php echo $row_v2["$gestern_tag"];?>
</td>
</tr>
<tr>
<td>
im Monat:
</td>
<td>
<?php echo $row_v3["gesamt"];?>
</td>
</tr>
</table>
Die Counter.php include ich dann wieder in mein Layout:
PHP-Code:
<?php include("cms/counter/stat/counter.php");?>Layout: http://www.blacksoul.rof-aue.de/newdesign/
Counter.php: http://blacksoul.rof-aue.de/newdesign/cm...ounter.php
Jetzt habe ich ein Problem: Beim Layout zählt er die Views irgednwie doppelt, aber bei der Counter nur einfach.
Bei Besucher muss ich noch gucken, ob da nen fehler vorliegt, oder es an der IP Sperre liegt, das es sich selten erhöht(im mom 1).
MfG
PS: Weiss jemand warum 1. 2x zählen und beim 2. nur 1x ?

Das kommt einfach auf den Syntax an. Wenn du SELECT * FROM `$foobar` schreibst dann nimmt der auch Tabelle $foobar und nicht Spalte^^