Snippets - Diskussionsthread

Weitere Nachträge zum "JAVA"-Code:

  • Eine Anleitung wäre nicht schlecht, dass man ein Element mit der ID "uhrdiv" haben muss, wo die Uhrzeit dann reinkommt.
  • Der Timer mit 1000 Millisekunden wird nicht gehen, weil kein Rechner so genau is. Das gibt hässliche Sprünge, wenn die Uhrzeit einmal um 10:00:23,984 Uhr und dann 1064 Millisekunden später nochmal angezeigt wird, da is dann nämlich schon 10:00:25 Uhr.
  • Die Leerzeichen am Anfang und am Ende des Uhrzeitstrings kann man sich doch sparen?
 
Was mich zusätzlich bzw. noch viel mehr wundert:

Da wird 'ne Funktion geschrieben, um den Wochentag aus dem Array rauszufischen, welche effektiv nur einmal verwendet wird, während die führenden Nullen viel sinnvoller in einer Funktion angehängt werden könnten.

Ich habe vor kurzem sowas auch schreiben müssen und hänge das etwas angepasst hier mal an:
PHP:
<script>
	// Smallest DomReady: https://www.dustindiaz.com/smallest-domready-ever
	function r(f){/in/.test(document.readyState)?setTimeout('r('+f+')',9):f()}

	r(function () {
		var selector_id = 'uhr', // Id of the element to update
			interval = 100,      // Refresh interval
			days = ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],
			server_time = (0 /* or insert server timestamp here */ * 1000) || new Date().getTime(),
			offset = server_time - new Date().getTime(),
			element = document.getElementById(selector_id);

		// Leave if element is not present in DOM
		if (element === null)
			return;

		function pad (what) {
			return what < 10 ? '0' + what : what;
		}

		setInterval(function () {
			var now = new Date(new Date().getTime() + offset),
				date = [pad(now.getDate()), pad(now.getMonth() + 1), now.getYear() < 999 ? 1900 + now.getYear() : now.getYear()],
				time = [now.getHours(), pad(now.getMinutes()), pad(now.getSeconds())];
			element.innerHTML = days[now.getDay()] + ', ' + date.join('.') + ' ' + time.join(':');
		}, interval);
	});
</script>

<div id="uhr"></div>
 
...
Das ist dann aber JavaScript und nicht Java ;)
Im Titel steht bei dir Java.. :-?

Ups, das tut mir leid, das war so natürlich nicht geplant :-?

Weitere Nachträge zum "JAVA"-Code:

  • Eine Anleitung wäre nicht schlecht, dass man ein Element mit der ID "uhrdiv" haben muss, wo die Uhrzeit dann reinkommt.
  • Der Timer mit 1000 Millisekunden wird nicht gehen, weil kein Rechner so genau is. Das gibt hässliche Sprünge, wenn die Uhrzeit einmal um 10:00:23,984 Uhr und dann 1064 Millisekunden später nochmal angezeigt wird, da is dann nämlich schon 10:00:25 Uhr.
  • Die Leerzeichen am Anfang und am Ende des Uhrzeitstrings kann man sich doch sparen?

  • Ich habe gedacht es reicht wenn die Anleitung im Code steht, kann das natürlich auch ändern
  • ich glaub dir natürlich aufs Wort, aber ehrlich gesagt wäre mir so ein Sprung noch nicht auf gefallen, natürlich auf jeden Fall Verbesserungswürdig, gibts Vorschläge?
  • Stimmt die kann man sich sparen - da stand vorher noch etwas bei mir, schleissig gearbeitet.

    PHP:
    <script>
    	// Smallest DomReady: https://www.dustindiaz.com/smallest-domready-ever
    	function r(f){/in/.test(document.readyState)?setTimeout('r('+f+')',9):f()}
    
    	r(function () {
    		var selector_id = 'uhr', // Id of the element to update
    			interval = 100,      // Refresh interval
    			days = ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],
    			server_time = (0 /* or insert server timestamp here */ * 1000) || new Date().getTime(),
    			offset = server_time - new Date().getTime(),
    			element = document.getElementById(selector_id);
    
    		// Leave if element is not present in DOM
    		if (element === null)
    			return;
    
    		function pad (what) {
    			return what < 10 ? '0' + what : what;
    		}
    
    		setInterval(function () {
    			var now = new Date(new Date().getTime() + offset),
    				date = [pad(now.getDate()), pad(now.getMonth() + 1), now.getYear() < 999 ? 1900 + now.getYear() : now.getYear()],
    				time = [now.getHours(), pad(now.getMinutes()), pad(now.getSeconds())];
    			element.innerHTML = days[now.getDay()] + ', ' + date.join('.') + ' ' + time.join(':');
    		}, interval);
    	});
    </script>
    
    <div id="uhr"></div>

    Das gefällt mir gut - meins schaut jetzt irgendwie total altmodisch dagegen aus :-(
 
Bezüglich zur debug-Funktion

Scheint generell ne brauchbare Idee, auch wenn ich aktuell einfach E_USER_NOTICE werfe. Aber ich finde es nicht sinnvoll, dass der Titel des Fehlers als Array-Key verwendet wird, denn ein Titel ist für mich kein einzigartiges Element.

Nebenbei - aber hier kann ich falsch liegen - brauchte ich auf einem Webserver irgendwo einmal immer sein session_start() um auf $_SESSION zugreifen zu können, meine allerdings im Hinterkopf zu haben, dass das egtl. nicht notwendig sein sollte..
 
session_start() ist in diesem Falle nicht zwingend nötigt da die Daten nach dem nächsten Seitenaufruf nicht mehr benötigt werden

wird das ganze in ein CMS eingebaut, muss die debug-session mit unset() gelöscht werden.
 
Wie Astrodan bereits sagte:

Ich würde auch die Titel nicht als Array-Key verwenden. Daher würde ich die debug()-Funktion umändern in:

PHP:
<?php
function debug($title, $msg) {
    if(!array_key_exists('debug', $_SESSION)) $_SESSION['debug'] = array();
    
    $_SESSION['debug'][] = array($title, $msg);
}
?>

Und dementsprechend auch die Ausgabe anpassen.
 
Ihr solltet mal einen Blick auf FirePHP werfen ;)
Debuggen ohne dass es im HTML auftaucht (wird über die HTTP Response-Header übertragen). Da sind dann solche Spielereien wie erst alles in einem Array zu sammeln absolut unnötig.
 
so hab mein Snippet mal überarbeitet und Euren Vorschlag umgestzt
Danke

*edit*
jepp FirePHP ist eine nette Sache :)
 
Zur Funktion loseinflation von DasGuru:

  1. Im letzten else (Zeile 27) steht $orgnallose anstatt $orginallose
  2. Das Zeichen für Kilo wird lt. Beschreibung klein angezeigt (was ja auch richtig ist), lt. Code allerdings groß (Zeile 24).
  3. Kurze Beschreibung außerhalb des Codes wäre auch hilfreich ;)
 
danke
habe den variablennamen korrigiert und das "k" kleingeschrieben

Die Beschreibung findest du im KommentarKopf
 
Was sind den Orginallose? Das müsste dann doch eher Orignial heißen oder etwa nicht?

Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial Orignial

:ugly: