Seite 1 von 1
Javascript und MySQL
Verfasst: 28.12.2008 20:57
von Incognito
Vorerst: Das ist keine Modifikation für das phpBB!
Hallo,
Ich weiß, dass mit AJAX Updates in einer MySQL-DB durchgeführt werden können. Nun suche ich aber einen Codeabschnitt, der, sollte jemand auf die Seite klicken den Wert einer Tabelle (MySQL) auf 1 stellt, verlässt er diese Seite aber wieder zurück auf 0 stellt.
Gibt es solch ein Codestück, oder könnte es vielleicht einer machen?
mfg
Verfasst: 28.12.2008 21:08
von Dr.Death
Hallo,
wenn jemand den Browser schließt um die Seite zu verlassen wird kein AJAX oder JAVASCRIPT mehr ausgeführt...was dann ?
Verfasst: 28.12.2008 21:09
von Incognito
Wenn jemand die Seite wechselt, auf Zurück klickt,..
Verfasst: 28.12.2008 21:14
von Pyramide
Eine wirklich zuverlässige Methode, um das Verlassen der Seite zu erkennen, gibt es nicht. Mögliche Lösungsansätze sind:
- Regelmäßiges aktualisieren eines Timestamps; wenn dieser mehr als x Sekunden lang nicht aktualisiert wird, wird der Benutzer als abwesend deklariert (so wird es bei phpBB gemacht).
Vorteil: funktioniert unabhängig vom Client
Nachteil: Bei niedrigen Aktualisierungsintervallen träge Reaktionszeit; bei hohen Intervallen hohe Serverbelastung
- Beim Verlassen der Seite wird per Javascript onunload Event ein Popup geöffnet, welches den Benutzer abmeldet. In Kombination mit Frames wird verhindert, dass der Status bei jedem Seitenwechsel kurz auf Offline gesetzt wird
Vorteil: Der Status wird sofort beim Verlassen geändert
Nachteil: Wenn der Benutzer Javascript deaktiviert oder einen Popup-Blocker hat, funktioniert die Variante gar nicht.
- Ständig offen lassen eines Sockets.
Vorteil: Der Status wird sofort beim Verlassen geändert. Zusätzlich können über den Socket Server-Push Nachrichten übertragen werden
Nachteil: Auf Clientseite nur mit Plugins (z.B. Java, Flash) oder eingeschränkt mit Ajax möglich. Sofern man keinen speziell für diesen Zweck programmierten Server benutzt, sondern den normalen Webserver benutzt, bleibt ständig ein Prozess pro Benutzer aktiv; bei den meisten Shared Hostern werden solche Programme deshalb explizit verboten.
Verfasst: 29.12.2008 09:43
von Incognito
Ich habe nun mit meinen minimalistischen JavaScript-Kenntnissen ein Script erstellt, jedoch funktioniert da was noch nicht ..
Code: Alles auswählen
<?php
include("ZUGRIFFSDATEI");
?>
<html>
<head>
<script type="text/javascript">
if(window.onunload)
{
</script>
<?php
$result = mysql_query("UPDATE test SET action='Onunload' WHERE id='2' LIMIT 1");
?>
<script type="text/javascript">
alert("Verlassen");
}
</script>
</head>
<body>
<p>OnUnload-Test</p>
</body>
</html>
Der Wert wird schon beim Eintreten auf 1 gesetzt
Verfasst: 29.12.2008 09:51
von Pyramide
An dem Code ist so ziemlich alles falsch, was man irgendwie falsch machen kann

.
- If-Blöcke kann man nicht einfach so über mehrere <script> Tags verteilen
- PHP wird immer auf Serverseite ausgeführt und Javascript erst dann, wenn die Seite zum Browser gesendet wurde - deine Kombination aus JS+PHP kann also nicht funktionieren.
- onunload ist ein Event-Handler und keine Variable. Anleitung: http://de.selfhtml.org/javascript/sprac ... m#onunload
- Da die aktuelle Seite ja beim onunload bereits geschlossen wird, ist die einzige Möglichkeit, noch eine Anfrage an den Server zu senden, ein Popup-Fenster zu öffnen: http://de.selfhtml.org/javascript/objek ... w.htm#open
Verfasst: 29.12.2008 10:01
von Incognito
Ist es möglich, jenes mit AJAX zu realisieren?