Eine Idee, nur Umsetzung mangelt!
Moogly
- javascript
0 Simon0 Moogly0 Simon
0 Thomas Meinike
Also ich bin noch ein totaler nobody in JS,
Nun meine Idee:
Ich habe mittels JS einen Zähler gemacht der immer bis 90 Zählt, und dann in PHP eine Zeichenkette wie folgt in der db für Team A: z.B 45,67,78,89 und für TeamB eine wie folgt: 14,56
Nun habe ich die Daten in ein Array gelesen und dann mit einer foreach schleife durchlaufen, jetzt habe ich das ganze so vorliegen: 45 67 78 89 und für TeamB 14 56. Nun soll per JS ein Formularfeld für Team A um 1 erhöht werden wenn der Zähler in JS = der Zahl, also bei Team A so:
Zähler==45 |+1 bei Formularfeld TeamA
Zähler==67 |+1 bei Formularfeld TeamA
Zähler==78 |+1 bei Formularfeld TeamA
Zähler==89 |+1 bei Formularfeld TeamA
Team B sehe so aus:
Zähler==14 |+1 bei Formularfeld TeamB
Zähler==56 |+1 bei Formularfeld TeamB
Erst wollte ich das komplett in PHP machen, aber da müsste ich 90 reloads
dürchführen, das war mir dann zuviel.
Und dann müsste ich bei dem Zähler zwei Speeren haben und zwar wenn er 45 anzeigt soll er 5 Sekunden auf der Zahl bleiben und wenn er 90 anzeigt soll er komplett stehen bleiben.
Ich hoffe ihr könnt einen Nobody in JS helfen oder mir sagen welchen Funktionen ich bräuchte damit es läuft, gut wäre auch noch ein Link
Danke im Vorraus Moogly
Mein bisheriger Code:
Code:
<html>
<head>
<title>Konferenz</title>
<?
$aktuell=$_GET['aktuell'];
$team=$_GET['team'];
include('dbconnect.php');
$sql="SELECT Verein1,Verein2,ToreketteA,ToreketteB FROM liga WHERE Spieltag='$aktuell' AND Verein1='$team'";
$query=mysql_query($sql,$link);
while(list($v1,$v2,$tkA,$tkB) = mysql_fetch_array($query)) {
$tA = explode (",", $tkA);
$tB = explode (",", $tkB);
foreach ($tB as $tkB)
echo $tkB;
foreach ($tA as $tkA)
echo $tkA;
?>
<script type="text/javascript">
<!--
var Jetzt = new Date();
var Start = Jetzt.getTime();
function ZeitAnzeigen() {
var absSekunden = Math.round(ZeitBerechnen());
var relSekunden = absSekunden % 91;
var absMinuten = Math.abs(Math.round(absSekunden-30/60));
var anzSekunden ="" + ((relSekunden > 9) ? relSekunden : "0" + relSekunden);
var anzMinuten ="" + ((absMinuten > 9) ? absMinuten : "0" + absMinuten);
window.document.Anzeige.Zeit.value = + anzSekunden;
window.setTimeout('ZeitAnzeigen()',1000);
}
function ZeitBerechnen() {
var Immernoch = new Date();
return((Immernoch.getTime() - Start)/1000);
}
// -->
</script>
</head>
<body bgcolor="#EEEEEE" text="#000000" onLoad="window.setTimeout('ZeitAnzeigen()',1000)">
<form name="Anzeige" action="">
Aktuelle Spielminute:
<input size="3" name="Zeit" value="00">
</form>
</body>
</html>
<?
}
?>
Hallo Moritz,
dauert die Halbzeitpause nicht 10 Minuten? *g*
Spaß beiseite: Im Prinzip bist Du ja schon ganz weit gekommen. Wo es noch hakt, ist, die erzeugten Arrays (mit den Torschüssen?) von PHP nach JavaScript zu bekommen. PHP wird auf dem Server ausgeführt, die erzeugte Seite wird anschließend an den Browser übertragen. Dieser führt, nachdem er die Seite geladen hat, evtl. vorhandenen JavaScript-Code aus. Ergo bietet es sich an, in PHP JavaScript-Code zu erzeugen. Du könntest z.B. einen JavaScript-Array ausgeben:
var torkette1 = (45, 60, 78, 90);
Das ganze umschließt Du noch mit Script-Tags, damit der Browser auch weiß, daß es sich um JS handelt:
<script type="text/javascript/">
var torkette1 = (45, 60, 78, 90);
</script>
Dein JavaScript muß dann nur noch bei der Iteration durch die Spielminuten die Array-Elemente mit der aktuellen "Zeit" vergleichen und dann den Spielstand erhöhen. Dazu liest Du am besten im selfHTML die Kapitel zu HTML-Formularen und schaust in der Javascript-Objektreferenz beim forms-Objekt nach, da steht drin, wie man Felder ansprechen kann. Viel Spaß!
Simon
Danke Simon für die Antwort,
Aber das Array ist immer verschieden also kann ich nicht irgendwie schreiben
var Tore=<? echo $tkA; ?>
oder so?
Und wie sehe der Code für das erhöhen der Felder bei einem Tor aus?
MfG Moogly
Mallo Moritz,
Aber das Array ist immer verschieden also kann ich nicht irgendwie schreiben
var Tore=<? echo $tkA; ?>
oder so?
Du mußt Deinen Code so schreiben, daß am Schluß die Zeichenkette
var torkette1 = [45, 60, 78, 90];
ausgegeben wird (sorry Thomas, Du hast recht mit den Klammern, ich schreib' auch nur JavaScript, wenn es absolut sein muß...). Zahlen und Bezeichner sind natürlich frei wählbar. Wenn Du also einen Array $tA mit allen Torminuten hast, siehst das etwa so aus:
echo "var Tore = [".implode(", ", $tA)."];";
Und wie sehe der Code für das erhöhen der Felder bei einem Tor aus?
Lies' die Dokumentation, die ich angegeben habe. Es lohnt sich! Du willst ja nicht nur jetzt das eine spezielle Problem gelöst haben, sondern wissen, warum es so geht.
Simon
Hallo,
var torkette1 = (45, 60, 78, 90);
Bei dieser Schreibweise sind []-Klammern erforderlich:
var torkette1 = [45, 60, 78, 90];
ansonsten:
var torkette1 = new Array(45, 60, 78, 90);
MfG, Thomas