[PHP] Uhrzeit als Bild ausgeben

digiTALE

Lt. Junior Grade
Registriert
Juli 2004
Beiträge
270
Hi,

ich möchte per PHP die aktuelle Uhrzeit ausgeben, sowit so gut.

Ich habe jetzt die Zahlen von 0-9 als Bilddatei vorliegen, die entsprechend der Uhrzeit geladen/angezeigt werden. Also z. B. bei 15:00Uhr werden die Zahlen 1, 5 und 0 aus den 10 Zahlen angezeigt.

Wie kann ich das in PHP definieren das er bei der 1 die Bilddatei 1 anzeigt?


mfg digiTALE
 
So würd ich das jetzt machen, is aber nur grob umschrieben:

PHP:
<?php
$hour = date("H"); // z.b. 14
$minute = date("i"); // z.B. 35

// Dann $hour und $minute per str_split aufsplitten in ein array
// und dann mit einer Switch() Anweisung die 4 Stellen der Uhrzeit je nach Wert
// der Grafik zu weisen
?>
 
Die switch-Anweisung könnteste Dir auch noch sparen.
Einfach den Dateinamen der Grafik aus den einzelnen Zahlenwerten der Uhrzeit zusammenbasteln und dann in Deinen img-Tag verfrachten.
 
Ganz grob:

String erzeugen, den du darstellen willst (zb "14:54")

Pro Buchstaben folgenden String an den Browser senden:

PHP:
echo "<image source=\"images/ziffer_".$zahl.".gif\">";

Wenn man davon ausgeht, dass deine ziffern ziffer_0.gif usw heissen

David
 
Hab jetzt versucht das Datum zu splitten aber funktioniert nicht so recht.

PHP:
<?php

$date1 = date("H");
$date2 = date("i");
	
$split1 = explode("", $date1);
$split2 = explode("", $date2);

echo "$split1[0] $split1[1] $split2[0] $split2[1] ";
?>

Wo steckt der Fehler!?
 
PHP:
<?php
// PHP 5 Code
$time = date("Hi"); // z.B. 1900

$timeInPieces = str_split($time);

echo $timeInPieces[0]; //1
echo $timeInPieces[1]; //9
echo $timeInPieces[2]; //0
echo $timeInPieces[3]; //0

?>
 
thx @ merv.

Gibt es auch eine andere "str_split" Funktion die mind PHP 3 kompatibel ist, weil mein Hoster nur PHP 3 kann.

Bei PHP 5 funktioniert das wunderbar.


mfg digiTALE
 
THX Relict, hat geklappt. Wird alles wunderbar angezeigt.

So habe ich das ganze gelöst:

Daten auslesen
PHP:
<?php
$date1 = date("H");
$date2 = date("i");
$split1 = substr($date1, 0, 1);
$split2 = substr($date1, 1, 2);
$split3 = substr($date2, 0, 1);
$split4 = substr($date2, 1, 2);
?>

1. Ziffer
PHP:
<?php
if ($split1 == 0) {
	echo "<img src=\"img/0.png\" height=\"28\" width=\"20\" alt=\"\" />";
} elseif ($split1 == 1) {
	echo "<img src=\"img/1.png\" height=\"28\" width=\"20\" alt=\"\" />";
} elseif ($split1 == 2) {
	echo "<img src=\"img/2.png\" height=\"28\" width=\"20\" alt=\"\" />";
}
?>

2. Ziffer
PHP:
<?php
if ($split2 == 0) {
	echo "<img src=\"img/0.png\" height=\"28\" width=\"20\" alt=\"\" />";
} elseif ($split2 == 1) {
	echo "<img src=\"img/1.png\" height=\"28\" width=\"20\" alt=\"\" />";
} elseif ($split2 == 2) {
	echo "<img src=\"img/2.png\" height=\"28\" width=\"20\" alt=\"\" />";
} elseif ($split2 == 3) {
	echo "<img src=\"img/3.png\" height=\"28\" width=\"20\" alt=\"\" />";
} elseif ($split2 == 4) {
	echo "<img src=\"img/4.png\" height=\"28\" width=\"20\" alt=\"\" />";
} elseif ($split2 == 5) {
	echo "<img src=\"img/5.png\" height=\"28\" width=\"20\" alt=\"\" />";
} elseif ($split2 == 6) {
	echo "<img src=\"img/6.png\" height=\"28\" width=\"20\" alt=\"\" />";
} elseif ($split2 == 7) {
	echo "<img src=\"img/7.png\" height=\"28\" width=\"20\" alt=\"\" />";
} elseif ($split2 == 8) {
	echo "<img src=\"img/8.png\" height=\"28\" width=\"20\" alt=\"\" />";
} elseif ($split2 == 9) {
	echo "<img src=\"img/9.png\" height=\"28\" width=\"20\" alt=\"\" />";
}
?>

... usw


mfg digiTALE
 
Auweia, PHP3 ;)
Und ich würde das mit einer Switch() Anweisung machen, diese vielen ElseIfs sehen imho unübersichtlich aus.
 
