hattrix: Fußballtabelle - Serien (Siege,Ungeschlagen,Sieglos) erstellen

Mein Code:

  
    $series = "SELECT team_id,max( spieltag ) AS sp, win, remis, lost FROM hattrix_tabelle WHERE team_id =1 GROUP BY win, remis, lost ORDER BY sp DESC";  
    $results = mysql_query($series);  
  
    while($row = mysql_fetch_row($results))  
    {  
  
      if($row[2]==1) $win=$row[1];  
      if($row[3]==1) $remis=$row[1];  
      if($row[4]==1) $lost=$row[1];  
      if($row[3]==1 || $row[4]==1) $rul=$row[1];  
      if($row[2]==1 || $row[3]==1) $wur=$row[1];  
  
      $s=(7-$rul); //siegesserie  
  
      echo 'Siege:<br><font face="Tahoma" size="1">'.$row[0].' ('.$s.'x)</font><br>';  
  
      $s=(7-$lost); //ungeschlagen  
  
      echo 'Ungeschlagen:<br><font face="Tahoma" size="1">'.$row[0].' ('.$s.'x)</font><br>';  
  
      $s=(7-$wur); //sieglos  
  
      echo 'Sieglos:<br><font face="Tahoma" size="1">'.$row[0].' ('.$s.'x)</font><br>';  
  
    }  

und erhalte:

  
Siege:  
1 (7x)  
Ungeschlagen:  
1 (7x)  
Sieglos:  
1 (0x)  
Siege:  
1 (2x)  
Ungeschlagen:  
1 (2x)  
Sieglos:  
1 (0x)  
Siege:  
1 (3x)  
Ungeschlagen:  
1 (2x)  
Sieglos:  
1 (3x)  

Komme nicht weiter ...

  1. Vergessen, in der DB vorhanden Daten:

      
    spieltag,team_id,win,remis,lost  
    1, 1, 1, 0, 0  
    2, 1, 0, 1, 0  
    3, 1, 1, 0, 0  
    4, 1, 0, 1, 0  
    5, 1, 0, 0, 1  
    6, 1, 1, 0, 0  
    7, 1, 1, 0, 0  
    
    
    1.   
            if($row[2]==1) $win=$row[1];  
            if($row[3]==1) $remis=$row[1];  
            if($row[4]==1) $lost=$row[1];  
            if($remis<$lost) { if($row[3]==1 || $row[4]==1) $rul=$lost; }  
            if($remis>$lost) { if($row[3]==1 || $row[4]==1) $rul=$remis; }  
            if($win<$remis) { if($row[2]==1 || $row[3]==1) $wur=$remis; }  
            if($win>$remis) { if($row[2]==1 || $row[3]==1) $wur=$win; }  
      
      

      Konnte es mir nun selbst beantworten! In dem Script dürften nun keine Bugs mehr sein?

      1. Hallo,

        war deine Ausgabe im 1. Post nur eine Debugausgabe oder willst du das wirklich kein table-Element verwenden?

        Gruß
        MrWurf

        1. Ja, nur zum debuggen. Stylen kommt zum Schluss.

          Habe doch noch ein Problem... habe ich mehrere Vereine, wird immer nur Team_id 1 angeziegt. Auch wenn ich die WHERE-Klausel entferne!

          Weiß jemand, wie man das hinbekommt, dass man von jedem Verein die Serie sieht?

          1. Hallo,

            Habe doch noch ein Problem... habe ich mehrere Vereine, wird immer nur Team_id 1 angeziegt. Auch wenn ich die WHERE-Klausel entferne!

            weil du nicht nach team_id gruppierst?

            Gruß
            MrWurf

            1. Nein, funktioniert auch nicht.

              Aktuelle Stand:

                
                  $series = "SELECT team_id,max( spieltag ) AS sp, win, remis, lost FROM hattrix_tabelle GROUP BY win, remis, lost GROUP BY team_id ORDER BY sp DESC";  
                  $results = mysql_query($series);  
                
                  while($row = mysql_fetch_row($results))  
                  {  
                    $team=$row[0];  
                    if($row[2]==1) $win=$row[1];  
                    if($row[3]==1) $remis=$row[1];  
                    if($row[4]==1) $lost=$row[1];  
                    if($remis<$lost) { if($row[3]==1 || $row[4]==1) $rul=$lost; }  
                    if($remis>$lost) { if($row[3]==1 || $row[4]==1) $rul=$remis; }  
                    if($win<$remis) { if($row[2]==1 || $row[3]==1) $wur=$remis; }  
                    if($win>$remis) { if($row[2]==1 || $row[3]==1) $wur=$win; }  
                
                  }  
                
                    $s=(7-$rul); //siegesserie  
                
                    echo 'Siege:<br><font face="Tahoma" size="1">'.$team.' ('.$s.'x)</font><br>';  
                
                    $s=(7-$lost); //ungeschlagen  
                
                    echo 'Ungeschlagen:<br><font face="Tahoma" size="1">'.$team.' ('.$s.'x)</font><br>';  
                
                    $s=(7-$wur); //sieglos  
                
                    echo 'Sieglos:<br><font face="Tahoma" size="1">'.$team.' ('.$s.'x)</font><br>';  
              
              
              1. Hallo

                Nein, funktioniert auch nicht.

                was funktioniert nicht?

                $series = "SELECT team_id,max( spieltag ) AS sp, win, remis, lost FROM hattrix_tabelle GROUP BY win, remis, lost GROUP BY team_id ORDER BY sp DESC";

                könnte es evtl. an der doppelten "GROUP BY" Klausel liegen?

                Gruß
                MrWurf

                1. Ich habe 2 Vereine als Team_id drin. Einmal die 1 und einmal die 2.

                  Er gibt mir nur die 2 aus und die Daten von 1.

                  Das doppelte GROUP BY habe ich entfernt.

  2. SELECT team_id,max( spieltag ) AS sp, win, remis, lost FROM hattrix_tabelle WHERE team_id =1 GROUP BY win, remis, lost ORDER BY sp DESC

    Deine Ergebnistabelle soll also mannschaftsbezogen ermitteln, wieviele Spiele insgesamt, davon verloren, gewonnen und unentschieden? Dann würde ich das so machen:

    SELECT  
      team_id AS Mannschaft  
      MAX(spieltag) AS Spiele  
      COUNT(win) AS Siege  
      COUNT(remis) AS Unentschieden  
      COUNT(lost) AS Niederlagen  
    FROM  
      hattrix_tabelle  
    WHERE  
      team_id = 1  
    GROUP BY  
      team_id
    

    Das ergäbe folgende Ergebnistabelle:

    Mannschaft | Spiele | Siege | Unentschieden | Niederlagen

    Um falsche Ergebnisse zu vermeiden, könnte man auch statt MAX die Siege, Unentschieden und Niederlagen summieren und als Gesamtzahl der Spiele auswerfen.

    Siechfred

    --
    Ich bin strenggenommen auch nur interessierter Laie. (molily)
    1. Nein, ich möchte Statistiken haben:

      • Siegesserie
      • Serie Ungeschlagen
      • Serie Sieglos