• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Countdown-Problem

Status
Für weitere Antworten geschlossen.

nuutztier

Neues Mitglied
Hallo! Ich hab mich jetzt einigermaßen in PHP eingefuchst und versuche mich gerade an Javascript.

Ich verwende folgenden Countdown:

Ein Datum-Countdown mit JavaScript

Ich habe mir den ein bisschen umgeschrieben unten in der Textformatierung, dass er mir den CD so ausgibt: hh:mm:ss

Klappt auch alles wunderbar, nur soll er nach Ablauf weiterleiten zu einer anderen Seite. Ich hab mir die Funktion setTimeout angeschaut, aber ich weiß nicht wo ich die einbauen muss damit es richtig funktioniert.

Hab ein bisschen rumprobiert, aber entweder wurde gar nicht weitergeleitet oder sofort noch während des Countdown.

Kann mir einer helfen?
 
wie soll denn der countdown zählen? einfach nur ne bestimmte zeit herunter und dann weiterleiten oder auch mit bestimmten datum, ich denke erstes, weil wer bleibt schon tagelang auf der website bis die weiterleitung kommt

Code:
<script type="text/JavaScript">
<!--
var time, obj, ziel, intval
intval = false
function countdown(timex,objx,zielx) {
  if (timex != false) {
    time = timex
    obj = objx
    ziel = zielx
  }
  minuten = 0
  sekunden = time
  while (sekunden >= 60) {
    minuten++
    sekunden -= 60
  }
  if (minuten < 10)
    minuten = "0"+minuten
  if (sekunden < 10)
    sekunden = "0"+sekunden
  obj.innerHTML = "noch "+minuten+":"+sekunden
  if (time == 0) {
    document.location.href = ziel
    clearInterval(intval)
  }
  time--
  if (intval == false)
    intval = setInterval("countdown(false,false,false)",1000)
}
-->
</script>

dann so oder ähnlich benutzen
Code:
<body onload="countdown(10,document.getElementById('counter'),'http://www.google.de')">
<span id="counter"></span>
</body>
 
Vielen Dank, aber kann man noch irgendwie die Stunden miteinbauen?

Hm, vielleicht war weiterleiten das falsche Wort, ich meinte eher dass nach Ablauf des CDs z.B. ein PHP-Script ausgeführt werden soll. Z.B. soll nach einem Tag also 24h ein PHP-Script ausgeführt werden, wichtig dabei ist auch noch, dass der User nicht während des Ablaufs des CDs auf der Seite sein muss.

Da ja im oben genannten CD die Zeit immer auf 0 bleibt wenn sie abgelaufen ist, kann das Script eigentlich ganz einfach ausgeführt werden wenn der User das nächste Mal auf der Seite ist.

Frage: Lässt sich das alles mit deinem Code realisieren, tut mir leid, wenss es vielleicht kompliziert ist, aber ich habe bei JS nicht wirklich den Durchblick.

Oder kurz gesagt: Kann mir jemand einfach sagen wo ich setTimeout in dem von mir genannten CD einbauen muss, damit es richtig funktioniert? Denn ich hab jetzt die ganzen anderen Seiten und Scripts auf das obige CD-Script ausgelegt.
 
also was willst du bitte machen?

Du hast einen Countdown (bitte nicht immer mit CD abkürzen, das verwirrt nur).
Dieser Countdown fängt wenn ich auf die Seite gehen bei 24 Stunden an und läuft runter.
Wenn er bei 0 ankommt, soll ich auf eine php-seite weitergeleitet werden.

A: Genau das macht das script, es fängt immer bei der eingegebenen Zeit an, läuft runter, und springt dann zur eingegebenen Seite

B: Welcher user bleibt bitte 24 Stunden auf deiner Seite und wartet bis das ding bei 0 ankommt?