was sollen denn überhaupt die ganzen ifs ?

einfach

PHP:
$datum = date("Hi", time()); 
 
echo "
<img src=\"img/".substr($datum, 0, 1).".png\" height=\"28\" width=\"20\" alt=\"\" /> 
<img src=\"img/".substr($datum, 1, 1).".png\" height=\"28\" width=\"20\" alt=\"\" /> 
<img src=\"img/".substr($datum, 2, 1).".png\" height=\"28\" width=\"20\" alt=\"\" /> 
<img src=\"img/".substr($datum, 3, 1).".png\" height=\"28\" width=\"20\" alt=\"\" />
";


so in der Art. ;)
 
Na sowas aber auch, da war ja noch etwas.
Warum einfach wenn es auch kompliziert geht. :rolleyes:

Das wär ja echt ne erleichterung wenn das so funtioniert.


THX
mfg digiTALE
 
Müsste eigentlich genauso funzen und nicht mehr, zumindest bei meinem php4.
Spart Platz, Rechenleistung und Ausführungsspeicher.

evt. das substr(..) nochmal einklammern (substr(..))
oder halt vorher in ein array oder variable packen o.ä.
falls ein parse error oder sowas kommt, glaubs aber net.

Auf jedenfall keine ifs.
Denn 4 Zahlen von 0-9 werden bei date in JEDEM Falle rauskommen, das braucht man nicht noch extra nachzuprüfen und abzufragen.

Jedes "if" , jede Variable und grösserer Code kosten ja auch Ressourcen und bei 1000 Zugriffen, naja egal. ;)
 
Zuletzt bearbeitet:
Habs ausprobiert, kam kein Fehler. Also brauch man die Klammer bei "substr" nicht setzen.
Stimmt allerdings das soviel Code auf die Resourcen gehen.
Deshalb hab ich mein Code auch nochmal gesendet. Denn irgendjemand hätte bestimmt noch eine bessere Lösung parat gehabt wie du z. B. :lol:
 
wieso machst du das nicht mit dem imagefunktionen von php selbst und schreibst dir das bild!

das ist sehr einfach.

-> link:http://verfriemelt.org/coding/self/php/funktionsreferenz/image_funktionen/imagettftext.html

-> bsp

PHP:
<?php
$time = date("H:i:s");
$image = imagecreate(70,20);
$farbe_body=imagecolorallocate($image,243,243,243);
$font_c = imagecolorallocate($image,10,36,106);
imagettftext($image, 12, 0, 5, 17, $font_c, "Aston-f1.ttf", "$time");
header("Content-type: image/gif");
imagegif($image);
?>

sieht dann so aus -> guckst du hier
 
easteregg schrieb:
wieso machst du das nicht mit dem imagefunktionen von php selbst und schreibst dir das bild!

das ist sehr einfach.

....

Hallo,

na ganz einfach, weil der Inhalt halt immer gleich ist. Es sind eben nur 10 Bilder, die man lediglich dynamisch verlinken muss. Wenn der Inhalt jetzt aufwändiger wäre, z.B. eine Analoge Uhr, wäre dein Vorschlag sinnvoll. Aber so ist es weit weniger Rechenaufwand für den Server.

Kleine Anmerkung an den Ersteller des Threads:

Findest Du es sinnvoll, die Uhr per Bild einzublenden. Ich weiß natürlich nicht, was genau Du damit bezweckst, allerdings wird diese ja nur beim Neuladen der Seite aktualisiert. Für solche Sachen finde ich JavaScript eigentlich wesentlich geeigneter. Auch da kann man grafische Uhren anzeigen, die dann sogar mitlaufen. Nur so als kleinen Denkanstoß. :)


Ciao
 
@S.Giny
Jepp, allerdings gibt es auch Leute die js deaktiviert haben. ^^
Am besten wäre dafür eine Kombilösung mit php und dann an js übergeben und die Uhr noch zum laufen bringen.

Aber nur wenn es wirklich einer laufenden Uhrzeit bedarf.
Es kann auch völlig ungeeignet sein, zb. in Foren. Da ist wichtig wann die Seite aktualisert wurde, nicht wie spät es danach ist. ^^

Es gäbe sogar noch eine Option: Flash. *rofl*
Nee für so ne Uhr alles etwas overkill.
 
hey,

die Uhr muss nicht unbedingt synchron laufen, reicht wenn sie bei einem Aufruf aktualisiert wird. Ausserdem arbeite ich mit "png" Dateien. Bei den "png" ist der Hintergrund transparent und bei den Zahlen habe ich noch ein Schatten eingebaut.

So sieht das aus:
http://chrizhome.ch.funpic.de


Die Bilder sind NUR mit dem IE nicht kompatibel.

mfg digiTALE
 
Zuletzt bearbeitet:
@digiTALES
Hat denn mein Scriptvorschlag überhaupt so geklappt?
Oder wie hastes denn nun gemacht? :D
 
wieso arbeitest du denn mit png und nicht mit gif, wenn du weist das sie im ie nicht korrekt dargestellt werden?
 
Zurück
Oben