# Java Code Hilfe



## RadioWave (21. Aug 2011)

Guten Morgen zusammen.
Also ich bin total neu und mit Java mehr oder weniger unvertraut, deshalb hoffe ich, dass Ihr mir eine Frage beantworten könnt.

Und zwar war ich auf der Suche nach einem Code, welcher Bilder/Grafik zur gewünschten Zeit automatisch anzeigen lässt.
Bin dabei auf diesen Code gestossen


```
<SCRIPT language=JavaScript>
<!--
// (C) 2000 Klaus Hentschel [ All rights reserved ].
// www: [url=http://www.javarea.de]Home | powered by javarea.de[/url]

function picupdate(date) {		   // erster Bildaufruf
var pic1 = "javneu.gif";  // erste Grafik
var pic2 = "javupdate.gif";  // erste Grafik

expdate = new Date(date);
curdate = new Date();
if (expdate.getTime() > curdate.getTime())
  document.write("<img src=" + pic1 + ">");
else
  document.write("<img src=" + pic2 + ">");
}
// -->
</SCRIPT>
<SCRIPT> picupdate("01/22/2010") </SCRIPT> 
<br><br><br>
<img src="http://javarea.de/javneu.gif"><FONT class="stn">diese Grafik wird bis zum 12.12.2010 angezeigt</font> <br>
<img src="http://javarea.de/javupdate.gif"><FONT class="stn">diese Grafik wird nach dem 12.12.2010 angezeigt</font><br><br>
```


Jetzt meine Frage, kann mir jemand helfen, komme dabei nicht ganz mit.

Ich würde gerne eine Grafik am 22.08.2011 um 14:00 Uhr anzeigen lassen.

Wie müsste dieser Code aussehen? Wäre total froh wenn mir jemand diesen Code so einstellen könnte damit ich Ihn danach als Vorlage benutzen kann.

Vergebe natürlich auch den Dankeschöön Button 

Grüsse Lukas


----------



## njans (21. Aug 2011)

*hust* Das ist JavaScript, nicht Java  
Nun ist die Frage: Willst du ne Lösung in JavaScript oder in Java haben?


----------



## RadioWave (21. Aug 2011)

njans hat gesagt.:


> *hust* Das ist JavaScript, nicht Java
> Nun ist die Frage: Willst du ne Lösung in JavaScript oder in Java haben?



genau das ist der JavaScript Code, suche aber jetzt eine Lösung mit der gleichen Funktion mit Java


----------



## Cola_Colin (21. Aug 2011)

Und wo soll das Bild auftauchen ?


----------



## RadioWave (21. Aug 2011)

Cola_Colin hat gesagt.:


> Und wo soll das Bild auftauchen ?



Am besten auf der Frontseite unserer Homepage


----------



## Marcinek (21. Aug 2011)

Ihr habt einen Webserver, der Java Server Pages darstellen kann?

Dann könnte dies mit einer einfachen JSP gemacht werden.


----------



## Kevin94 (21. Aug 2011)

Ich glaube kaum, dass er eine Website mit Java Server Pages entwickeln will, geschweige denn, dass ihm ein Server dazu zur Verfügung steht. Wenn er nicht selber hostet sind JSP nur in gehobeneren Angeboten enthalten. Auserdem sind JSP nicht asynchron sondern werden, genauso wie PHP Sktipte, einmal vom Server vor dem zurücksenden der Daten zum Clientbrowser ausgeführt.
Wahrscheinlich meint der TO wie man das Problem mit Hilfe eines Applets lösen kann.


----------



## Cola_Colin (21. Aug 2011)

Wieso das ganze nicht mit dem Javascript lösen ?
Ich hab von Javascript nicht so viel Ahnung, aber ist das nicht besser geeignet für dieses Problem ?


----------



## Kevin94 (21. Aug 2011)

Wenn ich den TO richtig verstanden habe, dann hat er schon eine funktionierende Lösung mit JavaScript (die er auch gepostet hat) und möchte aber nun das ganze mit Java umsetzen.
Ich muss dir aber recht geben, dass ein Applet in diesem Fall ein vollkommener Overkill ist.


