[3.3] Eigenen Counter erstellen und einbinden.

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
MDuss
Mitglied
Beiträge: 267
Registriert: 06.02.2008 10:21

Re: [3.3] Eigenen Counter erstellen und einbinden.

Beitrag von MDuss »

HI.

Danke für den Hinweis 69bruno.

Jetzt wo ich das, was Du gesagt hat, weg gelassen habe, wird in die Datenbank geschrieben.
Also scheint die zaehler.php soweit richtig zu laufen.

Jetzt muss ich diese noch in die Indexseite, also die index_body.php einbinden und dann dort auch zum laufen bringen.

MfG
MDuss

[Edit:]
Ich habe jetzt folgendes versucht.

Die Datei zaehler.php sieht jetzt wieder wie folgt aus:

Code: Alles auswählen

<?php
function besucher($record) {
$db_host = "localhost";
$db_username = "d03818c5";
$db_password = "1111111111";
$db_name = "d03818c5";
$db_table = "Counter";
$counter_page = "access_page";
$counter_field = "access_counter";

$db = mysqli_connect ($db_host, $db_username, $db_password, $db_name) or die("Host oder Datenbank nicht erreichbar");

$sql_call = "INSERT INTO ".$db_table." (".$counter_page.", ".$counter_field.") VALUES ('".$record."', 1) ON DUPLICATE KEY UPDATE ".$counter_field." = ".$counter_field." + 1";
mysqli_query($db, $sql_call) or die("Fehler beim Einfügen");

$sql_call = "SELECT ".$counter_field. " FROM ".$db_table." WHERE ".$counter_page. " = '".$record. "'";
$sql_result = mysqli_query($db, $sql_call) or die("SQL-Anfrage fehlgeschlagen");
$row = mysqli_fetch_assoc($sql_result);
$x = $row[$counter_field];

mysqli_close($db);
return $x;
}
?>
Und in der Datei index_body.html habe ich direkt unter der Zeile
<!-- INCLUDE overall_header.html -->
folgendes eingefügt:

Code: Alles auswählen

<?php
include "https://www.meinedomain.de/zaehler.php";
$page_name = "test";
$anzahl_zugriffe = besucher($page_name);
?>
Wenn ich jetzt aber das Forum aufrufe, wird wieder nichts an die Datenbank übergeben.

Also irgendwo ist da noch der Wurm drinnen.

Dumm halt, dass meine PHP Kenntnisse leider nicht existent sind.

Ich hatte mir das ja so vorgestellt.
Wenn die Forumsübersicht, also die index_body.html, aufgerufen wird, dann wird entsprechend der Seitenzähler in der Datenbank über die Funktion in der zaehler.php erhöht, und später wird der Zähler dann auf der Index_body.html wieder ausgegeben. Denn die Hauptseite des Forums wird ja sowieso in dne meisten Fällen mit aufgerufen.
Dann will ich auch die Reloadsperre von der andern Seite mit einbauen, so dass wenn der session Cookie gesetzt ist, die Funktion in der zaehler.php nicht ausgeführt wird, und wenn der eben nicht mehr da ist, dann wird die Funktion eben ausgeführt.

Vorgehabt hatte ich das eigentlich wie folgt:
In der index_body.html ändere ich den Teil wie folgt ab:

Code: Alles auswählen

<?php
session_set_cookie_params(10800);
session_start();
include "https://www.meinedomain.de/zaehler.php";
include "https://www.meinedomain.de/zaehler_nur_auslesen.php";

if(!isset($_SESSION['counter_ip']))
   {
   $page_name = "test";
   $anzahl_zugriffe = besucher($page_name);
   $_SESSION['counter_ip'] = true;
   }
   else { $anzahl_zugriffe = besucher2();}
?>
Wobei zaehler_nur_auslesen.php dann nur so aussehen würde:

Code: Alles auswählen

<?php
function besucher2() {
$db_host = "localhost";
$db_username = "d03818c5";
$db_password = "1111111111";
$db_name = "d03818c5";
$db_table = "Counter";
$counter_page = "access_page";
$counter_field = "access_counter";

$db = mysqli_connect ($db_host, $db_username, $db_password, $db_name) or die("Host oder Datenbank nicht erreichbar");

$sql_call = "SELECT ".$counter_field. " FROM ".$db_table." WHERE ".$counter_page. " = '".$record. "'";
$sql_result = mysqli_query($db, $sql_call) or die("SQL-Anfrage fehlgeschlagen");
$row = mysqli_fetch_assoc($sql_result);
$x = $row[$counter_field];

mysqli_close($db);
return $x;
}
?>

