Großes Problem beu Zeitberechnung

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

  • Großes Problem beu Zeitberechnung

    Hi zusammen. Ich bin neu hier und möchte euch gleich mal ganz lieb um Hilfe bitten.
    Ich Programmiere zur Zeit ein Onlinegame und habe jetzt an einer Stelle ein Problem. Die Bauzeit wird nicht berechnet und ich weiss nicht warum.
    Nachfolgend der entscheidende Teil des Codes mit Erklärungen:

    PHP-Code:
    if ($username==$username1 && $pwd==$password1 && $gebbau1==&& $zeitstempel==&& $metall>=$Mkommalos && $kristall>=$Kkommalos && $energie>=$Pkommalos

    //überprüft ob man ein neues gebäude bauen kann, weil kein anderes gebaut wird (gebbau und zeitstempel=0)UND ausreichend ressourcen vorhanden sind. 

    {
    $geb1_link "<a href=\"gebaeude.php?activate=1\">Bauen</a>";
    echo 
    "$geb1_link";
    }

    //ist das der fall, dann erscheint in einer tabelle der link "bauen" s.o. und der wert activate wird auf 1 gesetzt

    if ($active==1// wenn man auf bauen geklickt hat
    {
    $zeit1 time(); //aktuelle zeit wird ermittelt
    $endzeit1 $zeit1 $tMkommalos//die aktuelle zeit wird um die bauzeit des gebäudes erhöht
    $active 0//damit die if-abfrage nur einmal durchgeführt wird
    mysql_query("UPDATE `geb` SET `gebbau1` = '$endzeit1', `zeitstempel` = '$zeit1'") or die(mysql_error()); // beide werte werden nun in die datenbank eingefügt
    }

    if (
    $endzeit1 $zeit1//solange die fertigungszeit noch nicht erreicht ist, wird die aktuelle zeit immer beim klicken in der datenbank aktualisiert

    {
    $zeit1 time();
    echo 
    "In Bau"
    mysql_query("UPDATE `geb` SET `zeitstempel` = '$zeit1'") or die(mysql_error());
    }

    if (
    $zeit1 >= $endzeit1 && $zeit1 && $endzeit1 0/*wenn die jetzige zeit größer oder gleich der fertigstellungszeit ist, wird das gebäude in die datenbank eingetragen. 
    Damit das nicht nach jedem klick passiert, müssen die werte $zeit1 und $endzeit1 über 0 sein, also durch den if activate = 1 schon für einen bauauftrag aktiviert sein.*/

    //ist das erledigt wird die gebäudestufe um 1 erhöht und die baufaktoren werden wieder auf 0 gesetzt (gebbau1 und zeitstempel)

    {
    $geb1neu $geb1 ;
    mysql_query("UPDATE `geb` SET `geb1` = '$geb1neu', `gebbau1` = '0', `zeitstempel` = '0'") or die(mysql_error()); 
    ?> 
    Wenn ich jetzt aber auf Bauen klicke, komme ich wieder in den gleichen Bildschirm und kann wieder auf Bauen klicken, was ja nicht möglich sein sollte, weil gebbau1 und zeitstempel1 ja nicht mehr den wert 0 haben, was voraussetzung dafür ist.

    Wer kann mir helfen?

    PS: Habe vor 8 tagen mit PHP begonnen, kann also sehr wohl ein Noobfehler darin sein
    Dummheit ist Unsterblich.

  • #2
    wenn du zeitstempel einen wert zuweist, wieso sollte dann zeitstempel1 nicht mehr auf 0 stehen???

    Habe vor 8 tagen mit PHP begonnen
    Mal ehrlich, findest du nicht, dass es dann ein bisschen früh ist, ein online-game zu programmieren???

    Kommentar


    • #3
      Sorry, habe mich im fragesatz unten vertippt, es muss natürlich heißen:

      Wenn ich jetzt aber auf Bauen klicke, komme ich wieder in den gleichen Bildschirm und kann wieder auf Bauen klicken, was ja nicht möglich sein sollte, weil gebbau1 und zeitstempel ja nicht mehr den wert 0 haben, was voraussetzung dafür ist.

      Und wegen den 8 Tagen und zu früh, ich habe die Pläne dazu 1 1/2 Monate erarbeitet.
      Seit diesen 8 tagen habe ich nur geübt wie PHP funktioniert. Und was soll ich sagen, bis auf die Zeitberechnung klappt alles was mit auslesen oder einfügen von Werten zu tun hat fehlerfrei.

      Anmeldung und Login waren auch kein Problem.
      Dummheit ist Unsterblich.

      Kommentar


      • #4
        Was Tobiaz eventuell meinte sind Aspekte wie Sicherheit, den sowas ist schießlich grade bei einem Onlinespiel wichtig.

        Kommentar


        • #5
          Um Sicherheit habe ich mich auch gekümmert.
          Name und Passwort werden beim einloggen in einem Cookie gespeichert und auf jeder Seite neu daraus abgefragt.
          Nebenbei gibt es bei der Registrierung einen Eintrag in die Datenbank bei "Reg". Der Wert wird auf 1 gesetzt und man kann die Seiten nur aufrufen wenn man den "Reg"-Wert auf 1 hat.
          Seitenaufrufen ohne Registrierung oder mit falschem Namen bzw. Passwort sind nicht möglich, ist alles schon getestet.

          [EDIT]
          Habe den Fehler gefunden:

          <a href=\"gebaeude.php?activate=1\">Bauen</a>";


          if ($active==1) // wenn man auf bauen geklickt hat
          {
          $zeit1 = time(); //aktuelle zeit wird ermittelt
          $endzeit1 = $zeit1 + $tMkommalos; //die aktuelle zeit wird um die bauzeit des gebäudes erhöht
          $active = 0; //damit die if-abfrage nur einmal durchgeführt wird

          ---------------------
          wenn activate auf 1 steht rührt das active wenig. wie geahnt ein noobfehler, thread kann geschlosen werden.
          Zuletzt geändert von Marneus Calgar; 12.02.2004, 22:12.
          Dummheit ist Unsterblich.

          Kommentar


          • #6
            Name und Passwort werden beim einloggen in einem Cookie gespeichert und auf jeder Seite neu daraus abgefragt.
            wie du das ganze realisierst, zeigt aber eindeutig, dass ich mit meiner einschätzung recht hatte.

            Von Sessions hast du anscheinend noch nie etwas gehört. Warum sperrst du User ohne Cookies von deinem Spiel aus, obwohl es nicht nötig ist?

            Sicher ist es verständlich, dass man sowas nahch 8 Tagen noch nicht berücksichtigen kann. Aber genau das ist was ich meine. Du hast in den 1 1/2 Monaten vielleicht den aufbau strukturiert. der hat aber noch lange nichts mit der realisierung zu tun.

            Kommentar


            • #7
              Von Sessions habe ich schon gehört, jedoch weiss ich nicht wie ich die einfüge. Wenn es mir jemand erklärt wäre ich ein Stück weiter.
              Dummheit ist Unsterblich.

              Kommentar


              • #8
                http://www.php-resource.de/tutorials/read/38/1/

                hth
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  das steht alles im manual unter www.php.net/session
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar

                  Lädt...
                  X