Einzelnen Beitrag anzeigen
  #2  
Alt 21.06.2004, 11:00:25
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
Ich hoffe, das kommt jetzt nicht zu spät. Dein Eintrag ist ja schon etwas länger her.

Ich würde es so ähnlich machen:

Die Spiele sind in einer DB "spiele" mit folgender Struktur:
ID
HID //ID DER HEIMMANNSCHAFT
AID //ID DER AUSWÄRTSMANNSCHAFT
toreH //TORE DER HEIMMANNSCHAFT
toreA //TORE DER AUSWÄRTSMANNSCHAFT

Dann liest du die Ergebnisse so aus, dass du ein Array mit folgender Struktur hast (als Beispiel für das Team mit der ID=5):

PHP-Code:
$tabelle['5']['punkte']=34;
$tabelle['5']['tore']=45;
$tabelle['5']['gegentore']=35;
$tabelle['5']['differenz']=10;

//ID IN ARRAY ABLEGEN, DER KEY IST DIE ANZAHL DER PUNKTE
foreach($tabelle as $ID => $row){
    
$punkte[$row['punkte']][]=$ID;
    }

//NACH PUNKTEN ABSTEIGEND SORTIEREN
krsort($punkte);

//JETZT DIE TABELLE ANZEIGEN
foreach($punkte as $pkt => $row){
    
//WENN ES NUR EINEN VEREIN MIT DIESER PUNKTZAHL GIBT, SOFORT AUSGEBEN
    
if(count($row)==1){
        
//HIER DANN VEREINSNAMEN, PUNKTE, TORDIFFERENZ ETC. WIE GEWÜNSCHT ANZEIGEN
        
}
    
//WENN ABER MEHR ALS EIN VEREIN DIE GLEICH PUNKTZAHL HABEN, DIE FUNKTION TABELLE AUFRUFEN
    
elseif(count($row)>1){
        
$tmp=tabelle($row);
        foreach(
$tmp as $pkt_tmp => $row_tmp){
            
//HIER DANN VEREINSNAMEN, PUNKTE, TORDIFFERENZ ETC. WIE GEWÜNSCHT ANZEIGEN
            
}
        }
    } 
Das entscheidende ist die Funktion tabelle(). Der erste Parameter ist ein Array, in dem die ID der Vereine abgelegt sind, die die gleich Punktzahl haben.

PHP-Code:
function tabelle($ID_array){
    
//ALLE BEGEGNUNGEN AUS DER DATENBANK AUSLESEN, DIE ZWISCHEN DEN MANNSCHAFTEN STATTGEFUNDEN HABEN, DIE IN DEM ARRAY $ID_array GESPEICHERT SIND
    
$query="SELECT HID, AID, toreH, toreA FROM spiele WHERE (HID='" implode("' OR HID='"$ID_array) . "') AND (AID='" implode("' OR AID='"$ID_array) . "') ORDER BY ID";
    
$result=mysql_query($query);
    
//JETZT EIN ARRAY $tmp ERSTELLEN, DAS DIE GLEICH STRUKTUR HAT WIE DAS OBEN ERWÄHNTE ARRAY $tabelle, NUR DAS HIER EBEN NUR DIE ENTSPRECHENDEN SPIELE GESPEICHERT SIND

    //JETZT DIESES ARRAY SORTIEREN
    
foreach($tabelle as $ID => $row){
        
$punkte[$ID]=$row['punkte'];
        
$tore[$ID]=$row['tore'];
        
$differenz[$ID]=$row['differenz'];
        }

    
//JETZT DAS ARRAY tmp SORTIEREN...
    
array_multisort($punkteSORT_DESC$differenzSORT_DESC$toreSORT_DESC$tmp);

    
//...UND ZURÜCKGEBEN
    
return $tmp;
    } 
Das ganze ist nicht getestet und auch nur aus dem Kopf heraus geschrieben. Fehler sind also nicht ausgeschlossen. Aber ich hoffe, dass wenigstens das Prinzip klar wird. Den Rest dürftest du dann alleine hinbekommen.

Geändert von xabbuh (22.06.2004 um 10:23:25 Uhr)
Mit Zitat antworten