Problem mit Cronjob Datei

  • Hallo ich hab ein Onlinespiel und möchte dafür ein Cronjob erstellen, der für das TEAM die durchschnittstärke der 15 besten SPieler im Team berechnet.
    Nur leider nimmt er immer alle spieler des SPiels ins visier.
    Bedeutet das Limit 15 berücksichtigt er nicht...

    Zur Erklärung:

    ds = Spieler Stärke
    dstaerke = soll die durchnittstärke des Teams sein von den besten 15 Spielern


    Hat wer nen rat?

  • Wozu brauchst du $i? Und achte mal auf deine while-Schleife, die geht ja auch alles durch. Dort, wo du ein Limit einsetzt, ist das völliger Quatsch, da du immer nur einen Treffer aus der DB holst.

    Richtig debuggen


    • Man bemerkt, dass ein Skript nicht das tut, was es soll.
    • Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL);
    • Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
    • Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    • An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysql_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
    • Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    • Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    • Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    • Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
  • Dort, wo du ein Limit einsetzt, ist das völliger Quatsch, da du immer nur einen Treffer aus der DB holst.


    This.
    Die Abfrage müsste etwa so aussehen (unter der Prämisse, dass der Primary Key deiner spieler-Tabelle `id` heißt, ansonsten halt anpassen):

    PHP
    $sql = "
      SELECT
         AVG(ds)
       FROM
         ".$conf['db_prefix']."_spieler
       WHERE
         id IN( SELECT id FROM ".$conf['db_prefix']."_spieler WHERE verein_id='".$row['id']."' ORDER BY ds DESC LIMIT 15 )";
    $res = mysql_query($sql);

    Edit: Etwas nervig, dass bei allem was ich aus Netbeans hier reinpaste die Zeilenumbrüche entfernt werden...

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook