Ankündigung

Einklappen
Keine Ankündigung bisher.

Cronjob problem

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

  • Cronjob problem

    Hallo,
    ich habe ein Problem mit einer Berechnung:
    Ich möchte ein Browsergame (aus Spaß) programmieren und stehe nun vor der Frage, wie ich das mit dem Cronjob mache. Ich möchte das jeder User eine ausgerechnete Menge an Geld bekommt... Nun habe ich einfach mal 2 User registriert und der Cronjob addiert beide einnahmen und jeder bekommt gleich viel. Wie vermeide ich das?
    Hier der Code:
    PHP-Code:
    $mysql "SELECT * FROM game";
    $open mysql_query($mysql);
    $r mysql_fetch_object($open);  
    if(
    $r->level=="1"){
    $einnahmen $r->haus1*200+$r->haus2*250+$r->haus3*100;}else{
    $einnahmen $r->haus1*200+$r->haus2*150+$r->haus3*100;}
    $ausgaben $r->kw*250+$r->wk*25+$r->az*125+$r->pz*400+$r->fz*250;
    $ergebnis $einnahmen-$ausgaben;
    $money $r->money+$ergebnis;

    $aendern "UPDATE bg_login Set
    money = '
    $money'";
    $update mysql_query($aendern); 
    Soll ich für jeden User ein Script erstellen?! +phpbb_eek
    Das eProjekt - Web- & Werbeagentur

  • #2
    AW: Cronjob problem

    Dazu brauchst du eigentlich keinen Cronjob.
    Du kannst die Menge beim erneuten Login berechnen. Speicher den Zeitpunkt des letzten Seitenaufrufs und multipliziere die Differenz zu time() mit deinem Geld-Pro-Sekunden-Faktor.

    Kommentar


    • #3
      AW: Cronjob problem

      Habe soeine ähnliche Art gewählt...

      Danke
      Das eProjekt - Web- & Werbeagentur

      Kommentar


      • #4
        AW: Cronjob problem

        Und sonst: While-Schleife und unset()?

        Kommentar


        • #5
          AW: Cronjob problem

          Wenn ich das grad richtig verstanden habe, hat jeder User in der Tabelle "bg_login" einen Eintrag wo steht wieviel Geld er hat. Du kannst da entweder alle Zeilen abfragen, oder direkt im MySQL-Query addieren:

          PHP-Code:
          <?php
          $query_str 
          "SELECT * FROM game";
          $result mysql_query($query_str);
          $row mysql_fetch_assoc($result);

          //Berechnung des neu dazubekommenen Geldes
          ...
          $ergebnis $einnahmen-$ausgaben;

          $query_str "UPDATE bg_login SET money = money + ".$ergebnis;
          mysql_query($query_str);
          ?>
          Hier wird dann für jeden User in der Tabelle der vorher ausgerechnete Betrag zu seinem alten Betrag dazuaddiert. (Wenn unter $ergebnis eine negative Zahl rauskommt, wird diese halt abgezogen.)
          Wenn dein Script aber anders funktioniert und ich es nur nicht rauslesen konnte, dass jeder User einen individuell berechneten Betrag bekommt, dann musst du mit Schleifen arbeiten.

          Achja, ansonsten wollte ich noch sagen dass ich deine Methode die if-Abfragen zu schreiben recht unleserlich und unübersichtlich finde. Besonders wenn der Code dann irgendwann länger wird. Ich schreibs immer so:

          PHP-Code:
          <?php
          if([I]Bedingung[/I]) {
              
          blablabla;
          } else {
              
          sonstigesblablabla;
          }
          ?>
          Alles andere wo auch die geschweiften Klammern zum Einsatz kommen, mache ich genauso mit Tabulatoren einrücken. Man sieht einfach besser was wo in eine Schleife/Funktion/If-Abfrage/Sonstiges gehört. Und es ist eigentlich auch normaler Programmierstandard wenn ich mich nicht irre

          Kommentar

          homepage-forum.de - Hilfe für Webmaster! Statistiken

          Einklappen

          Themen: 57.205   Beiträge: 432.331   Mitglieder: 29.597   Aktive Mitglieder: 46
          Willkommen an unser neuestes Mitglied, Drausi.

          Online-Benutzer

          Einklappen

          782 Benutzer sind jetzt online. Registrierte Benutzer: 4, Gäste: 778.

          Mit 4.707 Benutzern waren am 12.01.2023 um 03:07 die meisten Benutzer gleichzeitig online.

          Die neuesten Themen

          Einklappen

          Die neuesten Beiträge

          Einklappen

          Lädt...
          X