So wird halt je nachdem ob der session Cookie gesetzt ist entweder in die Datenbank eingetragen und ausgelesen oder halt nur ausgelesen. Daher auch die beiden zaehler.php und die beiden Funktionen. Eventuell mache ich hier die Dinge etwas verkompliziert, aber anders wüsste ich im Moment nicht wie ich das machen könnte, da meine PHP Kenntnisse eben sehr gering bis gar nicht vorhanden sind.

MfG
MDuss
Zuletzt geändert von MDuss am 21.11.2021 18:11, insgesamt 1-mal geändert.
69bruno
Mitglied
Beiträge: 445
Registriert: 05.06.2020 08:21

Re: [3.3] Eigenen Counter erstellen und einbinden.

Beitrag von 69bruno »

Dann schreib mal in das php script als erste Zeile:
echo('Wenn du das hier liest, bist du im Script angekommen.');
Dann arbeitest Du an deinem INCLUDE bis es passt.
INCLUDE kann aber meines Wissens keine http-Adressen. Du musst relativ vom Pfad der aufrufenden html-Seite zur zaehler.php verweisen.
Liegen sie im gleichen Verzeichnis, reicht
INCLUDE zaehler.php;
Forum: cruiser-lounge.de
PHPBB-Version: 3.3.11 / Debian-Linux 10 / PHP-Version: 8.1
Benutzeravatar
chris1278
Mitglied
Beiträge: 3532
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: [3.3] Eigenen Counter erstellen und einbinden.

Beitrag von chris1278 »

Also wenn du das in php einbinden willst dann schau dir mal das hier an:

https://area51.phpbb.com/docs/dev/3.3.x ... asics.html

Den code den du mit php laden willst müsstest du dann über eine soganennte listner.php laden und das ganze in eine template variable einbinden die du dann im template ausgeben kannst.

Allerdings versteh ich immer noch nicht so ganz was genau du da ausgeben willst. Die höchstzahl an besucher die das forum bescuht haben stehen ja schon im index in der statistik also das was ich eingangs schon geschrieben habe.
MDuss
Mitglied
Beiträge: 267
Registriert: 06.02.2008 10:21

Re: [3.3] Eigenen Counter erstellen und einbinden.

Beitrag von MDuss »

Das was du da schreibst chris1278 ist doch nur der Rekordzähler wann es die meisten Zeitgleichen Besucher im Forum gab.

Also wenn an Tag 1 5 da waren und an Tag 2 7 da waren, dann zeigt er mir nur die 7 an, die an Tag 2 im Forum waren.
Ich möchte dann aber das er mir an Tag 2 eben 12 Gesamtbesucher anzeigt und nicht die 7 anzeigt. Und wenn an Tag 3 20 Besucher waren, dann soll er mir an Tag 3 eben 32 Anzeigen und nicht nur die 20 vom Tag 3.

@69bruno. Dann werde ich das mal mit relativen pfaden bzw. dem verschieben der Datei versuchen.

MfG
MDuss


[Edit:] Ok, ich habe die zaehler.php in das Verzeichnis kopiert, wo auch die index_body.html liegt, aber ohne Erfolg.
Es wird nichts in die Datenbank reingeschrieben.

Ich habe jetzt auch mal eine Ausgabe mit Echo versucht, da ja bereits Einträge in der Dtaenbank drinnen sind, aber irgendwie klappt das nicht. Es wird auch nichts ausgegeben.

In der index_body.html sie der Code jetzt so aus:
<?php
include "zaehler.php";
$page_name = "test";
$anzahl_zugriffe = besucher($page_name);
?>

<p>
<?php
echo "Sie sind bereits der ", $anzahl_zugriffe, ". Besucher auf dieser Seite!";
?>
</p>
Der Inhalt der zaehler.php sieht aktuell wie folgt aus:
<?php
function besucher($record) {
$db_host = "localhost";
$db_username = "d03818c5";
$db_password = "1111111111";
$db_name = "d03818c5";
$db_table = "Counter";
$counter_page = "access_page";
$counter_field = "access_counter";

$db = mysqli_connect ($db_host, $db_username, $db_password, $db_name) or die("Host oder Datenbank nicht erreichbar");

$sql_call = "INSERT INTO ".$db_table." (".$counter_page.", ".$counter_field.") VALUES ('".$record."', 1) ON DUPLICATE KEY UPDATE ".$counter_field." = ".$counter_field." + 1";
mysqli_query($db, $sql_call) or die("Fehler beim Einfügen");

$sql_call = "SELECT ".$counter_field. " FROM ".$db_table." WHERE ".$counter_page. " = '".$record. "'";
$sql_result = mysqli_query($db, $sql_call) or die("SQL-Anfrage fehlgeschlagen");
$row = mysqli_fetch_assoc($sql_result);
$x = $row[$counter_field];

mysqli_close($db);
return $x;
}
?>
Als Ergebnis sollte dabei Ausgegeben werden: Sie sind bereits der 2. Besucher auf dieser Seite!

