Ich versuche nun, selber einen Counter zu programmieren. Die Frage ist aber, ob ich hier bei Bedarf überhaupt Hilfe bekomme, denn als Einsteiger bin ich weiß Gott nicht auf einem Level mit Code von Google, was ja aber - wenn ich das nicht falsch verstanden habe - Voraussetzung ist, damit man hier Hilfe bekommt. Naja, sei es drum, der aktuelle Code ist noch nicht lauffähig, höchstens eine Idee von Code, aber meine Frage von eben steht im Raum: Welche Kriterien muss ich bzw. mein Quellcode erfüllen, damit ich hier auf Unterstützung hoffen kann?
Danke schonmal im Vorraus!
Nachtrag - falls sich jemand den Quellcode bereits ansieht: Ich glaube, einmal auslesen reicht, wenn ich davor per delete und passenden Parametern die alten Zeilen lösche.
Danke schonmal im Vorraus!
PHP-Code:
<?php
// Belegen der Variablen
$dbadress = "";
$dbname = "";
$dbusername = "";
$dbpassword = "";
$remoteaddr = $_SERVER['REMOTE_ADDR']
$tempvisit = getdate()
$nowvisit = $tempvisit[0]
/* Datenbankdesign:
Eine Tabelle "counterdata" mit 3 Spalten: ID(autoincrement), IP-Adresse, DatumUhrzeitStempel
Eine weitere Tabelle "visits" mit einer Spalte: ID(autoincrement)
Erstere dient dem Ausschluss von IP-Adressen als neuer Besuch, falls der vergangene zu kurz zurückliegt.
Zweitere wird immer um 1 erhöht, wenn die IP-Adresse des aktuellen Besuchers nach IP-Adress-Prüfung nicht in der Tabelle counterdata existiert. */
/* TODOS
Testumgebung (xampp) aufsetzen
Testtabelle anlegen (Wie?)
Autoincrement Handling recherchieren und einsetzen
"There was an error running the query" - Zeilen verbessern für spätere Fehlersuche
Umbau in Funktionen zum bequemen Aufruf einzelner Teile bei Bedarf
TESTEN */
// Verbindung zur Datenbank aufbauen
dbconnection = new mysqli('$dbadress', '$dbusername', '$dbpassword', '$dbname');
if($dbconnection->connect_errno > 0){
die('Unable to connect to database [' . $dbconnection->connect_error . ']');
}
// Einträge älter als 1 Stunde löschen
$deletetimestamp = $nowvisit - 3600
$sql = '
DELETE *
FROM `counterdata`
WHERE lastvisit <= '$deletetimestamp'
';
if(!$result = $dbconnection->query($sql)){
die('There was an error running the query [' . $dbconnection->error . ']');
}
/* wird nicht mehr benötigt
// Inhalt der Tabelle "counterdata" auslesen
$sql = '
SELECT id, ipaddr, lastvisit
FROM `counterdata`
';
if(!$result = $dbconnection->query($sql)){
die('There was an error running the query [' . $dbconnection->error . ']');
}
// Überprüfung auf den Zeitstempel
while($row = $result->fetch_assoc()){
if(($nowvisit-$row['lastvisit'])>3600){
// TODO: Eintrag älter als 1 Stunde -> Eintrag löschen
}
*/
// Aktualisierten Datensatz abrufen
$sql = '
SELECT id, ipaddr, lastvisit
FROM `counterdata`
';
if(!$result = $dbconnection->query($sql)){
die('There was an error running the query [' . $dbconnection->error . ']');
}
// Überprüfung auf die IP-Adresse
while($row = $result->fetch_assoc()){
if(($nowvisit-$row['ipaddr']=='$remoteaddr'){
// TODO Aktuellen Zeitstempel setzen
$sql = '
UPDATE counterdata
SET lastvisit = '$nowvisit'
WHERE ipaddr = '$remoteaddr'
';
if(!$result = $dbconnection->query($sql)){
die('There was an error running the query [' . $dbconnection->error . ']');
}
} else {
// Aktuelle IP-Adresse nicht vorhanden
// Zeile in Datenbank hinzufügen und Counter erhöhen
$dbinsert = '
INSERT INTO counterdata
(
id,
ipaddr,
lastvisit
)
VALUES
(
'',
'$remoteaddr',
'$nowvisit'
)
';
if(!$result = $dbconnection->query($dbinsert)){
die('There was an error running the query [' . $dbconnection->error . ']');
}
// Visits um 1 erhöhen
$dbinsert = '
INSERT INTO visits
(
id
)
VALUES
(
'',
)
';
if(!$result = $dbconnection->query($sql)){
die('There was an error running the query [' . $dbconnection->error . ']');
}
}
}
// Datenbankverbindung schliessen
$dbconnection->close();
?>
Kommentar