gah07 0 Denunciar post Postado Fevereiro 7, 2013 Fala galera blza?!Sou novo por aqui e tb sou novo quanto ao assunto PHP. Peguei um script pronto da WEB, de um campeonato de futebol, e gostaria de usa-lo, porém queria editar o sistema de classificação. Do jeito que está ele mostra a classificação através de Pontos ganhos, porém gostaria que ele classificasse através da porcentagem de Vitórias e Derrotas, ou seja, através do aproveitamento da equipe.Alguém poderia me ajudar?O código é esse.. <?php function Compare_standings($ar1, $ar2) { if ($ar1['pts']<$ar2['pts']) return 1; else if ($ar1['pts']>$ar2['pts']) return -1; if ($ar1['gd']<$ar2['gd']) return 1; else if ($ar1['gd']>$ar2['gd']) return -1; if ($ar1['name']>$ar2['name']) return 1; else if ($ar1['name']<$ar2['name']) return -1; return 0; } function Compare_schedule($ar1, $ar2) { if ($ar1['date']<$ar2['date']) return -1; else if ($ar1['date']>$ar2['date']) return 1; return 0; } function listteams($divid,$season) { global $_CONF,$_LANG; require("classes/Menu.php"); $sql_seasons_statement = "SELECT * FROM ".$_CONF['tprefix']."seasons ORDER BY status DESC, name DESC"; $result_seasons = mysql_query("$sql_seasons_statement"); $total_seasons = mysql_num_rows($result_seasons); $s = 0; $season_select = " <select name=\"season\"> "; while($s < $total_seasons) { if(mysql_result($result_seasons,$s,"status") == 1) { $current_season = mysql_result($result_seasons,$s,"id"); } $season_select .= " <option value=\"".mysql_result($result_seasons,$s,"id")."\">" .mysql_result($result_seasons,$s,"name"). "</option> "; if(!$season) { if(mysql_result($result_seasons,$s,"status") == 1) { $open_season = mysql_result($result_seasons,$s,"id"); $open_season_name = mysql_result($result_seasons,$s,"name"); $season = $open_season; } } else { if(mysql_result($result_seasons,$s,"id") == $season) { $open_season = mysql_result($result_seasons,$s,"id"); $open_season_name = mysql_result($result_seasons,$s,"name"); } } $s++; } $season_select .= " </select> "; if(!$open_season_name) { $open_season_name = "Off-Season"; } $result_divisions = mysql_query("SELECT * FROM ".$_CONF['tprefix']."divisions WHERE disable != '0' ORDER BY list_order"); $counter_divisions = 0; $total_rows_divisions = mysql_num_rows($result_divisions); $divarray = Array(); $myselect = " <center> <form method=\"post\" action=\"index.php\"> <input type=\"hidden\" name=\"opt\" value=\"schedule\"> <select name=\"divid\">"; while($counter_divisions < $total_rows_divisions) { $thisdiv = stripslashes(mysql_result($result_divisions,$counter_divisions,"name")); $thisdivid = mysql_result($result_divisions,$counter_divisions,"id"); $divarray[$counter_divisions] = $thisdivid; $myselect .= " <option value=\"".$thisdivid."\">".$thisdiv."</option>"; $counter_divisions++; } $myselect .= " </select>".$season_select." <input class=\"button\" type=\"submit\" name=\"Submit\" value=\"$_LANG[cc_view]\"> </form></center>"; if(!$divid) { $divid = $divarray[0]; } $sql_div_name = "SELECT name FROM ".$_CONF['tprefix']."divisions WHERE id = '$divid'"; $result_div_name = mysql_query("$sql_div_name"); $total_div_name = mysql_num_rows($result_div_name); if($total_div_name != 0) { $thisdiv = mysql_result($result_div_name,0,"name"); } else { $thisdiv = ""; } $sql_standings = "SELECT * FROM ".$_CONF['tprefix']."schedule_scores WHERE " ."(team1_div = '$divid' OR team2_div = '$divid') AND " ."season = '$season' AND date != '0000-00-00'" ."ORDER BY date,time"; $result_standings = mysql_query("$sql_standings"); $total_standings = mysql_num_rows($result_standings); $standings_array = array(); $schedule_array = array(); $schedule_array1 = array(); $schedule_array2 = array(); if($season == $current_season) { $sql_standings_temp = "SELECT * FROM ".$_CONF['tprefix']."teams WHERE " ."division = '$divid' AND name != 'divadmin' AND name != 'admin' " ."ORDER BY name DESC"; $result_standings_temp = mysql_query("$sql_standings_temp"); $total_standings_temp = mysql_num_rows($result_standings_temp); $li = 0; while ($li < $total_standings_temp) { $team_temp = mysql_result($result_standings_temp,$li,"name"); $team_id_temp = mysql_result($result_standings_temp,$li,"id"); $standings_array[$team_temp]["id"] = $team_id_temp; $standings_array[$team_temp]["gp"] = 0; $standings_array[$team_temp]["d"] = 0; $standings_array[$team_temp]["w"] = 0; $standings_array[$team_temp]["l"] = 0; $standings_array[$team_temp]["pts"] = 0; $standings_array[$team_temp]["gf"] = 0; $standings_array[$team_temp]["ga"] = 0; $standings_array[$team_temp]["gd"] = 0; $li++; } } $startdate = date("Y-m-d", mktime(0, 0, 0, date("m") , date("d")-8, date("Y"))); $enddate = date("Y-m-d", mktime(0, 0, 0, date("m") , date("d")+8, date("Y"))); $i = 0; while ($i < $total_standings) { $gid = mysql_result($result_standings,$i,"id"); $date = mysql_result($result_standings,$i,"date"); $time = mysql_result($result_standings,$i,"time"); if($time == "1") { $time = "<font color=\"#ff0000\"><b>$_LANG[Postponed]</b></font>"; } elseif ($time == "0") { $time = "<font color=\"#ff0000\"><b>$_LANG[Cancelled]</b></font>"; } else { if($time == "TBA") { $time = $time; } else { $new_time = explode(":",$time); if($new_time[0] < "12" || $new_time[0] == "0") { if($new_time[0] == "0") $new_time[0] = "12"; $time = "$new_time[0]:$new_time[1]am"; } else { if($new_time[0] != "12") $new_time[0] = $new_time[0] - 12; $time = "$new_time[0]:$new_time[1]pm"; } } } $gm_summary = mysql_result($result_standings,$i,"summary"); $team1 = mysql_result($result_standings,$i,"team1"); $team2 = mysql_result($result_standings,$i,"team2"); $t1_score = mysql_result($result_standings,$i,"team1_score"); $t2_score = mysql_result($result_standings,$i,"team2_score"); $t1_div = mysql_result($result_standings,$i,"team1_div"); $t2_div = mysql_result($result_standings,$i,"team2_div"); $affect_standings = mysql_result($result_standings,$i,"standings"); $location = mysql_result($result_standings,$i,"location"); if(eregi("Other:::",$location)) { $location = eregi_replace("Other:::","",$location); } else { $loc_result = mysql_query("SELECT * FROM ".$_CONF['tprefix']."locations WHERE id = '$location'"); $location = "<a href='http://www.mapquest.com/maps/map.adp?country=US&address=".urlencode(mysql_result($loc_result,0,"street"))."%2C+&city=".urlencode(mysql_result($loc_result,0,"city"))."&state=".urlencode(mysql_result($loc_result,0,"state"))."&zipcode=".urlencode(mysql_result($loc_result,0,"zip"))."&homesubmit.x=0&homesubmit.y=0' target='_blank'> <u>".mysql_result($loc_result,0,"city").", ".mysql_result($loc_result,0,"state")." - ".mysql_result($loc_result,0,"name")."</u></a>"; } if($date == "0000-00-00") { $date = "TBD"; } if($time == "") { $time = "TBD"; } if($location == "") { $location = "TBD"; } $team1_id = $team1; $team2_id = $team2; if($team1 != "") { if(eregi("Other:::",$team1)) { $team1 = eregi_replace("Other:::","",$team1); } else { $sql_team1_name = "SELECT name FROM ".$_CONF['tprefix']."teams WHERE id = '$team1'"; $result_team1_name = mysql_query("$sql_team1_name"); $team1 = mysql_result($result_team1_name,0,"name"); } } else { $team1 = "TBD"; } if($team2 != "") { if(eregi("Other:::",$team2)) { $team2 = eregi_replace("Other:::","",$team2); } else { $sql_team2_name = "SELECT name FROM ".$_CONF['tprefix']."teams WHERE id = '$team2'"; $result_team2_name = mysql_query("$sql_team2_name"); $team2 = mysql_result($result_team2_name,0,"name"); } } else { $team2 = "TBD"; } if($date >= $startdate && $date <= date("Y-m-d")) { $schedule_array1[$gid]["date"] = $date; $schedule_array1[$gid]["time"] = $time; $schedule_array1[$gid]["location"] = $location; $schedule_array1[$gid]["team1"] = $team1; $schedule_array1[$gid]["team2"] = $team2; $schedule_array1[$gid]["t1_score"] = $t1_score; $schedule_array1[$gid]["t2_score"] = $t2_score; $schedule_array1[$gid]["gm_summary"] = $gm_summary; $schedule_array1[$gid]["gm_id"] = $gid; } elseif($date >= date("Y-m-d") && $date <= $enddate) { $schedule_array2[$gid]["date"] = $date; $schedule_array2[$gid]["time"] = $time; $schedule_array2[$gid]["location"] = $location; $schedule_array2[$gid]["team1"] = $team1; $schedule_array2[$gid]["team2"] = $team2; $schedule_array2[$gid]["t1_score"] = $t1_score; $schedule_array2[$gid]["t2_score"] = $t2_score; $schedule_array2[$gid]["gm_summary"] = $gm_summary; $schedule_array2[$gid]["gm_id"] = $gid; } if(is_numeric($t1_score) && is_numeric($t2_score) && $affect_standings == 1) { if($t1_score > $t2_score) { if($t1_div == $divid) { $standings_array[$team1]["id"] = $team1_id; $standings_array[$team1]["gp"]++; $standings_array[$team1]["w"]++; $standings_array[$team1]["l"] = $standings_array[$team1]["l"] + 0; $standings_array[$team1]["d"] = $standings_array[$team1]["d"] + 0; $standings_array[$team1]["pts"] = $standings_array[$team1]["pts"] + $_CONF['win']; $standings_array[$team1]["gf"] = $standings_array[$team1]["gf"] + $t1_score; $standings_array[$team1]["ga"] = $standings_array[$team1]["ga"] + $t2_score; $standings_array[$team1]["gd"] = $standings_array[$team1]["gf"] - $standings_array[$team1]["ga"]; } if($t2_div == $divid) { $standings_array[$team2]["id"] = $team2_id; $standings_array[$team2]["gp"]++; $standings_array[$team2]["l"]++; $standings_array[$team2]["w"] = $standings_array[$team2]["w"] + 0; $standings_array[$team2]["d"] = $standings_array[$team2]["d"] + 0; $standings_array[$team2]["pts"] = $standings_array[$team2]["pts"] + 0; $standings_array[$team2]["gf"] = $standings_array[$team2]["gf"] + $t2_score; $standings_array[$team2]["ga"] = $standings_array[$team2]["ga"] + $t1_score; $standings_array[$team2]["gd"] = $standings_array[$team2]["gf"] - $standings_array[$team2]["ga"]; } } elseif($t2_score > $t1_score) { if($t2_div == $divid) { $standings_array[$team2]["id"] = $team2_id; $standings_array[$team2]["gp"]++; $standings_array[$team2]["w"]++; $standings_array[$team2]["l"] = $standings_array[$team2]["l"] + 0; $standings_array[$team2]["d"] = $standings_array[$team2]["d"] + 0; $standings_array[$team2]["pts"] = $standings_array[$team2]["pts"] + $_CONF['win']; $standings_array[$team2]["gf"] = $standings_array[$team2]["gf"] + $t2_score; $standings_array[$team2]["ga"] = $standings_array[$team2]["ga"] + $t1_score; $standings_array[$team2]["gd"] = $standings_array[$team2]["gf"] - $standings_array[$team2]["ga"]; } if($t1_div == $divid) { $standings_array[$team1]["id"] = $team1_id; $standings_array[$team1]["gp"]++; $standings_array[$team1]["l"]++; $standings_array[$team1]["w"] = $standings_array[$team1]["w"] + 0; $standings_array[$team1]["d"] = $standings_array[$team1]["d"] + 0; $standings_array[$team1]["pts"] = $standings_array[$team1]["pts"] + 0; $standings_array[$team1]["gf"] = $standings_array[$team1]["gf"] + $t1_score; $standings_array[$team1]["ga"] = $standings_array[$team1]["ga"] + $t2_score; $standings_array[$team1]["gd"] = $standings_array[$team1]["gf"] - $standings_array[$team1]["ga"]; } } else { if($t1_div == $divid) { $standings_array[$team1]["id"] = $team1_id; $standings_array[$team1]["gp"]++; $standings_array[$team1]["d"]++; $standings_array[$team1]["w"] = $standings_array[$team1]["w"] + 0; $standings_array[$team1]["l"] = $standings_array[$team1]["l"] + 0; $standings_array[$team1]["pts"] = $standings_array[$team1]["pts"] + $_CONF['tie']; $standings_array[$team1]["gf"] = $standings_array[$team1]["gf"] + $t1_score; $standings_array[$team1]["ga"] = $standings_array[$team1]["ga"] + $t2_score; $standings_array[$team1]["gd"] = $standings_array[$team1]["gf"] - $standings_array[$team1]["ga"]; } if($t2_div == $divid) { $standings_array[$team2]["id"] = $team2_id; $standings_array[$team2]["gp"]++; $standings_array[$team2]["d"]++; $standings_array[$team2]["w"] = $standings_array[$team2]["w"] + 0; $standings_array[$team2]["l"] = $standings_array[$team2]["l"] + 0; $standings_array[$team2]["pts"] = $standings_array[$team2]["pts"] + $_CONF['tie']; $standings_array[$team2]["gf"] = $standings_array[$team2]["gf"] + $t2_score; $standings_array[$team2]["ga"] = $standings_array[$team2]["ga"] + $t1_score; $standings_array[$team2]["gd"] = $standings_array[$team2]["gf"] - $standings_array[$team2]["ga"]; } } } elseif ($affect_standings == 1) { if($t1_div == $divid) { $standings_array[$team1]["id"] = $team1_id; $standings_array[$team1]["gp"] = $standings_array[$team1]["gp"]; $standings_array[$team1]["d"] = $standings_array[$team1]["d"]; $standings_array[$team1]["w"] = $standings_array[$team1]["w"]; $standings_array[$team1]["l"] = $standings_array[$team1]["l"]; $standings_array[$team1]["pts"] = $standings_array[$team1]["pts"]; $standings_array[$team1]["gf"] = $standings_array[$team1]["gf"]; $standings_array[$team1]["ga"] = $standings_array[$team1]["ga"]; $standings_array[$team1]["gd"] = $standings_array[$team1]["gd"]; } if($t2_div == $divid) { $standings_array[$team2]["id"] = $team2_id; $standings_array[$team2]["gp"] = $standings_array[$team2]["gp"]; $standings_array[$team2]["d"] = $standings_array[$team2]["d"]; $standings_array[$team2]["w"] = $standings_array[$team2]["w"]; $standings_array[$team2]["l"] = $standings_array[$team2]["l"]; $standings_array[$team2]["pts"] = $standings_array[$team2]["pts"]; $standings_array[$team2]["gf"] = $standings_array[$team2]["gf"]; $standings_array[$team2]["ga"] = $standings_array[$team2]["ga"]; $standings_array[$team2]["gd"] = $standings_array[$team2]["gd"]; } } $i++; } while (list ($key, $value) = each ($schedule_array1)) { $schedule1 .= " <tr bgcolor=\"#FFFFFF\" align=\"left\" valign=\"middle\">"; if($value["date"] != "TBD") { $date_string = explode("-", $value["date"]); $value["date"] = date("F j, Y", mktime(0,0,0,$date_string[1],$date_string[2],$date_string[0])); } if($value["gm_summary"] != "") { $schedule1 .= " <td class=\"table_text\" align=center><a href=\"index.php?opt=summary&id=".$value["gm_id"]."\"><b><u>".$value["date"]."</u></b></a></td>"; } else { $schedule1 .= " <td class=\"table_text\" align=center>".$value["date"]."</td>"; } $schedule1 .= " <td class=\"table_text\" align=center>".$value["time"]."</td> <td class=\"table_text\" align=center>".$value["location"]."</td> <td class=\"table_text\" align=center>".$value["team1"]."</td> <td class=\"table_text\" align=center>".$value["t1_score"]."</td> <td class=\"table_text\" align=center>".$value["t2_score"]."</td> <td class=\"table_text\" align=center>".$value["team2"]."</td> </tr>"; } if($schedule1 == "") { $schedule1 = " <tr bgcolor=\"#FFFFFF\" align=\"left\" valign=\"middle\"> <td class=\"table_text\" align=\"center\" colspan=\"8\"> $_LANG[cc_nogames] </td> </tr>"; } while (list ($key, $value) = each ($schedule_array2)) { $schedule2 .= " <tr bgcolor=\"#FFFFFF\" align=\"left\" valign=\"middle\">"; if($value["date"] != "TBD") { $date_string = explode("-", $value["date"]); $value["date"] = date("F j, Y", mktime(0,0,0,$date_string[1],$date_string[2],$date_string[0])); } if($value["gm_summary"] != "") { $schedule2 .= " <td class=\"table_text\" align=center><a href=\"./?opt=summary&id=".$value["gm_id"]."\"><b><u>".$value["date"]."</u></b></a></td>"; } else { $schedule2 .= " <td class=\"table_text\" align=center>".$value["date"]."</td>"; } $schedule2 .= " <td class=\"table_text\" align=center>".$value["time"]."</td> <td class=\"table_text\" align=center>".$value["location"]."</td> <td class=\"table_text\" align=center>".$value["team1"]."</td> <td class=\"table_text\" align=center>".$value["t1_score"]."</td> <td class=\"table_text\" align=center>".$value["t2_score"]."</td> <td class=\"table_text\" align=center>".$value["team2"]."</td> </tr>"; } if($schedule2 == "") { $schedule2 = " <tr bgcolor=\"#FFFFFF\" align=\"left\" valign=\"middle\"> <td class=\"table_text\" align=\"center\" colspan=\"8\"> $_LANG[cc_nogames] </td> </tr>"; } uasort($standings_array, 'Compare_standings'); while (list ($key, $value) = each ($standings_array)) { $standings .= " <tr class=\"table_text\" bgcolor=\"#FFFFFF\" align=\"center\" valign=\"middle\"> <td align=left> <b><a href=\"index.php?opt=viewteam&id=".$value["id"]."&sid=".$season."\"><u>".$key."</u></a></b></td> <td bgcolor=\"#dfdfdf\">".$value["gp"]."</td> <td>".$value["w"]."</td> <td>".$value["d"]."</td> <td>".$value["l"]."</td> <td bgcolor=\"#dfdfdf\">".$value["pts"]."</td> <td>".$value["gf"]."</td> <td>".$value["ga"]."</td> <td>".$value["gd"]."</td> </tr>"; } if($standings == "") { $standings.= " <tr bgcolor=\"#FFFFFF\" align=\"left\" valign=\"middle\"> <td class=\"table_text\" align=\"center\" colspan=\"9\"> $_LANG[cc_noteams] </td> </tr>"; } ob_start(); include("html/menu_items.html"); $menu = ob_get_contents(); ob_end_clean(); $item = new Menu(); $item->CreateMain($menu, $type = "standings"); $item->CreateAnn($menu); $menu = $item->get(); ob_start(); include("html/standings_body.html"); $contents = ob_get_contents(); ob_end_clean(); return $contents; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
gah07 0 Denunciar post Postado Fevereiro 7, 2013 Alguem consegue ajudar?? Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Fevereiro 7, 2013 Aproveitamento é diferente de percentagem de vitórias. Empate rende um ponto, certo??? Você deve fazer [inline]aproveitamento = pontos / (jogos * 3) * 100[/inline]. Na própria consulta SQL daria pra fazer "SELECT t.*, (t.pts / (t.w + t.d + t.l) / 3) as aproveitamento from ".$_CONF['tprefix']."teams as t WHERE " ."division = '$divid' AND name != 'divadmin' AND name != 'admin' " ."ORDER BY aproveitamento desc, name DESC" Nota, o seu script é BEEEM antigo e pode te causar problemas futuros. No que percebi, a ordenação é feita pela função [inline]Compare_Standings[/inline]. Neste caso, basta adicionar mais um critério function aproveitamento ($equipe) { return $equipe['pts'] / ($equipe['w'] + $equipe['d'] + $equipe['l']) / 3; } function Compare_Standings ($ar1, $ar2) { $aproveitamento1 = aproveitamento($ar1); $aproveitamento2 = aproveitamento($ar2); if ($aproveitamento1 !== $aproveitamento2) { return $aproveitamento1 > $aproveitamento2 ? 1 : -1; } // segue o resto da função Compare_Standings Nota2: Deveria haver alguma forma mais fácil de se obter quantos jogos uma equipe disputou. Compartilhar este post Link para o post Compartilhar em outros sites
gah07 0 Denunciar post Postado Fevereiro 7, 2013 Fala Evandro. Obrigado pela resposta. Eu não soube explicar exatamente o que eu queria. Eu queria o aproveitamento de vitórias de acordo com o número de jogos. Por isso alterei sua funcão e deixei assim: function aproveitamento ($equipe) { return $equipe['w'] * 100/ $equipe['gp']; } function Compare_Standings ($ar1, $ar2) { $aproveitamento1 = aproveitamento($ar1); $aproveitamento2 = aproveitamento($ar2); if ($aproveitamento1 !== $aproveitamento2) { return $aproveitamento1 > $aproveitamento2 ? 1 : -1; } Onde o GP é o número de partidas disputadas. Ai eu fiz o SELECT dessa maneira: "SELECT t.*, (t.w * 100 / t.gp) as aproveitamento from ".$_CONF['tprefix']."teams as t WHERE " ."division = '$divid' AND name != 'divadmin' AND name != 'admin' " ."ORDER BY aproveitamento desc, name DESC"; Deu tudo certo. Ele esta deixando na ordem certa, porém o único erro que está dando é que o time com o pior aproveitamento está em primeiro e com o melhor aproveitamento está em último. A classificação está invertida. Como faço para arrumar isso?? Valeu de novo pela resposta.. Consegui arrumar aqui já.. Bastou inverter o sinal na function.. function aproveitamento ($equipe) { return $equipe['w'] * 100/ $equipe['gp']; } function Compare_Standings ($ar1, $ar2) { $aproveitamento1 = aproveitamento($ar1); $aproveitamento2 = aproveitamento($ar2); if ($aproveitamento1 !== $aproveitamento2) { return $aproveitamento1 > $aproveitamento2 ? -1 : 1; } Aproveitando o tópico. Tem alguma maneira de exibir essa PORCENTAGEM que está sendo calculada, em algum campo da minha tabela no meu site?? Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Fevereiro 7, 2013 Sim, use a própra função [inline]aproveitamento[/inline] <td>".aproveitamento($value)."%</td> Compartilhar este post Link para o post Compartilhar em outros sites