Javascript und MySQL

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.
Antworten
Incognito
Mitglied
Beiträge: 88
Registriert: 10.03.2007 15:33

Javascript und MySQL

Beitrag 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
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17476
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitrag 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 ?
Incognito
Mitglied
Beiträge: 88
Registriert: 10.03.2007 15:33

Beitrag von Incognito »

Wenn jemand die Seite wechselt, auf Zurück klickt,..
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag 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.
KB:knigge
Incognito
Mitglied
Beiträge: 88
Registriert: 10.03.2007 15:33

Beitrag 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
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

An dem Code ist so ziemlich alles falsch, was man irgendwie falsch machen kann :o.
  • 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
KB:knigge
Incognito
Mitglied
Beiträge: 88
Registriert: 10.03.2007 15:33

Beitrag von Incognito »

Ist es möglich, jenes mit AJAX zu realisieren?
Antworten

Zurück zu „Coding & Technik“