spezieller Countdown gesucht(PHP/Javascript)

Status
Nicht offen für weitere Antworten.

Gladiator6

Erfahrenes Mitglied
Hi

Scripte für einen Countdown gibt es genug!

Ich frage mich nun, ob es möglich ist, ein Script so anzupassen, dass man verschiedene Daten eintragen kann, und dass dann das Script automatisch bis zum neuen Datum zu zählen beginnt, sobald das alte Datum erreicht ist!

Vielleicht gibt es auch schon ein fertiges Script?
 
Zuletzt bearbeitet:
Re: spezieller Javascript Countdown gesucht

Hallo,
wenn du einen Javascript Countdown suchst, warum fragst du dann im PHP Forum?

mfg
forsterm
 
Re: spezieller Javascript Countdown gesucht

Sorry, hab mich ein bisschen falsch ausgedrückt!

Es spielt mir keine Rolle ob es Javascript oder PHP ist. Ich denke mit PHP sollte es möglich sein oder nicht? Musste mich ja für ein Forum entscheiden, PHP oder Javascript ;-) Nur der Titel ist mir misslungen!
 
Re: spezieller Javascript Countdown gesucht

Das Problem wird sein, dass beide nur auf Anfrage arbeiten, die eine server- und die andere clientseitig.
Was genau möchtest du realisieren?
 
Re: spezieller Javascript Countdown gesucht

Code:
<html>
  <head>
    <title>Datum-Countdown mit JavaScript</title>

    <script language="JavaScript">
      // Ziel-Datum in MEZ
      var jahr=2222, monat=2, tag=22, stunde=22, minute=22, sekunde=22;
      var zielDatum=new Date(jahr,monat-1,tag,stunde,minute,sekunde);

      function countdown() {
        startDatum=new Date(); // Aktuelles Datum

        // Countdown berechnen und anzeigen, bis Ziel-Datum erreicht ist
        if(startDatum<=zielDatum)  {

          var jahre=0, monate=0, tage=0, stunden=0, minuten=0, sekunden=0;

          /* Allgemeines Vorgehen:
           * Zunächst werden die vollen Jahre gezählt
           * und anschließend der Start- und Ziel-Monat auf den jeweiligen 1. gesetzt.
           * Nun werden erst die vollen Monate vom 1. zum 1. des Start- bzw. Ziel-Monats
           * berechnet und danach die tatsächlichen Monatstage wieder mit einbezogen.
           * Dieses Vorgehen vermeidet Probleme mit den verschiedenen Monatslängen.
           * Was übrig bleibt, wird in Tagen, Stunden, Minuten und Sekunden ausgedrückt.*/

          // Jahre
          if(startDatum<zielDatum) {
            while(startDatum<zielDatum) {
              if(startDatum.setFullYear(startDatum.getFullYear()+1)<=zielDatum) jahre++;
            }
            startDatum.setFullYear(startDatum.getFullYear()-1);
          }

          // Restliche Tage zum Monatsende ermitteln
          var restTage=0;
          var m=startDatum.getMonth();
          if(m==1-1|| m==3-1||m==5-1||m==7-1||m==8-1||m==10-1||m==12-1)
              restTage=31-startDatum.getDate();
          else if(m==4-1|| m==6-1||m==9-1||m==11-1) restTage=30-startDatum.getDate();
          else if(m==2-1) {
            if(startDatum.getFullYear()%4==0 && (startDatum.getFullYear()%100!=0
                || startDatum.getFullYear()%400==0))
                    restTage=29-startDatum.getDate(); // Schaltjahr
            else restTage=28-startDatum.getDate();
          }

          // Start- und Ziel-Tag merken und auf 1 setzen
          var startTag=startDatum.getDate();
          var zielTag=zielDatum.getDate();
          startDatum.setDate(1);
          zielDatum.setDate(1);

          // Monate
          if(startDatum<zielDatum) {
            while(startDatum<zielDatum) {
              if(startDatum.setMonth(startDatum.getMonth()+1)<=zielDatum) monate++;
            }
            startDatum.setMonth(startDatum.getMonth()-1);
          }

          // Tatsächlichen Start- und Ziel-Tag berücksichtigen
          if(startDatum.getMonth()==zielDatum.getMonth()) {
            if(startTag<=zielTag) startDatum.setDate(startTag);
            else {
              monate--;
              tage=restTage+1;
            }
          }
          else {
            startDatum.setMonth(startDatum.getMonth()+1);
            if(startTag>=zielTag) tage=restTage+1;
            else {
              monate++;
              startDatum.setDate(startTag);
            }
          }
          zielDatum.setDate(zielTag);

          // Tage
          restTage=Math.floor((zielDatum-startDatum)/(24*60*60*1000));
          startDatum.setTime(startDatum.getTime()+restTage*24*60*60*1000);
          tage+=restTage;

          // Stunden
          stunden=Math.floor((zielDatum-startDatum)/(60*60*1000));
          startDatum.setTime(startDatum.getTime()+stunden*60*60*1000);

          // Minuten
          minuten=Math.floor((zielDatum-startDatum)/(60*1000));
          startDatum.setTime(startDatum.getTime()+minuten*60*1000);

          // Sekunden
          sekunden=Math.floor((zielDatum-startDatum)/1000);

          // Anzeige formatieren
          (jahre!=1)?jahre=jahre+" Jahre,  ":jahre=jahre+" Jahr,  ";
          (monate!=1)?monate=monate+" Monate,  ":monate=monate+" Monat,  ";
          (tage!=1)?tage=tage+" Tage,  ":tage=tage+" Tag,  ";
          (stunden!=1)?stunden=stunden+" Stunden,  ":stunden=stunden+" Stunde,  ";
          (minuten!=1)?minuten=minuten+" Minuten  und  ":minuten=minuten+" Minute  und  ";
          if(sekunden<10) sekunden="0"+sekunden;
          (sekunden!=1)?sekunden=sekunden+" Sekunden":sekunden=sekunden+" Sekunde";

          document.countdownform.countdowninput.value=
              jahre+monate+tage+stunden+minuten+sekunden;

          setTimeout('countdown()',200);
        }
        // Anderenfalls alles auf Null setzen
        else document.countdownform.countdowninput.value=
            "0 Jahre,  0 Monate,  0 Tage,  0 Stunden,  0 Minuten  und  00 Sekunden";
      }
    </script>
  </head>

  <body onload="countdown()">
    <form name="countdownform">
      <p>
        <input size="75" name="countdowninput">
      </p>
    </form>
  </body>