Stunden kannst du so einbauen
Code:
  minuten = 0
  stunden = 0
  sekunden = time
  while (sekunden >= 60) {
    minuten++
    sekunden -= 60
  while (minuten >= 60) {
    stunden++
    minuten -= 60
  }
und dann noch
Code:
obj.innerHTML = "noch "+stunden+":"+minuten+":"+sekunden
 
Entschuldigung wenn ich mich vielleicht kompliziert ausgedrückt habe, aber wegen Punkt B:
Deswegen habe ich das mit diesem Datumcountdown gearbeitet. Der User soll ja nicht 24h auf der Seite bleiben und es handelt sich auch nicht um eine Weiterleitung.

So soll es z.B. ablaufen:

User klickt einen Link,

Seite öffnet, Countdown (24h) startet,

User geht offline, kommt nach z.B. 26h wieder online,

User öffnet wieder die Seite mit Countdown (der ja seit 2h abgelaufen ist),

er wird sofort zum PHP-Script weitergeleitet (weil der Countdown abgelaufen ist).


Das ließe sich perfekt (mit meinen "Fähigkeiten") mit dem Datumcountdown realisieren, wenn ich nur wüsste wie ich die Weiterleitung einbauen soll.
 
das wird mit deinem datumcountdown nicht funktionieren, denn dein countdown ist für jeden gleich, und vergisst auch, wer schonmal da war

du solltest das ganze mit php machen und dir das in einer datenbank oder einem cookie speichern
 
Nene, das funktioniert schon. Ich weiß das der von der Systemuhr des Users abhängig, aber das spielt hier keine Rolle. Außerdem hat nur der eine User Zugriff (login mit Sessions)
 
sorry, aber dein script, so wie du es gepostet hast kann diese Aufgabe schlichtweg nicht übernehmen.

Die Startzeit ist vorgegeben, und zwar statisch. Wenn ich also heute drauf gehe, mag das Funktionieren, morgen aber ist es anders.

Außerdem, wenn 2 Personen zu unterschiedlichen zeiten darauf gehen, dann ist, so wie das script dort steht, für beide das gleiche zu sehen, und nicht unabhängig eine Wartezeit von 24 Stunden.

Wie gesagt du solltest sowas über php lösen, mit JavaScript ist das völliger Schwachsinn, das einzige was du über Javascript machen solltest, ist das anzeigen der Zeit, aber auch generiert durch php...
 
Die Startzeit wird bei mir schon per PHP vorgearbeitet unabhängig davon, wann der Countdown initialiesiert wird, und das mit den 2 Usern hab ich auch schon alles abgesichert.

Das JS macht bei eigentlich nur die Ausgabe und halt das Runterzählen an sich.
 
wieso speicherst du nicht einfach den timestamp in nem cookie....
ist viel einfacher als mit 10.000 daten hin und her zu rechnen, oder nimm ne db wenn kein cookie willst.
 
Ich rechne nicht mit 1000 Daten hin und her, ich nutze einen timestamp, der nur aufs JS zugeschnitten wird, ich mach es nur alles Serverseitig mit den Daten ohne DB. Ich wär nur froh wenn du mir sagen könntest wie eine ich Weiterleitung in mein Countdown-Script reinbaue.
 
Also ich hab das mal eingebaut so wie ich dachte:
PHP:
 // Anderenfalls alles auf Null setzen
        else  document.location.href = 'ziel.php'
        document.countdownform.countdowninput.value="0:00:00";
Problem: Entweder wird gar keine Zeit angezeigt oder nur 0:00:00 aber wenn man die Seite nachdem der Countdown eigentlich abgelaufen wär aktualisiert, leitet er einen zu ziel.php weiter.

Nehme ich document.location.href = 'ziel.php' wieder raus, wird die Zeit auch wieder normal angezeigt. Was hab ich falsch gemacht?
 
mann mann mann, nichteinmal die Grundlagen hast du verstanden...
Code:
 // Anderenfalls alles auf Null setzen
        else
        {
          document.countdownform.countdowninput.value="0:00:00"; 
          document.location.href = 'ziel.php'
        }
 
Ja sorry, aber wenn im Original-Code von der Seite das hier steht:

Code:
// Anderenfalls alles auf Null setzen
        else document.countdownform.countdowninput.value=
            "0 Jahre,  0 Monate,  0 Tage,  0 Stunden,  0 Minuten  und  00 Sekunden";

Gewundert hat es mich auch, das else nich wie gewohnt mit {} gemacht wurde, aber da ich mich nicht mit JS auskenn, dachte ich das wär so normal.
 
wenn du else ohne {} schreibst kann danach genau EIN Befehl folgen der dann zum Else Block gehört

Beispiel
Code:
x = 7
if (x<10)
  alert("x ist kleiner als 10")
else
  alert("x ist größer/gleich als 10")
alert("das kommt immer")
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben