• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Browserauflösung an PHP-Variable übergeben und in Datenbank speichern

Erklär mal doch mal, was diese function(r) bzw. (in deinem früheren Vorschlag) die function(c) macht. Danke.
Das sind die sogenannten Callback-Funktionen. Diese werden ausgeführt, wenn die $.post(...)-Funktion ausgeführt wurde und eine Antwort von dem Server kommt. Die Antwort von dem Server ist dann in der Variable r bzw. c verfügbar, so dass du auswerten kannst, wie der Server auf deine POST-Anfrage reagiert hat.
 
@miniA4kuser

danke für die Hilfe. Dann kann ich die weglassen, da ich in der Datei, die aufgerufen wird, sehe, was passiert ist. Zu Testzwecken wäre es interessant.
 
Sorry, hatte "r" für "Response" gesetzt ... eigentlich ist es aber ein "c" (= callback). Dass es nur ein Test für die Entwicklungsumgebung ist, stand aber dran ...

Dann ist es - wie schon geäußert - u. U. nicht der JavaScript-Teil. Log doch mal alles (!), was ankommt, in einem Text-File ... das vergleichst Du später mit dem Inhalt Deiner Table und dann wirst zügig dahinter kommen, woher die Abweichung kommt.
 
@Steelwheel,

jetzt hatte ich mit weiteren Variablen, die übergeben werden sollten experimentiert, was nicht klappte. Dann alles wieder zurückgesetzt - und nun geht garnix mehr. Ich muss wohl tatsächlich genau loggen, was eigentlich passiert (und wo nix passiert). Aber nochmal für mein Laienverständnis:

Am Ende der index.php steht folgendes JQ:
Code:
var height = screen.height;
var width = screen.width;
$.post("http://www.meineseite.de/js/statistik_aufloesung.php", {height:height, width:width});
Ich verstehe das so, dass dies die statistik_aufloesung.php auf dem Server aufruft und die Variablen width und height übergibt. Die statistik_aufloesung.php sieht so aus:
PHP:
$width = intval($_POST['width']);
$height = intval($_POST['height']);
$aufl = $width."x". $height;

// Eintrag in Dauerstatidtik BROWSERAUFLÖSUNG
$stmt_auf_neu = $pdo->prepare("INSERT INTO ".TAB_STAT_AUFL." (aufl, zahl) VALUES (?, ?) ON DUPLICATE KEY UPDATE zahl = zahl+1;");
$stmt_auf_neu->execute(array($aufl, 1));
Sie empfängt die Werte und trägt sie in die Datenbank ein. Irgendeine Ausgabe bzw. Rückgabe an den Client erfolgt nicht (macht ja auch keinen Sinn, an Besucher, die gezählt werden, etwas zurück zu geben).

Nach allen Tipps, die ich bisher hier erhalten habe, müsste das doch (theoretisch) funktionieren, oder?

Aber - wie gesagt - ich logge jetzt erstmal, was genau passiert.

- - - Aktualisiert - - -

Jetzt geht überhaupt wieder was, wobei in den letzten 5 Stunden 4 neue Besuche / seitenaufrufe gezählt wurden, aber nur 1 Aufruf der statistik_aufloesung.php (und Eintrag in die Datenbank.

Dass es überhaupt wieder zählt liegt daran, dass ich folgenden Header wieder eingebaut habe (am Anfang der index.php):

PHP:
header('Cache-Control: must-revalidate, pre-check=0, no-store, no-cache, max-age=0, post-check=0');

Sorry übrrigens, den hatte ich bisher nicht erwähnt. Der war bei meinem ursprünglichen Request (im Internet gefunden) als notwendig mit angegeben. Also, ohne ihn passiert nix, mit ihm ab und zu Einträge. Vielleicht ist bei ihm noch etwas falsch....?
 
Also Leute - ich kapituliere!

Die letzten drei Tests ergaben: Jedesmal 5 neue Seitenaufrufe. Dabei gab es im ersten Fall 4 JQ-Aufrufe der PHP-Zielseite, im zweiten 1 Aufruf und im dritten Fall 2 Aufrufe. Ich sehe weit und breit keinen Hinweis, warum es mal klappt und warum nicht.

Es kann eigentlich auch kein Cache-Problem sein, da die geloggten Seitenaufrufe von unterschiedlichen IPs zu unterschiedlichen Zeiten kamen.

Jedenfalls danke für die vielen Tipps, die ihr mir gegeben habt.
 
letztlich entscheidend ist der code im browser, nicht das php gedöns. kannst du denn aktuell selbst den fehler reproduzieren mithilfe verschiedener browser/geräte/freunde? und in dem moment wo ein seitenaufruf erfolgt, in der db aber kein eintrag steht, wie sieht da der code im browser aus und was steht in der console?

danach code soweit reduzieren, das der fehler noch auftritt aber kein ballast mehr da ist. nächster schritt wäre das vorübergehende ersetzen des jq codes durch pures js mit debug ausgaben nach jeder zeile in die console, weil fehler im jq code nicht in der console angezeigt werden.

lösbar ist das aber man muss sehr strukturiert suchen sonst wird das nichts.
 
@mikdoe

Du hast Recht. Von zu Hause aus (von verschiedenen Geräten) hat es immer geklappt. Dann stand logischer Weise auch kein Fehler in der Konsole. Ich müsste es mal von Freunden aus versuchen.
 
ich habe den verdacht, dass steel den aktuellen status deiner entwicklung wissen möchte und nicht irgendein http status. zumindest geht es mir so.
 
Zurück
Oben