Einträge Zusammenzählen

  • Hallo Leute :D

    Ich habe für unsere virtuelle F1 Liga ein Script gebastelt, damit wir die Ergebnisse der Rennen viel einfacher eintragen können.

    Im Prinzip steht das ganze Script und ist fertig, nur habe ich ein Problem mit der Sortierung der Ausgabe.

    Ich poste erstmal den relevanten Code:

    Ich habe also Tabellen für jede Strecke angelegt, und zähle die Punkte für jedes Team zusammen. Das Problem ist, das mir die Teams nicht nach den Gesamtpunkten ausgespuckt werden. ($punktetotal)

    Mir ist schon klar wieso das nicht funktioniert so, aber ich finde einfach keine Lösung für das Problem. Gibts irgend ein Trick damit ich ein Punktetotal kriege ohne das manuell eintragen zu müssen? Vielleicht über die Datenbank (Mysql) selber?

    Ich danke euch im voraus,
    Freundliche Grüsse
    SirGyr

  • Wenn du mal deine Datenbanktabellen-Struktur postest, kann ichs dir sagen

  • Eine Tabelle, danach folgende Felder:
    Feld Typ
    user_id int(2)
    Team varchar(15)
    punkte_australien int(2)
    punkte_bahrain int(2)
    punkte_belgien int(2)
    punkte_brasilien int(2)
    punkte_china int(2)
    punkte_deutschland int(2)
    punkte_europa int(2)
    punkte_frankreich int(2)
    punkte_grossbritannien int(2)
    ....etc.

    Hilft das weiter?

  • also mysql_result ist nicht die optimale wahl, du solltest direkt auf das result-array zugreifen, das spart dir eine menge Arbeit.

    SELECT * FROM tabelle WHERE team LIKE 'irgendwas';

    und dann kannst du das resultset auch direkt in der ausgabe abarbeiten:

    Code
    <td align=\"center\" class=\"row1\" width=\"9%\"><span class=\"Stil3\">$result["fahrzeug"]</td>
    
    
    
    
     <td align=\"center\" class=\"row1\" width=\"4%\"><span class=\"Stil3\">$result["punkte_spanien"]</td>

    und am ende dann

    Code
    $gesamt = $result["punkte_spanien"]+$result["punkte_monaco"]+...
  • Naja ! SeinProblem besteht aber darin das er gerne das beste Team (höchste punkte ) als erstes ausgeben will und dann die teams mit den jeweils niedrigeren Punkten

    also würdest du die gesamtpunkte in einer Datenbank speichern wie z.B.

    Tabelle --> Top_Teams

    id (int)
    team_name (text)
    gesamtpunkte (int)

    damit köntest du dann bei mysql_query eine sortierung machen ....

    Code
    $top_teams = @mysql_query("SELECT * FROM `Top_Teams` ORDER BY gesamtpunkten DESC");


    Mit DESC oder ASC kannst du aufsteigend oder absteigend Sortieren !die Anzahl der Teams ermitteln

    die Anzahl der Teams ermitteln

    Code
    $anzahl = @mysql_num_rows($top_teams);


    Und jetzt noch die ausgaben !

    Code
    if($anzahl){
      for($i=1;$i<$anzahl;$i++){
     team = mysql_query("SELECT * FROM `deine_TABELLE` WHERE TEAM='" . mysql_result($top_teams,$i,"Top_Teams.team_name") . "'");
     echo "Nr. $i : $team";
     }
    }
  • Das ist richtig ja. Aber das ganze Script macht ja erst richtig Sinn wenn ich nicht von Hand alles ausrechnen muss. Sprich die Gesamtpunkte sollte mein Script zusammenzählen, ohne meine manuelle Beihilfe.

    Hat jemand ne weitere Idee wie ich das Bewerkstelligen kann? Gibts ne Möglichkeit die Punkte in der Datenbank selbst auszurechnen? So ne Art auto_increment das die eingetragenen Punkte berücksichtigt...

    Aber danke erstmal für eure Mühen! :D

  • ja, die moeglichkeiten gibt es,

    schau dir mal die Dokumentation zu SQL / MySQL an:


    http://dev.mysql.com/doc/mysql/en/index.html

    Dort insbesondere die Syntax zu SELECT und Subselects, SUM, MAX, HAVING und ORDER und die Syntax zu arithmetrischen Operationen.

    Damit kannst du dein Problem loesen.