timer und dann ausführen !

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Dann soll der timer aktiviert sein und ablaufen . Sobald der User wieder reinkommt und die Zeit vorüber ist [...]
    ich sags nochmal:

    wenn der user die seite verlässt, dann kannst du keinen javascript-timer weiterlaufen lassen!
    javascript läuft im browser des clients, wenn du die seite verlässt wird auch das javascript nicht mehr weiter ausgeführt!
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #17
      Hi,

      ich denke es ist klar das JavaScript clientseitig läuft, es geht auch nicht darum (wenn ich's richtig verstanden habe ??), das es im Hintergrund weiterläuft, das geschieht ja durch das Speichern von Start- und Endzeit in der Datenbank, sondern darum das ein Countdown abläuft.

      Hast Du schonmal daran gedacht ein HiddenField mit einzubeziehen, in welchem die Zeitdifferenz, die noch abzuwarten ist, steht ? Diese könnte dann von JavaScript als Startzeit für den Counter verwendet werden bzw. wenn sie <= 0 ist als abgeschlossen angesehen werden.

      Das ist ein sehr komplexer Vorgang (wenn man das ganze Projekt zusammen betrachtet), Du musst ja bei Click auf den Link den Bauprozess starten (d.h. Übermittlung an den Server und Eintrag in die DB). die nächste Seite enthält dann einen Wert im HiddenField und der Timer aktiviert sich. Bleibt der Benutzer die ganze Zeit-Stufe online, muss spätestens bei Ablauf des Timers ein submit an den Server geschickt werden, um die Fertigstellung anzuzeigen. Schaltet er zwischenzeitlich aus, muss bei nächster Anmeldung geprüft werden, ob noch offene Bauaufträge in der DB vorhanden sind und diese zwischenzeitlich zeitlich abgearbeitet wurden, dann Darstellung sind sie noch nicht fertig abgearbeitet HiddenField mit Restwert füllen und Timer ansetzen.

      So hab ich's zumindest verstanden, oder ??

      Grüße, Marcus.

      Kommentar


      • #18
        Danke für deine Hilfe .... aber ich erklärs lieber nchmal , da sich am Code einiges geändert hat

        Hier ist mein Code :


        <?

        //Der Link wird hier defeniert :
        $hf1_link = "<a href=\"bauen.php?b=1\">Bauen</a>";
        ?>

        <?

        //Hier wird defeniert , was dastehen soll

        if($hf1_ende==0 && $hf1==0) { print "$hf1_link";} ?>

        <? if($hf1_ende>0 && $hf1==0) { print "In Bau"; }?>

        <? if($hf1==1) { print "-"; }?>

        <?

        //Hier werden Start- und endzeit in die DB gespeichert


        if($b==1 && $hf1_start==0 && $hf1_ende==0)
        {
        $sz = time();
        $ez = $sz+8000;
        $result2="UPDATE daten SET taler=$taler-100 WHERE name='".$name."'";
        $result="UPDATE temp SET hf1_start= ".$sz.", hf1_ende= ".$ez." WHERE name='".$name."'";
        mysql_query($result);
        mysql_query($result2);
        }
        ?>

        so .. und auf dann wird auf jeder anderen seite folgendes includet :


        <?
        if(time()>$hf1_ende && $hf1_ende!=0)
        {
        $result1="UPDATE builds SET hf1=1 WHERE name='".$name."'";
        mysql_query($result1);
        }
        ?>

        Jetzt will ich , dass anstatt "In Bau" ein counter abläuft , der die restzeit im Format Stunden:Minuten:sekunden anzeigt . Es soll auch beachtet werden , dass nicht nur ein Gebäude zur Auswahl steht sondern dass dieser Code an die 30 mal dasteht und das Javascript dann extern liegen müsste (um es nicht für jedes Gebäude einmal dastehen zu haben)

        DANKE für Vorschläge
        Zuletzt geändert von inq39; 06.09.2002, 16:51.

        Kommentar


        • #19
          Es handelt sich wirklich nurnoch um die Anzeige der verbleibenden Zeit per Javascrpt , was ja kein Kunststück sein sollte

          Der rest ist soweit gelöst

          Kommentar


          • #20
            Es handelt sich wirklich nurnoch um die Anzeige der verbleibenden Zeit per Javascrpt , was ja kein Kunststück sein sollte
            tja, dann würde ich dir vorschlagen, du kuckst dich bei selfhtml ein bisschen um, da findest du alles was du brauchst...
            http://www.selfhtml.net/javascript/o...tm#set_timeout
            http://www.selfhtml.net/javascript/o...m#set_interval
            http://www.selfhtml.net/javascript/objekte/date.htm
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #21
              tolles forum ,wenn man es eh alles selber machen muss .....
              Sowas kann man dann aber nicht Hilfsforum nennen , sorry !
              naja .... danke trotzdem

              Kommentar


              • #22
                Was erwartest Du ???

                Du schilderst Dein Problem und erhälst ein fertiges Script ?!?
                Diese Forum dient doch nur dazu Dir Lösungsansätze und Hilfestellungen zugeben, und die hast Du zur Genüge erhalten ! Es dient aber nicht dazu Dir Deine Arbeit abzunehmen !!!

                Grüße, Marcus.

                Kommentar


                • #23
                  tja, wenn du dir ein projekt dieser grössenordnung vornimmst,

                  - investierst du entweder selbst etwas zeit, um dir die nötigen grundlagen anzueignen.

                  - oder du beauftragst jemanden der sich damit auskennt, mit der ausführung/ programmierung (und bezahlst dementsprechend)

                  - oder du fängst mit was kleinerem an.


                  aber solche communities wie diese hier sind kein selbstbedienungsladen wo du nur sagst ich brauche dies und das, also macht das mal für mich leute...
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #24
                    lol
                    Mein gebiet ist php und ich habe ein problem mit javascript . Und zwar ein eiziges wie man sieht

                    Wenn ihr diese Einstellung habt , spart euch das forum und macht ne linliste zu den verschiedenen manuels Dann erspart ihr euch einigs

                    Und ich habe nicht vor mir wegen diesem probelem das ganze javascript zeug reinzuziehen

                    Kommentar


                    • #25
                      Was sind denn manuels ???

                      Kommentar


                      • #26
                        Du wirst JavaScript niemals dazu überreden können weiterzulaufen, wenn der User die Seite verlässt.
                        Da muss schon die entsprechende Serverzeit (des Ablaufens des Timers) auf dem Server gespeichert werden, so dass beim nächsten Besuch darauf reagiert werden kann.

                        Bei Ablauf eines Timers was ändern: kannst du entweder mit Layern machen oder über das DOM (Document Object Model),
                        mein Sport: mein Frühstück: meine Arbeit:

                        Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                        Kommentar


                        • #27
                          Original geschrieben von inq39
                          lol
                          Mein gebiet ist php und ich habe ein problem mit javascript . Und zwar ein eiziges wie man sieht

                          Wenn ihr diese Einstellung habt , spart euch das forum und macht ne linliste zu den verschiedenen manuels Dann erspart ihr euch einigs

                          Und ich habe nicht vor mir wegen diesem probelem das ganze javascript zeug reinzuziehen
                          tja, das ist dann dein problem.

                          wir haben dir genug anregungen gegeben, und auch konkrete links zur selfhtml-beschreibung der funktionen und methoden, die du dafür brauchst.

                          wenn dir das noch nicht genug ist, dann bist du derjenige, "der sich das forum hier sparen" kann.

                          wenn du nicht bereit bist, selbst ein wenig zeit zu investieren, dann musst du was anderes investieren und zwar GELD - geh zu einem professionellen webdesiger, und gib das bei ihm in auftrag.

                          ich für meinen teil besuche dieses forum, um anderen leuten tips zu geben wie sie zu einer lösung kommen können - aber um jemandem der selbst zu faul ist, fertige lösungen in den ar*** zu schieben, dafür bin ich nicht hier.
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #28
                            Original geschrieben von Titus
                            Du wirst JavaScript niemals dazu überreden können weiterzulaufen, wenn der User die Seite verlässt.
                            Da muss schon die entsprechende Serverzeit (des Ablaufens des Timers) auf dem Server gespeichert werden, so dass beim nächsten Besuch darauf reagiert werden kann.

                            Bei Ablauf eines Timers was ändern: kannst du entweder mit Layern machen oder über das DOM (Document Object Model),
                            Hi Titus

                            Es geht auch nicht mehr darum . Das hab ich schon elber hinbekommen . Es geht jetzt nur noch darum,eine Zeit , die ich aus einer Variable habe , mittels eines Javascript Counters grafisch ablaufen zu lassen Hab oben ein javascript mit dem das gehen soll , mein Problem ist nur die Einbindung der Variablen ect.


                            Gruss

                            Kommentar


                            • #29
                              grafisch darstellen? richtig mit Bildern?
                              oder doch nur als Text?

                              in jedem Fall muss der Wert initialisiert werden:
                              echo '<script> var jsTimer = ', $timer, ';</script>';

                              über window.setInterval eine Funktion aufrifen,
                              die die Variable jsTimer ändert und die Anzeige aktualisiert

                              mit Text:
                              einfach übers DOM an der richtigen Stelle ausgeben
                              für ältere Browser eignet sich ein <input type="text">
                              mit Images:
                              1. den Images Namen geben (von rechts nach links durchnumerieren: ziffer0, ziffer1, ...
                              2. Schleife über die einzelnen Ziffern von jsTimer
                              und die Sources der images ändern
                              mein Sport: mein Frühstück: meine Arbeit:

                              Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                              Kommentar


                              • #30
                                Hallo

                                Ich habe in nem anderen Forum folgendes Script gefunden:

                                PHP-Code:
                                <?php
                                $conn 
                                mysql_connect("localhost","root","");
                                mysql_select_db("building");
                                ?>
                                <html>
                                <head>
                                <title>Test</title>
                                </head>
                                <body>
                                <?php if ($action == "") {
                                $query "SELECT * FROM in_bau";
                                $sel mysql_query($query,$conn) or die(mysql_error());
                                if (
                                mysql_num_rows($sel)) {
                                  
                                $row mysql_fetch_assoc($sel);
                                  
                                $data $row["time"];
                                  
                                $id $row["ID"];
                                  
                                $query2 "SELECT name,bauzeit FROM bauten WHERE ID='".$row["b_id"]."'";
                                  
                                $sel2 mysql_query($query2,$conn) or die(mysql_error());
                                  
                                $row2 mysql_fetch_assoc($sel2);
                                  
                                $data time() - $data;
                                  
                                $data2 $row2["bauzeit"];
                                  
                                $data $data2-$data;
                                  echo 
                                "<form name='form'>";
                                  echo 
                                "<input type='hidden' name='field' value='".$data."'>";
                                  echo 
                                "</form>";
                                  
                                ?>
                                  <SCRIPT type="text/javascript">
                                        var field = window.document.form.field.value;
                                        var TargetTime = new Date();
                                        var TimeBeginn = TargetTime.getTime();

                                    function CountDown(myid, seconds) {
                                    var CurrentDate = new Date();
                                        var CurrentTime = CurrentDate.getTime();
                                        var TimeEnd = TimeBeginn + (seconds*1000);
                                        TargetTime.setTime(TimeEnd);
                                        var Targetbox=document.getElementById(myid);
                                        var OpenTime = Math.floor((TargetTime-CurrentTime)/1000);

                                        var s = OpenTime % 60;
                                        var m = ((OpenTime-s)/60) % 60;
                                        var h = ((OpenTime-s-m*60)/(60*60));
                                        var fh  = ((h < 10) ? "0" : "");
                                        var fm  = ((m < 10) ? ":0" : ":");
                                        var fs  = ((s < 10) ? ":0" : ":");

                                        var Time = fh+h+fm+m+fs+s;
                                        var OutputString=Time;

                                        if(OpenTime<=0) { // Event wenn der Countdown abgelaufen ist
                                            var OutputString="Fertig!";
                                          }
                                          Targetbox.innerHTML=OutputString; // Ausgabe des Strings in der Betreffenden Zelle
                                      window.setTimeout("CountDown('" + myid + "', '" + seconds + "')", 1000);
                                    }
                                </script>
                                Du baust gerade <? echo $row2["name"]; ?>, dies dauert noch <span id='id'><script type='text/javascript'>CountDown('id', field);</script></span>!
                                  <?php
                                  
                                if ($data2 >> $data) {
                                    
                                $query "DELETE FROM in_bau WHERE ID='$id'";
                                    
                                mysql_query($query,$conn) or die(mysql_error());
                                  }
                                }
                                ?>
                                <br><br>
                                <table border=1>
                                <?php
                                $query 
                                "SELECT ID,name FROM bauten";
                                $sel mysql_query($query,$conn) or die(mysql_error());
                                while (
                                $row mysql_fetch_assoc($sel)) {
                                  echo 
                                "<tr><td width=200><a href='$_PHP_SELF?action=bauen&b_id=".$row["ID"]."'>".$row["name"]."</a>";
                                }
                                ?>
                                </table>
                                <?php
                                }
                                if (
                                $action == "bauen") {
                                  
                                $query "SELECT ID FROM in_bau";
                                  
                                $sel mysql_query($query,$conn) or die(mysql_error());
                                  if (
                                mysql_num_rows($sel)) {
                                    die(
                                "Es wird bereits gebaut!");
                                  }
                                  
                                $query "INSERT INTO in_bau VALUES('','$b_id','".time()."')";
                                  
                                mysql_query($query,$conn) or die(mysql_error());
                                  
                                ?>
                                  <script>
                                  location.href="<? $_PHP_SELF ?>";
                                  </script>
                                  <?php
                                }
                                ?>
                                </body>
                                </html>
                                Die Datenbanken sind wie folgt:
                                Code:
                                CREATE TABLE `bauten` (
                                `ID` INT(8) UNSIGNED DEFAULT '0' NOT NULL AUTO_INCREMENT PRIMARY KEY, 
                                `name` VARCHAR(50) NOT NULL, 
                                `bauzeit` INT(8) NOT NULL
                                );
                                
                                
                                CREATE TABLE `in_bau` (
                                `ID` INT(8) UNSIGNED DEFAULT '0' NOT NULL AUTO_INCREMENT PRIMARY KEY, 
                                `b_id` INT(8) NOT NULL, 
                                `time` VARCHAR(50) NOT NULL
                                );
                                Das funkt zu 100% muss nur noch angepasst werden =)
                                Falls jemand was nicht versteht kann er hier im Orginal Thread schaun:
                                Klick mich!

                                MFG

                                Radeon

                                Kommentar

                                Lädt...
                                X