Zur Navigation

Uhrzeitscript

1 Don

Hallo zusammen,

ich hatte bis jetzt noch nicht viel mit PHP zu tun und hab jetzt gerade zum Spass ein Script geschrieben, dass die aktuelle Uhrzeit in Binärzalhen ausgibt, dargestellt durch Grafiken ...
Bin auch sehr zufireden mit der Sache und es funktioniert auch soweit

Allerdings wird die Uhrzeit ja nur beim Laden der Seite erstellt und ausgegeben, wodurch sich die Uhrzeit leider nicht selbstständig aktualisiert

Deshalb meine Frage: Gibt es in PHP eine Möglichkeit, dass das Script sich von alleine mit einem Delay noch mal lädt und somit aktualisiert, oder so was in der art?

11.10.2006 22:40

2 Jörg Kruse

Hallo Don,

das Script kann ja nur über eine erneute Anfrage des Browsers neu aufgerufen werden, und diese kannst du nur clientseitig auslösen. Mit einer solchen Meta Angabe könntest du die betreffende Seite nach einer bestimmten Anzahl von Sekunden (hier: 5) neu laden lassen:

<meta http-equiv="refresh" content="5; URL=http://example.org" />

Ansonsten eignet sich für eine Uhr die clientseitige Scriptsprache JavaScript wohl besser. Dazu gab es hier schon mal einen Thread:

JS Uhr Problem

11.10.2006 22:52 | geändert: 11.10.2006 22:53

3 Don

Ne so is das leider auch nicht das wahre...

Das Script is im Prinzip nur ein Modul für das CMS Joomla...
Hab jetzt

echo "<meta http-equiv=\"refresh\" content=\"5\" URL=\".....">";

in den PHP Code eingebaut und die Seite lädt auch jedesmal neu, aber komplett... das sieht ein wenig verwirrend aus und is nicht gerade sehr angenehm...

Naja, muss ich wohl mit leben, dass die Uhrzeit nur beim Aktualisieren der Seite bzw. click auf einen Link aktualisiert wird... trotzdem danke

11.10.2006 23:07

4 Rudy

Naja, muss ich wohl mit leben, dass die Uhrzeit nur beim Aktualisieren der Seite bzw. click auf einen Link aktualisiert wird...

Ohne Javascript wird das wohl auch so bleiben. Was ist denn gegen die Verwendung von Javascript für eine solche Funktion einzuwenden, wenn sie doch nur so was banales macht wie die Uhrzeit anzuzeigen?

12.10.2006 20:23

5 Don

Zum einen kenne ich mich mit Javascript nicht aus und wollte mal ein bissel php machen und zum anderen haben manche javascript deaktiviert, ich persönlich aktiviere Javascript auch nur, wenns unbedingt nötig ist...

Die Uhr rechnet wie gesagt auch die Zeit in binärzalhen um und stellt diese mit passenden grafiken dar... geht sicherlich auch mit javascript, wäre aber für mich persönlich keine schöne lösung

12.10.2006 21:30

6 Rudy

Eine weitere Möglichkeit wäre ein kleines Flash dafür zu schreiben... keine große Sache, aber wenn Du schon JS nicht magst, wahrscheinlich Flash noch weniger ;)

Was ich machen würde wäre eine Kombination aus PHP und Javascript. Also am Server beim Laden der Seite den Binärzähler auf die aktuelle Uhrzeit stellen und auf Clientseite dann - wenn JS aktiviert ist - die Uhr weiterzählen. Unschön fände ich das nicht, im Gegenteil. In Ajax-Zeiten kommt man ohne JS ja kaum mehr um die Runden ^^

12.10.2006 22:29

7 Don

joa das wäre schon keine schlechte idee
ich habe nur gemeint eine reine javascript umsetzung fände ich unschön
leider haperts bei mir an dieser stelle leider an der umsetzung

12.10.2006 22:33

8 Rudy

Leg Dir 2 jpgs mit Namen 0.jpg und 1.jpg an, die jeweils die 0 und die 1 darstellen, und gib sie in dasselbe verzeichnis wie diese .php-Datei:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Watch</title>
</head>
<script type="text/javascript">
  
 function toBin(number, digits) {
   var binnum = number.toString(2);
   while (binnum.length < digits)
     binnum = '0' + binnum;
   return binnum;  
 }
 
 function toJPGs(binnum) {
   JPGs = '';
   for(i=0; i<binnum.length; i++) {
     JPGs = JPGs + '<img src="' + binnum.charAt(i) + '.jpg">'; 
   }
   return JPGs;
 }

 function showtime() {
   var now = new Date();
   var hours = now.getHours();
   var minutes = now.getMinutes();
   var seconds = now.getSeconds();
   document.getElementById('watch').innerHTML = toJPGs(toBin(hours, 5)) + 
     toJPGs(toBin(minutes, 6)) +  toJPGs(toBin(seconds, 6));
 }
 window.setInterval('showtime()',1000);
</script>
<body>
<div id="watch">
<?php 
  $bintime = sprintf("%05d", decbin(date('H'))) . sprintf("%06d", decbin(date('i'))) . sprintf("%06d", decbin(date('s')));
  for ($i = 0; $i < strlen($bintime); $i++) {
    echo '<img src="' . $bintime{$i} . '.jpg">';
  }
?>
</div>
</body>
</html>

13.10.2006 00:59 | geändert: 13.10.2006 00:59

9 Don

Vielen Dank für deine Mühe
läuft wirklich gut
Is gerade mal ziemlich interessant, mal deinenPHP Code mit meinem zu Vergleichen... da ich nicht viele PHP Befehle kenne hab ich Sachen wie das Umrechnen in Binär selber schreiben müssen, hätte nicht gedacht, dass es dafür sogar ne Funktion gibt...
Jetzt wird wenigstens auf jeden fall das php script ausgeführt und wer Javascript aktiviert hat, hat auch eine "animierte" Uhr, gute Sache

13.10.2006 18:29

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]