----------



## ARadauer (21. Aug 2011)

Ich denke es ist wahrscheinlicher dass der Webspace php unterstützt, also ich würds mit php machen...


----------



## Kevin94 (21. Aug 2011)

Wenn dies der fall ist, wäre follgender PHP code denkbar

```
<?php
$pic1 = "javneu.gif";  // erste Grafik
$pic2 = "javupdate.gif";  // erste Grafik
 
$expdate=mktime(14,0,0,8,22,2011);//Datum im Format Stunden,Minuten,Sekunden,Monat,Tag,Jahr
$aktdate=time();
if($expdate>$aktdate)
{
    echo '<img src="'.$pic1.'"/>';//Bild nach 22.8.2011 14:00
}
else
{
    echo '<img src="'.$pic2.'"/>';//Bild vor 22.8.2011 14:00
}

?>
<img src="http://javarea.de/javneu.gif"><FONT class="stn">diese Grafik wird bis zum 12.12.2010 angezeigt</font> <br>
<img src="http://javarea.de/javupdate.gif"><FONT class="stn">diese Grafik wird nach dem 12.12.2010 angezeigt</font><br><br>
```

Das arbeitet genauso wie das JavaScript nur auf Serverseite, der user kann den Quellcode also nicht einsehen. Wenn die Seite allerdings am 22.8.2011 um 13:59 aufgerufen wird und nicht neugeladen wird dann ändert sich das Bild auch nicht (genausowenig wie mit dem JavaScript des TO). Mit einem Applet liese sich das realisieren. In JavaSkript gibt es glaub ich auch eine Funktion die dafür geeignet ist.


----------



## r.w. (21. Aug 2011)

> Das arbeitet genauso wie das JavaScript nur auf Serverseite, ...



Javascript wird auf dem Client ausgeführt. ;-)

VG ROlf


----------



## Kevin94 (21. Aug 2011)

Das JavaScript das der TO gepostet hat wird aber auch nur einmal beim Laden der Website ausgeführt, was defacto zum selben Ergebnis im Browser führt


----------



## Cola_Colin (21. Aug 2011)

Aber das Javascript kann der User abändern, wenn er will.
Den php Code nicht.


----------



## Kevin94 (21. Aug 2011)

Was meinst du mit abändern und wen meinst du mit User?
Wenn du mit User denjenigen meinst, der die Website aufruft, dann möchte ich gerne wissen wie du den auszuführenden JavaSkript code ändern willst. Du kannst zwar deinem Browser sagen, dass er JavaSkript gar nicht ausführen soll, bzw, bestimmte Funktionen blocken soll, aber meines Wissens kannst du ihm nicht sagen, dass er was ganz anderes machen soll als da steht?


----------



## Cola_Colin (21. Aug 2011)

Zumindest mit Opera kann man folgends tun:
Rechtsklick -> Quelltext -> Bearbeiten (z.B. ein anderes Datum bei dem Skript oben eintragen) -> Änderungen anwenden.

Die Möglichkeit gibt es bei php so nicht.


----------



## r.w. (22. Aug 2011)

@ RadioWave

Wenn es reicht, dass das Bild nach dem erneuten Laden der Seite getauscht wird, 
würde ich es, falls verfügbar, auf jeden Fall in PHP lösen.

Soll das Bild auch getauscht werden, ohne das die Seite im Browser neu geladen wird,
würde ich eine Lösung in Javascript vorziehen. Das geht z.B. mit setIntervall(), oder wie
in meinem folgenden Beispiel mit setTimeout().

Um das Beispiel zu testen, einfach den Code in eine neue HTML-Datei speichern und
2 JPG-Bilder mit den Namen 'vorherBild.jpg' und 'nachherBild.jpg' in den selben Ordner legen.

Dann kann der Aufruf der Funktion setImageByDate() mit verschiedenen Daten getestet werden.
Zum leichteren Auffinden: Die entsprechende Codezeile lautet
"setImageByDate( 2011, 8, 22, 14, 0, 0);    // TODO: Datum des Austausches uebergeben"




```
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<title>Bildwechsel-Demo</title>
	</head>
   <body>

	<!-- 
		Formualar nur fuer die Debug-Ausgabe...
	-->	
	<form name="frm1">
	<input id="cntCalls"    type=text size=20 ><br>
	<input id="currentDate" type=text size=60 ><br>
	<input id="expireDate"  type=text size=60 ><br>
	</form>
	<br>
	

<script language="javascript">
var cnt=0;  // Nur zur Debug-Ausgabe. Zaehler fuer die Aufrufe durch setInterval().

var firstImage     = new Image(); // Das vor  Ablauf des Datums anzuzeigende Bild...
	 firstImage.src = "vorherBild.jpg";  // TODO: Dateinamen anpassen

var nextImage      = new Image(); // Das nach Ablauf des Datums anzuzeigende Bild...
	 nextImage.src  = "nachherBild.jpg";  // TODO: Dateinamen anpassen


	// Das auszutauschende Bild…	
	// Zeigt das aktuell gueltige Bild an und
	// ruft anschliessend changImageByDate() auf,
	// falls das Datum noch nicht erreicht ist.
	// Parameter: Jahr, Monat, Tag, Stunde, Minute, Sekunde (ohne fuehrende Nullen!)
	setImageByDate( 2011, 8, 22, 14, 0, 0);    // TODO: Datum des Austausches uebergeben


function setImageByDate(yy, mm, dd, hh, nn, ss) {
   if (isDateExpired(yy, mm, dd, hh, nn, ss)) {
		document.writeln("<img id='img2change' src='" + nextImage.src + "'>")
   } else {
		document.writeln("<img id='img2change' src='" + firstImage.src +"'>")
		// Hier der eigentliche Aufruf der in Intervallen pruefenden Routine:
   	// Achtung! Keine fuehrenden Nullen verwenden...
		changeImageByDate(yy, mm, dd, hh, nn, ss);
   }
}


// changeImageByDate() wird bei Bedarf aus setImageByDate() aufgerufen..
function changeImageByDate(yy, mm, dd, hh, nn, ss) {
	document.frm1.cntCalls.value     = ++cnt;       // nur fuer Debug-Ausgabe. Kann spaeter entfernt werden.
	
   if (isDateExpired(yy, mm, dd, hh, nn, ss)) {
	   // Wenn Datum erreicht, Bild tauschen:
		document.images.img2change.src = nextImage.src;  // 'img2change' entspricht der id des <img>-Tags...
	} else { 
	   // Wenn Datum nicht erreicht, noch einmal aufrufen:
		// 1000 -> Delay bis zum naechsten Aufruf in Millisekunden (hier eine Sekunde).
		window.setTimeout( "changeImageByDate(" + yy + "," + mm + "," + dd + "," + hh + "," + nn + "," + ss + ")", 1000);
	}
}

function isDateExpired(yy, mm, dd, hh, nn, ss) {
   // mm-1 in der naechsten Zeile,  weil der Monat 0-basiert erwartet wird…
	expireDate  = new Date(yy, mm-1, dd, hh, nn, ss);
	currentDate = new Date();

	document.frm1.currentDate.value  = currentDate; // nur fuer Debug-Ausgabe. Kann spaeter entfernt werden.
	document.frm1.expireDate.value   = expireDate;  // nur fuer Debug-Ausgabe. Kann spaeter entfernt werden.

	return ( currentDate.getTime() > expireDate.getTime() );
}


</script>		
	
   </body>
</html>
```

Wenn es tatsächlich notwendig sein sollte, die von Cola_Colin beschriebenen Spielereien zu unterbinden,
wäre eventuell doch ein Applet angebracht.

Ich hoffe das hilft Dir noch weiter. 
Bei Fragen zum Skript melde Dich gerne, von mir aus auch per PN.

VG ROlf


----------