Denn das Feld access_counter hat den Wert 2.

Aber es erfolgt rein gar nichts. So wie es aussieht, wird der ganze Block oben in der index_body.html nicht ausgeführt.
Benutzeravatar
chris1278
Mitglied
Beiträge: 3532
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: [3.3] Eigenen Counter erstellen und einbinden.

Beitrag von chris1278 »

MDuss hat geschrieben: 21.11.2021 18:15 Das was du da schreibst chris1278 ist doch nur der Rekordzähler wann es die meisten Zeitgleichen Besucher im Forum gab.

Also wenn an Tag 1 5 da waren und an Tag 2 7 da waren, dann zeigt er mir nur die 7 an, die an Tag 2 im Forum waren.
Ich möchte dann aber das er mir an Tag 2 eben 12 Gesamtbesucher anzeigt und nicht die 7 anzeigt.

Der satz gibt den Besucherrekord aus. Also beispiel wenn da steht am so und so vielten waren 150 besucher zu der und der zeit gleichzeitig online.

Wenn du jetzt einen Counter haben willst müsstest du dich mit der phpbb thematik vedrtraut machen bezüglich extprogramierung dann brauchst du ein php script welches die seitenaufrufe protokoliert (bzw. sollte phpbb das schon irgendwo machen dann eben dort entsprechend daten abgreifen). Dann musst du auch noch schauen sollen bots auch mit regestriert werden usw. Dies must du dann in ein script bauen welches letztenendes eine zahl in eine Variable schreibt und diese in die datenbank einträgt. Das auslesen dieser zahl mittels listner und übergabe als template variable sollte dann das kleinere problem sein.

Allerdings sind meine eigenen php kenntnisse dazu nicht ausreichend um dir den genauen weg zu sagen. sondern kann ich lediglich meine gedanken teilen dazu.
69bruno
Mitglied
Beiträge: 445
Registriert: 05.06.2020 08:21

Re: [3.3] Eigenen Counter erstellen und einbinden.

Beitrag von 69bruno »

Versuchs mal so, Kommas zur Verkettung von Strings und Variablen sind mir nicht geläufig.
echo "Sie sind bereits der " + $anzahl_zugriffe + ". Besucher auf dieser Seite!";
Forum: cruiser-lounge.de
PHPBB-Version: 3.3.11 / Debian-Linux 10 / PHP-Version: 8.1
Benutzeravatar
chris1278
Mitglied
Beiträge: 3532
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: [3.3] Eigenen Counter erstellen und einbinden.

Beitrag von chris1278 »

Also das hab ich in den grundkurs schon gelernt wenn dann muss man das so machen:

Code: Alles auswählen

echo "Sie sind bereits der " . $anzahl_zugriffe . "Besucher auf dieser Seite!";
69bruno
Mitglied
Beiträge: 445
Registriert: 05.06.2020 08:21

Re: [3.3] Eigenen Counter erstellen und einbinden.

Beitrag von 69bruno »

Stimmt, das plus kommt von Javascript. Bei PHP isses der Punkt, sorry
Forum: cruiser-lounge.de
PHPBB-Version: 3.3.11 / Debian-Linux 10 / PHP-Version: 8.1
Benutzeravatar
chris1278
Mitglied
Beiträge: 3532
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: [3.3] Eigenen Counter erstellen und einbinden.

Beitrag von chris1278 »

Bruno ist doch kein Problem.
MDuss
Mitglied
Beiträge: 267
Registriert: 06.02.2008 10:21

Re: [3.3] Eigenen Counter erstellen und einbinden.

Beitrag von MDuss »

So, habe jetzt mal mit Echo getestet und es scheint, dass der Block

Code: Alles auswählen

<?php
include "zaehler.php";
$page_name = "test";
$anzahl_zugriffe = besucher($page_name);
?>
schon nicht ausgeführt wird.
Denn das Echo direkt vor <?php wird angezeigt, ein echo direkt nach <?php wird nicht angezeigt.

Scheinbar ist hier was nicht ganz rund.

@chris1278 genau dafür ist ja die zaehler.php Diese erhöht in einer Datenbank einen Zähler immer um 1, wenn die Indexseite aufgerufen wird. Die Reloadsperre, die ich noch einbauen will, wenn das ganze läuft, soll dann verhindern, dass ein User mehrmals direkt hintereinander gezählt wird.

Das mit dem Punkt geht auch nicht, wahrscheinlich weil die Blöcke <?php..... ?> nicht ausgeführt werden, warum auch immer.

MfG
MDuss
Zuletzt geändert von Kirk am 21.11.2021 19:48, insgesamt 1-mal geändert.
Grund: BBCode geändert
Antworten

Zurück zu „Coding & Technik“