Countdown mit PHP, MYSQL und Java-Script

jerry0110

Erfahrenes Mitglied
Ich habe da mal eine Frage.

Ich habe mir aus den Tutorials einen Countdown rausgesucht der nach, in unserem Beispiel, 5 Sekunden etwas ausführen soll. Nur das Problem ist wenn wir innerhalb der 5 Sekunden auf F5 zum Aktualisieren drücken fängt er logischer Weise wieder bei 5 an.

1. Soll er nicht er soll weiterlaufen und
2. der Soll den Befehl am Ende ausführen und nicht am Anfang und
3. wie bekommt man eine reloadsperre dort rein?

Code:
<html>
<head>
<script language="javascript">
var lngSekunden = <?php echo("5"); ?>;
function secondCount(){
intStunden = Math.floor(lngSekunden/(60*60));
intStunden = (intStunden < 10) ? "0"+intStunden : intStunden;
lngHelpSekunden = lngSekunden - intStunden*60*60;
intMinuten = Math.floor(lngHelpSekunden/60);
intMinuten = (intMinuten < 10) ? "0"+intMinuten : intMinuten;
intSekunden = lngHelpSekunden - intMinuten*60;
intSekunden = (intSekunden < 10) ? "0"+intSekunden : intSekunden;
strZeit = intStunden + ":" + intMinuten + ":" + intSekunden;
document.getElementById("countdownID").innerHTML = strZeit;
lngSekunden--;
if(lngSekunden >= 0)
	window.setTimeout("secondCount()", 1000);
else
<?php
$link = mysql_connect("localhost","root","");
mysql_select_db('tafelrunde', $link); 
$sql="INSERT INTO `test` ( id ) VALUES ('1')";
mysql_query($sql, $link);
?>;
 
}
</script>
</head>
<body onload="secondCount();">
<div id="countdownID"></div>
</body>
</html>

Danke im Vorraus
 
Zuletzt bearbeitet:
Speichere beim onunload die aktuellen Sekunden in einem Cookie.... dann kannst du sie beim Start ausgeben.

Was den "Befehl" angeht... welchen meinst du?
Wenn du den mysql_query() meinst, musst du nach abgelaufener Zeit mittels JS ein PHP-Skript aufrufen, welche diese Anweisung enthält.
Wie du das machst, ist dir überlassen...
  • Popup öffnen
  • aktuelle Seite "weiterleiten"
  • Image()-Object mit dem Skript als src erzeugen

Ansonsten: bitte keine Themen pushen;-] . Danke.
 
Also habs mir mal durchgelesen. bei mir ist dass gleiche problem, mit dem mysql.
da ich aber keine ahnung von javascript habe, weis ich auch nicht, wie ich damit php aufrufen soll. (ich hoffe du verstehsch was ich mein:D). könntest du mir das BITTE BITTE erklären?
 
  • window.open('skript.php');// Popup öffnen
  • window.location='skript.php';//aktuelle Seite "weiterleiten"
  • dummie = new Image();dummie.src='skript.php';//Image()-Object mit dem Skript als src erzeugen
skript.php enthält den gewünschten Query.

such dir etwas aus.
 
Hallo.
Ich hatte das gleiche Problem wie du. Hab da noch ne andere möglichkeit gefunden, wie man das mit dem mysql_query machen kann. Ist vll nicht die beste Lösung, aber sie ist es vll wert darüber nachzudenken. Ich habe das so gemacht, da ich kein extra Fenster öffnen lassen wollte (hätte nicht gepasst :D). Bin daher auf folgendes gekommen:


Code:
if(lngSekunden >= 0)
	window.setTimeout("secondCount()", 1000);
else
<?php
$link = mysql_connect("localhost","root","");
mysql_select_db('tafelrunde', $link);
$sql="INSERT INTO `test` ( id ) VALUES ('1')";
mysql_query($sql, $link);
?>;

}
</script>

Das Oben ist der Code aus dem Forum. Ersetze einfach den PHP Befehl durch

Code:
	document.location.href="SEITE.php?action=BEFEHL";

Da wo jetzt in der Zeile

document.location.href="SEITE.php?action=BEFEHL";

SEITE steht, gibst du den namen der Seite an, in der der Countdown ist.

und da wo

BEFEHL steht gibst du einen Befehl an. (z.B. mysql oder so)

Jetzt musst fu noch am anfang des Counterscript
Code:
<?
if ($action !== "BEFEHL") {?>
einfügen.

Am Ende des Counterscripts noch

Code:
<?php
}else{
HIER DER MYSQL_BEFEHL
}
?>

So habe ich das bei mir gelöst. Klappt wunderbar.

mb fanste.

PS: Danke an Sven Mintel der mich auf die Idee gebracht hat. :)
 
Zuletzt bearbeitet:
Also so wie ich das jetzt auch noch gelesen habe (danke für die Antworten) wäre die beste Lösung das man 1. ein Hidden-Feld anlegt das vor dem Knopfdruck auf z.B. 1 ist und nach dem Knopfdruck auf -1 ist. Und das man dann in der MySQL Datenbank nur noch angibt das er nur den Wert (der die Zeit vorgibt bzw. die Variable) aus der Tabelle nimmt wo der Hiddenwert -1 ist. Das ist dann ja nur einer. Und in der Datenbank steht dann nur noch die Zeit wie lange es dauert und Java zeigt es dann an. Zumindestens habe ich das so verstanden in den anderen Threads.

Oder gibt es da einen Denkfehler?
 
Zurück