Javascript in php
Lychee
- php
Hallo,
seit längerem versuche ich (blutiger Anfänger) in einer HTML/PHP-Datei einer Variablen onclick das aktuelle Datum/Uhrzeit zuzuweisen. Und zwar nicht das Datum des Datei-Aufrufes, sondern das Datum zum Zeitpunkt des clicks. Der bisherige Wert der Variablen soll jeweils überschrieben werden. Bisher scheiterte ich daran, dass gmdate - wie für php üblich - nur einmal erzeugt wird, nämlich beim Aufrufen der PHP-Datei. Also bräuchte ich sowas wie <?php $clicktime = <ab hier javascript>irgendeine javascript-datums-funktion</javascript-ende>;?>. Aber das geht wohl nicht. Irgendwelche Ideen?
echo $begrüßung;
Bisher scheiterte ich daran, dass gmdate - wie für php üblich - nur einmal erzeugt wird, nämlich beim Aufrufen der PHP-Datei. Also bräuchte ich sowas wie <?php $clicktime = <ab hier javascript>irgendeine javascript-datums-funktion</javascript-ende>;?>. Aber das geht wohl nicht. Irgendwelche Ideen?
PHP arbeitet auf dem Server einen Request ab. Zu der Zeit ist es nur über die Gegebenheiten dieses Requests informiert. Wenn PHP beendet ist, wird das Ergebnis an den Client ausgeliefert. Von da an gibt es auf dem Server keine zugehörige PHP-Script-Instanz mehr. Nun können Dinge nur noch auf dem Client ablaufen, bis dieser wieder einen Reqiest an den Server stellt. Den Request kann man beispielsweise auch mit AJAX auslösen. Aber erkläre doch einmal, was du eigentlich vorhast.
echo "$verabschiedung $name";
Danke bereits für die einleuchtende Erklärung. Das bedeutet also, dass PHP ausschließlich unmittelbar bevor der Client die Daten bekommt, ausgeführt wird, richtig? Also ist der Aufruf onchange="<?php sonstwas;?> unsinnig, weil zu spät. Soweit richtig?
Aber erkläre doch einmal, was du eigentlich vorhast.
Es geht um ein Formular mit sehr vielen Feldern, bei dem die genaue Uhrzeit der Änderung eines jeden Feldes oder Radio-Button-Sets separat gespeichert werden soll. Das geänderte Formular soll dann mit den neuen Daten als preset (und Änderungszeit/-datum im "title"-Attribut des jeweiligen Feldes (bisher mit onchange="parentNode.title = '<?php echo gmdate("j-M-Y, h:i a (T)");?>'" gelöst. Erstellt das title-attribut der Tabellenzelle, in der sich das Feld/Radiobutton befindet) wieder zur Verfügung stehen um erneut geändert werden zu können.
echo $begrüßung;
Danke bereits für die einleuchtende Erklärung. Das bedeutet also, dass PHP ausschließlich unmittelbar bevor der Client die Daten bekommt, ausgeführt wird, richtig? Also ist der Aufruf onchange="<?php sonstwas;?> unsinnig, weil zu spät. Soweit richtig?
Jein. PHP erzeugt eine Ausgabe. Wenn "sonstwas" in deinem Fall eine Ausgabe erzeugt, die Javascript-Code darstellt, dann sieht den der Client als Inhalt vom onchange-Attribut. Es ist nur dann sinnlos, wenn du Gegebenheiten vom Client in "sonstwas" zurückerwartest.
Es geht um ein Formular mit sehr vielen Feldern, bei dem die genaue Uhrzeit der Änderung eines jeden Feldes oder Radio-Button-Sets separat gespeichert werden soll. Das geänderte Formular soll dann mit den neuen Daten als preset [...] wieder zur Verfügung stehen um erneut geändert werden zu können.
Was versprichst du dir davon? Jemand kann an seinem Client Daten ändern bis er schwarz wird. Wann er ein bestimmtes Eingabefeld geändert hat interessiert niemanden, wenn der Server nichts von der Änderung mitbekommt. Denn erst der trägt den geänderten Wert in die Datenbank ein, so dass andere Benutzer darauf Bezug nehmen können. Wenn ich beispielsweise vor der Mittagspause das Feld ändere, das Formular aber nicht absende, der Kunde aber währenddessen anruft und die Mittagspausenvertretung an ihrem Rechner die neuen Daten nicht sieht, dann nützt dir ein "Ich hab doch aber vor dem Mittag - hier sieh die Uhrzeit! - die Daten geändert." gar nichts. Der Änderungszeitpunkt darf in meinen Augen erst der Zeitpunkt des Datenbankeintrag sein. Wenn dieser vom Server selbst eingetragen wird, kann man ihm auch nicht auf dem Client manipulieren.
echo "$verabschiedung $name";
Was versprichst du dir davon? Jemand kann an seinem Client Daten ändern bis er schwarz wird. Wann er ein bestimmtes Eingabefeld geändert hat interessiert niemanden, wenn der Server nichts von der Änderung mitbekommt. Denn erst der trägt den geänderten Wert in die Datenbank ein, so dass andere Benutzer darauf Bezug nehmen können. Wenn ich beispielsweise vor der Mittagspause das Feld ändere, das Formular aber nicht absende, der Kunde aber währenddessen anruft und die Mittagspausenvertretung an ihrem Rechner die neuen Daten nicht sieht, dann nützt dir ein "Ich hab doch aber vor dem Mittag - hier sieh die Uhrzeit! - die Daten geändert." gar nichts. Der Änderungszeitpunkt darf in meinen Augen erst der Zeitpunkt des Datenbankeintrag sein. Wenn dieser vom Server selbst eingetragen wird, kann man ihm auch nicht auf dem Client manipulieren.
Guter Punkt. Manipulation und die Sache mit der Mittagspause. Wenn nur der Zeitpunkt des Datenbankeintrages zählt, ermuntert das die Leute vielleicht, öfter mal zwischendurch zu "speichern". Danke für die Hilfe.
Hallo Lychee,
... Irgendwelche Ideen?
http://de.selfhtml.org/javascript/objekte/date.htm
Gruß, Jürgen
und wie (und wann) kann ich das Resultat dann einer Variablen zuweisen? PHP wird - wie ich soeben gelernt habe - nur serverseitig ausgeführt, bevor die Daten an den Client übergeben werden, also einmal beim aufrufen der Seite und einmal beim Klick auf submit (wenn die "form action="-Seite aufgerufen wird). Uhrzeit/Datum soll aber für jedes Feld separat gespeichert werden.
echo $begrüßung;
http://de.selfhtml.org/javascript/objekte/date.htm
und wie (und wann) kann ich das Resultat dann einer Variablen zuweisen? PHP wird - wie ich soeben gelernt habe - nur serverseitig ausgeführt, bevor die Daten an den Client übergeben werden, also einmal beim aufrufen der Seite und einmal beim Klick auf submit (wenn die "form action="-Seite aufgerufen wird). Uhrzeit/Datum soll aber für jedes Feld separat gespeichert werden.
Wenn du wirklich den Client-Zeitpunkt benötigst, dann musst du ihn beim Request mit übertragen. Einem sichtbaren oder verstecktem Eingabeelement kann Javascript den Inhalt des value-Attributs ändern.
echo "$verabschiedung $name";