murb.com Hauptseite  •   Registrieren  •  SUCHE  •  FAQ  •  Mitgliederliste  •  Forenregeln  •  Login
Neue Antwort erstellen SQL-Counter
Gehe zu Seite 1, 2, 3, 4, 5, 6  Weiter
SQL-Counter
Firewolf
Administrator
Beiträge: 239
Antworten mit Zitat
Hinweis: Eine neue Version des MySQL-Counters steht zur Verfügung: Hier entlang.

Wie angekündigt hier nun der Counter als MySQL-Version:

PHP-Code:
<?php
##################################
#                                #
#  MySQL-Datenbank Zugangsdaten  #
#                                #
##################################

$dbhost "localhost"// Datenbank-Adresse (IP); Standard "localhost"
$dbname "datenbank"// Datenbank-Name
$dbuser "benutzername"// Benutzername
$dbpwd "passwort"// Benutzerpasswort

#### Tabellen ####

$db_counter "sqlc_counter";
$db_iplog "sqlc_iplog";

#### Einstellungen ####

$splitter "&nbsp;&nbsp;|&nbsp;&nbsp;";

##################

$datenbank mysql_connect($dbhost$dbuser$dbpwd);
mysql_select_db($dbname$datenbank);

if (
$_GET[action] == "install"// Tabellen-Installation
{
$installerror 0;
$tabellencheck1 = @mysql_query("SELECT * FROM $db_counter WHERE id = '1'");
if (@
mysql_num_rows($tabellencheck1) != 0)
{
$installerror 1;
echo 
"Die Tabelle &quot;$db_counter&quot; existiert bereits.<br>";
}
$tabellencheck2 = @mysql_query("SELECT * FROM $db_iplog");
if (@
mysql_num_rows($tabellencheck2) != 0)
{
$installerror 1;
echo 
"Die Tabelle &quot;$db_iplog&quot; existiert bereits.";
}
if (
$installerror == 1)
{
exit;
}
else
{
$install1 "CREATE TABLE $db_counter (";
$install1 .= "id int(10) NOT NULL default '0', ";
$install1 .= "online_record int(20) NOT NULL default '0', ";
$install1 .= "today int(20) NOT NULL default '0', ";
$install1 .= "yesterday int(20) NOT NULL default '0', ";
$install1 .= "day_record int(20) NOT NULL default '0', ";
$install1 .= "total int(20) NOT NULL default '0', ";
$install1 .= "pages_total int(20) NOT NULL default '0', ";
$install1 .= "date int(20) NOT NULL default '0', ";
$install1 .= "PRIMARY KEY (id)) TYPE=MyISAM";
mysql_query($install1) or die (mysql_error() . ": " mysql_error() . "\n");
mysql_query("INSERT INTO $db_counter SET id = '1', online_record = '1'");
$install2 "CREATE TABLE $db_iplog (";
$install2 .= "id int(10) NOT NULL auto_increment, ";
$install2 .= "ip varchar(254) NOT NULL default '', ";
$install2 .= "timestamp int(20) NOT NULL default '0', ";
$install2 .= "PRIMARY KEY (id)) TYPE=MyISAM";
mysql_query($install2) or die (mysql_error() . ": " mysql_error() . "\n");
mysql_query("INSERT INTO $db_iplog SET ip = '127.0.0.0'");
echo 
"Installation erfolgreich!";
exit;
}
}

$tabellencheck1 = @mysql_query("SELECT * FROM $db_counter WHERE id = '1'");
$tabellencheck2 = @mysql_query("SELECT * FROM $db_iplog");
if (@
mysql_num_rows($tabellencheck1) == 0)
{
@
mysql_query("INSERT INTO $db_counter SET id = '1', online_record = '1'");
}
if (@
mysql_num_rows($tabellencheck2) == 0)
{
@
mysql_query("INSERT INTO $db_iplog SET ip = '127.0.0.0'");
}
$tabellencheck3 = @mysql_query("SELECT * FROM $db_counter WHERE id = '1'");
$tabellencheck4 = @mysql_query("SELECT * FROM $db_iplog");
if (@
mysql_num_rows($tabellencheck3) == || @mysql_num_rows($tabellencheck4) == 0)
{
echo 
"ERROR: Tabellen sind nicht korrekt installiert.";
exit;
}

$timestamp time(); // Aktuelle Zeit
if (getenv('HTTP_X_FORWARDED_FOR'))
{
$varip getenv('HTTP_X_FORWARDED_FOR');
}
else
{
$varip getenv('REMOTE_ADDR'); 
}

$countuser 1;
$newuser 0;
$fetchlogs mysql_query("SELECT * FROM $db_iplog"$datenbank);
$loganzahl mysql_affected_rows();
if (
$loganzahl 0// Wenn bereits user geloggt wurden
{
while (
$flogs mysql_fetch_array($fetchlogs))
{
if (
$flogs[ip] == $varip// User ist bereits geloggt
{
$diff $timestamp $flogs[timestamp];
if (
$diff 900// Liegt der letzte Besuch länger als diese Zeit zurück, so gilt der User als neuer Besucher
{
$countuser 1;
}
else
{
$countuser 0;
}
$newuser $flogs[id];
if (
$diff 300// Wenn der letzte Besuch länger als diese Zeit her ist, wird die Zeit aktualisiert.
{
$sql "UPDATE $db_iplog SET ";
$sql .= "timestamp = '$timestamp' ";
$sql .= "WHERE id = '$newuser'";
mysql_query($sql);
}
}
}
}
else
{
$countuser 1// User zählt als neuer Besucher (ist noch nicht geloggt)
}

$fetchstats mysql_query("SELECT * FROM $db_counter WHERE id = '1'"$datenbank);
$fstats mysql_fetch_array($fetchstats);

$day date("d");
if (
$day != $fstats[date]) // Ein neuer Tag ist angebrochen...
{
$yesterday $fstats[today];
$sql "UPDATE $db_counter SET ";
$sql .= "date = '$day', ";
$sql .= "yesterday = '$fstats[today]', ";
if (
$countuser == "1")
{
$sql .= "today = '0' ";
}
else
{
$sql .= "today = '1' ";
}
$sql .= "WHERE id = '1'";
mysql_query($sql);
}

$fetchstats mysql_query("SELECT * FROM $db_counter WHERE id = '1'"$datenbank);
$fstats mysql_fetch_array($fetchstats);

$newcounts 0;
if (
$countuser == "1"// User wird gezählt
{
#### ip-log ####
if ($newuser == "0")
{
$sql "INSERT into $db_iplog SET ";
$sql .= "ip = '$varip', ";
$sql .= "timestamp = '$timestamp'";
}
else
{
$sql "UPDATE $db_iplog SET ";
$sql .= "ip = '$varip', ";
$sql .= "timestamp = '$timestamp' ";
$sql .= "WHERE id = '$newuser'";
}
mysql_query($sql);
################

$newtoday $fstats[today] + 1;
if (
$newtoday $fstats[day_record]) // Neuer Tagesrekord?
{
$newdayrecord $newtoday;
}
else
{
$newdayrecord $fstats[day_record];
}
$newtotal $fstats[total] + 1;

$newcounts 1;
}

$newpagestotal $fstats[pages_total] + 1// Neuer Seitenhit

if ($newcounts == "1")
{
$sql "UPDATE $db_counter SET ";
$sql .= "today = '$newtoday', ";
$sql .= "day_record = '$newdayrecord', ";
$sql .= "total = '$newtotal', ";
$sql .= "pages_total = '$newpagestotal' ";
$sql .= "WHERE id = '1'";
mysql_query($sql);
}
else
{
$sql "UPDATE $db_counter SET ";
$sql .= "pages_total = '$newpagestotal' ";
$sql .= "WHERE id = '1'";
mysql_query($sql);
}

##### online-user #####
$newonline 0;
$fetchonline mysql_query("SELECT * FROM $db_iplog"$datenbank);
$useranzahl mysql_affected_rows();
if (
$useranzahl 0)
{
while (
$fonline mysql_fetch_array($fetchonline))
{
$diff $timestamp $fonline[timestamp];
if (
$diff <= 300// Alle Logeinträge die weniger als diese Zeit als sind gelten als Online-User
{
$newonline += 1;
}
}
}
if (
$newonline 1// Weniger als 1 nicht möglich...
{
$newonline 1;
}

if (
$newonline $fstats[online_record]) // Neuer Onlinerekord?
{
$newonlinerecord $newonline;
$sql "UPDATE $db_counter SET ";
$sql .= "online_record = '$newonlinerecord' ";
$sql .= "WHERE id = '1'";
mysql_query($sql);
}
#######################

$fetchlogs mysql_query("SELECT * FROM $db_iplog"$datenbank);
$logsanzahl mysql_affected_rows();
if (
$logsanzahl 100// Es werden maximal [Anzahl] IPs + Timestamp gespeichert
{
$y $logsanzahl 100;
while (
$y 0)
{
$fetchlogs mysql_query("SELECT * FROM $db_iplog ORDER BY id ASC"$datenbank);
$flogs mysql_fetch_array($fetchlogs);
mysql_query("DELETE FROM $db_iplog WHERE id = '$flogs[id]'");
$y -= 1;
}
}

$fetchstats mysql_query("SELECT * FROM $db_counter WHERE id = '1'"$datenbank);
$fstats mysql_fetch_array($fetchstats);

######### Counter ausgeben ##########

$writecounter "Online:&nbsp;".$newonline.$splitter;
$writecounter .= "Onlinerekord:&nbsp;".$fstats[online_record].$splitter;
$writecounter .= "Heute:&nbsp;".$fstats[today].$splitter;
$writecounter .= "Gestern:&nbsp;".$fstats[yesterday].$splitter;
$writecounter .= "Tagesrekord:&nbsp;".$fstats[day_record].$splitter;
$writecounter .= "Gesamt:&nbsp;".$fstats[total].$splitter;
$writecounter .= "Seitenaufrufe:&nbsp;".$fstats[pages_total];
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="100%" align="center" valign="top" style="padding: 2px"><?php echo $writecounter?></td>
</tr>
</table>


Die Datei zum Download gibt es HIER.
Der Counter befindet sich noch in der Testphase... erst wenn alles läuft kommt eine Anleitung dazu und er wird auf murb.com gesetzt.

Kurzanleitung:
1. counter.php öffnen und Datenbank-Zugangsdaten anpassen
2. counter.php uploaden
3. Im Browser folgendes aufrufen: http://www.deinedomain.de/counter.php?action=install
4. counter.php aufrufen und nachsehen, ob er funktioniert
5. counter.php an der gewünschten Stelle einbinden

Bei Fragen und Problemen hier posten.


Zuletzt bearbeitet von Firewolf am 01.11.2007, 23:11, insgesamt 2-mal bearbeitet
Benutzer-Profile anzeigenAlle Beiträge von Firewolf anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchenICQ-Nummer
Gast
Antworten mit Zitat
Ah endlich issa da Very Happy Very Happy

Thx
cheetah
Beiträge: 34
Antworten mit Zitat
Ich nochmal
hab vergessen mich einzuloggen Embarassed

_________________
MFG
ChEeTaH
----------
There are 10 types of people in the world: Those who understand binary, and those who don't...
Benutzer-Profile anzeigenAlle Beiträge von cheetah anzeigenPrivate Nachricht sendenICQ-Nummer
cheetah
Beiträge: 34
Antworten mit Zitat
Hi nochmal
Wie kann ich den Counter senkrecht anordnen? Also

Online
1
-----
Onlinerekord
1

Also eigntl alles mehr mittig Very Happy
Hab schon <br> usw. ausprobiert, wird aber nicht von der php-datei akzeptiert Sad

P.S.Der Counter funzt 1a!! Fettes Lob!

//Edit:
Der counter funzt fast 1a:

Wenn ich die Tabellen leere zeigt der counter die Fehlermeldung an das die Tabellen nicht richtig installiert sind. Ist des a Bug oder muss des so sein?

_________________
MFG
ChEeTaH
----------
There are 10 types of people in the world: Those who understand binary, and those who don't...
Benutzer-Profile anzeigenAlle Beiträge von cheetah anzeigenPrivate Nachricht sendenICQ-Nummer
verzweifelt
moni
Gast
Antworten mit Zitat
hi,

zunächst herzlichen dank für das script.
gestern installiert, design angepasst - alles funktionierte einwandfrei.

heute rufe ich meine seite auf und hab die fehlermeldung:
Code:
"ERROR: Tabellen sind nicht korrekt installiert"


was läuft da schief? würde mich über hilfe freuen.

gruß, moni
moni
Gast
Antworten mit Zitat
cheetah hat Folgendes geschrieben:
Wie kann ich den Counter senkrecht anordnen?
...Hab schon <br> usw. ausprobiert


für zeilenumbruch:

suche
$splitter = "&nbsp;&nbsp;|&nbsp;&nbsp;";

und ersetze mit
$splitter = "<br />";
Firewolf
Administrator
Beiträge: 239
Antworten mit Zitat
cheetah hat Folgendes geschrieben:
Wenn ich die Tabellen leere zeigt der counter die Fehlermeldung an das die Tabellen nicht richtig installiert sind. Ist des a Bug oder muss des so sein?
Das war Absicht, da es eine schnelle Lösung war... habe das ganze jetzt etwas verbessert. Nun sollte (sofern beide Tabellen vorhanden sind) der Counter nach dem Leeren der Tabellen keine Fehlermeldung mehr ausspucken.

Außerdem habe ich die "Trennungsvariable" ($splitter) nach oben gepackt.

Der nächste Schritt wird eine verbesserte Anordungsmöglichkeit, damit z.B. bei senkrechter Ausgabe die Zahlen direkt untereinander stehen (wie auf murb.com zu sehen).
Benutzer-Profile anzeigenAlle Beiträge von Firewolf anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchenICQ-Nummer
cheetah
Beiträge: 34
Antworten mit Zitat
gleicher Link?

_________________
MFG
ChEeTaH
----------
There are 10 types of people in the world: Those who understand binary, and those who don't...
Benutzer-Profile anzeigenAlle Beiträge von cheetah anzeigenPrivate Nachricht sendenICQ-Nummer
Gast
Antworten mit Zitat
Bei mir zählt der Counter nur Seitenaufrufe, gleichzeitige Besucher und alles andere stagniert bei Zahlen zwischen 2 und 10. Das ist definitiv falsch.
Firewolf
Administrator
Beiträge: 239
Antworten mit Zitat
cheetah hat Folgendes geschrieben:
gleicher Link?
Ja, bei Aktualisierungen passe ich den Code und den Link an (daher jetzt auch v.1.02 Very Happy).

Zitat:
Bei mir zählt der Counter nur Seitenaufrufe, gleichzeitige Besucher und alles andere stagniert bei Zahlen zwischen 2 und 10. Das ist definitiv falsch.
Seltsam, so ist es nicht geplant. Wie sieht denn der IP-Log aus?
Benutzer-Profile anzeigenAlle Beiträge von Firewolf anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchenICQ-Nummer
cheetah
Beiträge: 34
Antworten mit Zitat
ok gedownloadet
Thx Very Happy

_________________
MFG
ChEeTaH
----------
There are 10 types of people in the world: Those who understand binary, and those who don't...
Benutzer-Profile anzeigenAlle Beiträge von cheetah anzeigenPrivate Nachricht sendenICQ-Nummer
Gast
Antworten mit Zitat
Welches IP-Log meinst du?
Firewolf
Administrator
Beiträge: 239
Antworten mit Zitat
Die Einträge in der "sqlc_iplog"-Tabelle.
Benutzer-Profile anzeigenAlle Beiträge von Firewolf anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchenICQ-Nummer
Re: verzweifelt
Gast
Antworten mit Zitat
moni hat Folgendes geschrieben:
hi,

zunächst herzlichen dank für das script.
gestern installiert, design angepasst - alles funktionierte einwandfrei.

heute rufe ich meine seite auf und hab die fehlermeldung:
Code:
"ERROR: Tabellen sind nicht korrekt installiert"


was läuft da schief? würde mich über hilfe freuen.

gruß, moni

ich habe weder irgendwelche tabellen geleert noch sonst etwas "gemacht". bitte helft auch einem php-/mysql-neuling. würde es etwas bringen wenn ich meinen angepassten code (der 1 tag lang reibungslos funktionierte) hier poste? ich mache ja (fast) alles was ihr wollt..nur wäre es gut zu wissen, was ihr alles benötigt um mir helfen zu können *seufz
Gast
Antworten mit Zitat
Vielleicht hast du dein Username und/oder das Passwort falsch eingegeben??
SQL-Counter
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Alle Zeiten sind GMT + 1 Stunde  
Seite 1 von 6  

  
  
 Neue Antwort erstellen  
Powered by phpBB © phpBB Group
Design by phpBBStyles.com | Styles Database.
Content © murb.com - Forum