Napisałem tabelę dla strony sportowej, która miała sortować zespoły wg punktów, a jeżeli ilość punktów jest równa to według bilansu (małe punkty zdobyte do straconych). Niestety zmienił się regulamin i wymaga to ingerencji w kod, z którym nie bardzo umiem sobie poradzić.
Dokładnie chodzi o to, że w przypadku równej ilości punktów dwóch lub większej ilości drużyn liczy się mała tabelka (punkty, lub znów bilans) tylko pomiędzy tymi drużynami, która odpowiada na przykład za kolejność na miejscach 9-11. Niestety nie umiem tego rozwiązać. Czy ktoś ma jakiś pomysł na takie zapytanie? Poniżej prezentuję cały kod, ale mogę zedytować tylko dla zapytania, żeby nie było bałaganu

<?
function multi_sort($array, $akey)
{
function compare($a, $b)
{
return strcmp($a[$key], $b[$key]); }
usort($array, "compare"); return $array;
}
function tab_plk_duza() {
if($color == "#f6f6f6") {
$color = "#efefef";
} else {
$color = "#f6f6f6";
}
return($color);
}
$miejsce = 0;
$sql = "SELECT klub FROM klub WHERE poddzial=29 ORDER BY klub";
$i=0;
$sql="SELECT SUM(tabele.punkty) AS punkty, (SUM(zdobyte)/SUM(stracone)) AS bilans FROM klub,tabele WHERE klub.poddzial=29 AND tabele.rozgrywki=4 A
ND tabele.sezon=2007 AND klub.klub=".$row["klub"]." AND tabele.klub=".$row["klub"]." ORDER BY punkty,bilans DESC";
$id[$i]['bilans'] = $res['bilans'];
$id[$i]['punkty'] = $res['punkty'];
$id[$i]['klub'] = $row['klub'];
$i++;
}
/*
foreach($id as $res)
$sortAux[] = $res['bilans'];
array_multisort($sortAux, SORT_DESC, $id);
*/
$i=0;
foreach ($id as $res2) {
$matrix[0][$i]=$res2['punkty'];
$matrix[1][$i]=$res2['bilans'];
$matrix[2][$i]=$res2['klub'];
$i++;
}
array_multisort($matrix[0
], SORT_DESC
, SORT_NUMERIC
,$matrix[1
], SORT_DESC
, SORT_NUMERIC
,$matrix[2
], SORT_DESC
, SORT_NUMERIC
);
//print_r($matrix);
$i=0;
foreach ($id as $res) {
$id2[$i]['bilans']=$matrix[1][$i];
$id2[$i]['punkty']=$matrix[0][$i];
$id2[$i]['klub']=$matrix[2][$i];
$i++;
}
foreach ($id2 as $tab)
{
$sql = "SELECT MAX(zdobyte) AS max_zdobyte, MAX(stracone) AS max_stracone, SUM(p+w) AS mecze, SUM(punkty) AS punkty, SUM(zdobyte) AS zdobyte, SUM(stracone) AS stracone, SUM(w) AS w, SUM(p) AS p, (SUM(zdobyte)/SUM(stracone)) AS bilans, AVG(zdobyte) AS srednia_zdobyte, AVG(stracone) AS srednia_stracone FROM tabele WHERE rozgrywki=4 AND sezon=2007 AND klub='".$tab['klub']."'";
$mecze = $r["mecze"];
$punkty = $r["punkty"];
$w = $r["w"];
$p = $r["p"];
$srednia_zdobyte = $r["srednia_zdobyte"];
$srednia_stracone = $r["srednia_stracone"];
$max_zdobyte = $r["max_zdobyte"];
$max_stracone = $r["max_stracone"];
$stracone = $r["stracone"];
$zdobyte = $r["zdobyte"];
$bilans = $r["bilans"];
$srednia_zdobyte = substr($srednia_zdobyte, 0
,4
); $srednia_stracone = substr($srednia_stracone, 0
,4
);
$q = "SELECT zespol FROM klub WHERE klub='".$tab['klub']."'";
$zespol = $row["zespol"];
//$klub = $row["klub"];
//$zespol = ereg_replace("$klub", "$nklub", $zespol);
}
}
$bgcolor = tab_plk_duza();
print "<TR><TD width=20 align=right bgcolor=$bgcolor><font id=tabela>"; print ++$miejsce.".</font></TD> <TD width=180 bgcolor=$bgcolor><A HREF=/klub/".$tab['klub']." class=b2>$zespol</a></TD>
<TD align=center width=25 bgcolor=$bgcolor><font id=tabela>$mecze</FONT></TD>
<TD align=center width=25 bgcolor=$bgcolor><font id=tabela>$w</FONT></TD>
<TD align=center width=25 bgcolor=$bgcolor><font id=tabela>$p</FONT></TD>
<TD align=center width=25 bgcolor=$bgcolor><font id=tabela>".$tab['punkty']."</FONT></TD>
<TD align=right width=30 bgcolor=$bgcolor><font id=tabela>$zdobyte</FONT></TD>
<TD align=center width=5 bgcolor=$bgcolor><font id=tabela>:</FONT></TD>
<TD align=left width=30 bgcolor=$bgcolor><font id=tabela>$stracone</FONT></TD>
<TD align=center width=40 bgcolor=$bgcolor><font id=tabela>".$tab['bilans']."</FONT></TD>
<TD align=center width=40 bgcolor=$bgcolor><font id=tabela>$srednia_zdobyte</FONT></TD>
<TD align=center width=40 bgcolor=$bgcolor><font id=tabela>$srednia_stracone</FONT></TD>
<TD align=center width=40 bgcolor=$bgcolor><font id=tabela>$max_zdobyte</FONT></TD>
<TD align=center width=40 bgcolor=$bgcolor><font id=tabela>$max_stracone</FONT></TD>
</TR>";
}
?>
Ten post edytował Kwiatol 23.03.2008, 14:27:14