</html>

Eigentlich sollte es doch möglich sein, am Anfang mehrere Daten einzutragen, und dann wenn varJahr, varMonat etc. alles 0 ist zum nächsten Datum zu gehen, und das ganze von vorne zu machen?
 
Re: spezieller Javascript Countdown gesucht

Du solltest Dir erstmal im Klaren darueber sein ob Du auf dem Server oder im Browser arbeiten willst, dann ist klar ob Du JavaScript oder PHP verwenden musst.
 
Re: spezieller Javascript Countdown gesucht

Klar, warum sollte dies nicht möglich sein, verwende mehrdimsionale Arrays, da kannst du dann, wenn die Zeit aus dem ersten Element abgelaufen ist, in das nächste Element springen.

Möglich ist dies in beiden Sprachen.
 
Also es sollte im Browser arbeiten.

@ Sven Mintel

Vielleicht kannst du mir erklären, wie ich das im bestehenden Script einfügen könnte? Ich habe leider nur ganz wenig Programmierkenntnisse!
 
Sven: Wofür braucht man denn dazu mehrdimensionale Arrays? Ein eindimensionaler Array würde doch genügen, oder nicht? Man muss ja nur die Daten speichern, an denen die Countdowns ablaufen sollen.
 
Ginge natürlich auch :) ...naja, auf jeden Fall ist "Array" das Zauberwort.


@Gladiator6

Naja...du nimmst einen Array(eindimensional reicht :suspekt: ) und speicherst darin die Timestamps.

Dann durchläufst du den Array und schaust nach, ob das jeweilige Element grösser ist, als der aktuelle Timestamp. Wenn ja, starte den Countdown.

Details: zu den Datumsfunktionen in Javascript
 
Status
Nicht offen für weitere Antworten.
Zurück