Hallo Wissende,
ich habe versucht ein Ranking, also eine Spieltagstabelle im Fussball zu berechnen, bekomme es aber einfach nicht hin. Also es läuft schon, aber ich denke mal, dass mein Problem darin besteht, dass ich nicht in der Lage bin dynamische mehrdimensional Arrays zu erzeugen - falls das überhaupt der richtige Weg ist.
Im folgenden kann der geneigte Helfer sehen, wie ich es derzeit löse. Der Code ist nicht sonderlich, aber ich kanns nicht besser.
Folgendes passiert in dem Script:
Das Script soll eine Tabelle in einer Liga einer bestimmten Saison bis zu einem bestimmten Spieltag berechnen.
Folgendes Problem habe ich hierbei. Ich ging davon aus, dass ich mit folgendem Code in einem mehrdimensionalen Array einen eindeutigen Eintrag erstellen kann.
Leider scheint das so nicht zu stimmen, denn es wird mir jedes mal, wenn ich diesen Aufruf so tätige ein neuer Array angelegt, was zur Folge hat, dass in meiner Tabelle am 3. Spieltag jedes Team 3 mal gelistet wird, da dieser Eintrag im Array 3 mal vorgenommen wurde, weil die Team_id 3 mal gefunden wurde.
Ich habe keine Ahnung ob jemand von versteht was ich meine, werde aber gern weitere Fragen beantworten.
Wenn ich Euch jetzt fragt, was am Output rauskommt hier mal ein kleines Beispiel zum 3. Spieltag
erwünscht gewesen wäre
Tabelle 3 Spieltag Punkte Tore Diff
Bayern München 3 7:4 3
ich erhalte aber
Tabelle 3 Spieltag Punkte Tore Diff
Bayern München 2:2 0
Bayern München 3:3 0
Bayern München 3 7:4 3
wobei die einzelnen Einträge exakt den einzelnen Spieltagen entspricht.
Die Punkte sind leider falsch, da wohl ein Fehler bei der Vergabe von Punkte bei Unentschieden drin ist. Das ist aber erstmal sekundär.
Ich würde mich echt über Hilfe freuen, weil mir abstraktes Vorstellungsvermögen, wie es bei Arrays scheinbar vorhandensein muss, vollkommen abgeht.:-)
ich habe versucht ein Ranking, also eine Spieltagstabelle im Fussball zu berechnen, bekomme es aber einfach nicht hin. Also es läuft schon, aber ich denke mal, dass mein Problem darin besteht, dass ich nicht in der Lage bin dynamische mehrdimensional Arrays zu erzeugen - falls das überhaupt der richtige Weg ist.
Im folgenden kann der geneigte Helfer sehen, wie ich es derzeit löse. Der Code ist nicht sonderlich, aber ich kanns nicht besser.
Folgendes passiert in dem Script:
Das Script soll eine Tabelle in einer Liga einer bestimmten Saison bis zu einem bestimmten Spieltag berechnen.
Folgendes Problem habe ich hierbei. Ich ging davon aus, dass ich mit folgendem Code in einem mehrdimensionalen Array einen eindeutigen Eintrag erstellen kann.
PHP-Code:
$ranking[$teams_count->id][0] = $match_count->team_a_id;
Ich habe keine Ahnung ob jemand von versteht was ich meine, werde aber gern weitere Fragen beantworten.
PHP-Code:
function GetRankingOfRound($league_id, $season_id, $round)
{
//wir holen uns nur mal so die anzahl der gefundenen spiele
$sql = "SELECT * FROM sdl_rounds WHERE season_id ='$season_id' and league_id='$league_id' and round <= '$round'";
$erg = mysql_query($sql);
$rowy = mysql_num_rows($erg);
$rows = 1;
echo("<table cellspacing=\"0\" cellpadding=\"0\" width=\"812px\">\n");
echo("<tr><th>Tabelle ".$round." Spieltag</th><th>Punkte</th><th>Tore</th><th>Diff</th></tr>\n");
//wir holen uns die wertigkeit eines spieles aus der db
$sql = "SELECT pts_g,pts_u,pts_v FROM sdl_leagues WHERE id='$league_id'";
$details = mysql_query($sql);
$res = mysql_fetch_object($details);
$pts_g = $res->pts_g; #gewinner
$pts_u = $res->pts_u; #unentschieden
$pts_v = $res->pts_v; #verloren
//nur zum debuggen
echo 'Sieg:'.$pts_g;
echo 'Loos:'.$pts_v;
echo 'Unen:'.$pts_u;
#alle teams der liga durchkauen und von jedem team jedes spiel eines spieltages holen
$sql = "Select * from sdl_teams where league_id = '$league_id'";
$teams = mysql_query($sql);
while ($teams_count = mysql_fetch_object($teams)) {
$sql= "SELECT * FROM sdl_rounds
WHERE season_id ='$season_id' AND
league_id ='$league_id' AND
round <='$round' AND
(team_a_id =".$teams_count->id." OR team_b_id =".$teams_count->id.")";
$matches = mysql_query($sql);
while ($match_count = mysql_fetch_object($matches)) {
//das gesuchte team ist team a und hat gewonnen
if (($match_count->team_a_id == $teams_count->id) and ($match_count->result_a > $match_count->result_b)) {
//erzeuge eindeutigen eintrag im array mit team_id
$ranking[$teams_count->id][0] = $match_count->team_a_id;
//lies bisherige gewonnene punkte ein
$pts = $ranking[$teams_count->id][1];
//schreibe aktualisierte punkte zurück
$ranking[$teams_count->id][1] = $pts+$pts_g;
}
//das gesuchte team ist team a und hat verloren
else if (($match_count->team_a_id == $teams_count->id) and ($match_count->result_a < $match_count->result_b)) {
$ranking[$teams_count->id][0] = $match_count->team_a_id;
$pts =$ranking[$teams_count->id][2];
$ranking[$teams_count->id][2] = $pts+$pts_v;
}
//das gesuchte team ist team a und hat unentschieden
else if (($match_count->team_a_id == $teams_count->id) and ($match_count->result_a = $match_count->result_b)) {
$ranking[$teams_count->id][0] = $match_count->team_a_id;
$pts =$ranking[$teams_count->id][3];
$ranking[$teams_count->id][3] = $pts+$pts_u;
}
//das gesuchte team ist team b und hat gewonnen
else if (($match_count->team_b_id == $teams_count->id) and ($match_count->result_b > $match_count->result_a)) {
$ranking[$teams_count->id][0] = $match_count->team_b_id;
$pts = $ranking[$teams_count->id][1];
$ranking[$teams_count->id][1] = $pts+$pts_g;
}
//das gesuchte team ist team b und hat verloren
else if (($match_count->team_b_id == $teams_count->id) and ($match_count->result_b < $match_count->result_a)) {
$ranking[$teams_count->id][0] = $match_count->team_b_id;
$pts =$ranking[$teams_count->id][2];
$ranking[$teams_count->id][2] = $pts+$pts_v;
}
//das gesuchte team ist team b und hat unentschieden
else if (($match_count->team_b_id == $teams_count->id) and ($match_count->result_b = $match_count->result_a)) {
$ranking[$teams_count->id][0] = $match_count->team_b_id;
$pts =$ranking[$teams_count->id][3];
$ranking[$teams_count->id][3] = $pts+$pts_u;
}
//addiere die tore
$ranking[$teams_count->id][4] = $ranking[$teams_count->id][4] + $match_count->result_a;
$ranking[$teams_count->id][5] = $ranking[$teams_count->id][5] + $match_count->result_b;
echo("<tr><td>".GetTeamName($ranking[$teams_count->id][0])."</td>\n");
echo("<td>".$ranking[$teams_count->id][1]."</td>\n");
echo("<td>".$ranking[$teams_count->id][4].":");
echo($ranking[$teams_count->id][5]."</td>\n");
echo("<td>".($ranking[$teams_count->id][4]-$ranking[$teams_count->id][5])."</td>\n");
}
}
echo("</table>\n");
echo 'Gesamte Spiele: '.$rowy;
print_r($ranking);
}
erwünscht gewesen wäre
Tabelle 3 Spieltag Punkte Tore Diff
Bayern München 3 7:4 3
ich erhalte aber
Tabelle 3 Spieltag Punkte Tore Diff
Bayern München 2:2 0
Bayern München 3:3 0
Bayern München 3 7:4 3
wobei die einzelnen Einträge exakt den einzelnen Spieltagen entspricht.
Die Punkte sind leider falsch, da wohl ein Fehler bei der Vergabe von Punkte bei Unentschieden drin ist. Das ist aber erstmal sekundär.
Ich würde mich echt über Hilfe freuen, weil mir abstraktes Vorstellungsvermögen, wie es bei Arrays scheinbar vorhandensein muss, vollkommen abgeht.:-)
Kommentar