Adalius
07-16-2008, 08:36 PM
I am trying to generate standings for a competition based on results I have recorded in a database.
I have a database with 3 tables
users - user_id, user_gamertag
teams - team_id, team_name
games - game_id, home_user, away_user, home_team, away_team, home_score, away_score
I would like players to be ranked by wins DESC and then loses ASC.
I have written a script (posted below) that will output all players and their records, I just don't know how to order him. Any help would be greatly appreciated. If I have to redo the database it will be a pain, but I can do it. Just need to have it when I enter in a game the standings update on where I have the script.
<?php
$user_query = "SELECT * FROM mlcs_users";
$user_result = mysql_query($user_query);
while ($row = mysql_fetch_assoc($user_result)) {
$user_id = $row['user_id'];
$user_gamertag = $row['user_gamertag'];
// Select Home Games
$home_wins_query = "SELECT * FROM mlcs_games WHERE home_user = '$user_id'";
$home_wins_results = mysql_query($home_wins_query);
$home_wins = 0;
while ($row = mysql_fetch_assoc($home_wins_results)) {
// Add win for each game where home score > away score
if($row['home_score'] > $row['away_score']) { $home_wins++; }
}
// Select Away Games
$away_wins_query = "SELECT * FROM mlcs_games WHERE away_user = '$user_id'";
$away_wins_results = mysql_query($away_wins_query);
$away_wins = 0;
while ($row = mysql_fetch_assoc($away_wins_results)) {
// Add win for each game where away score > home score
if($row['away_score'] > $row['home_score']) { $away_wins++; }
}
// Add up wins
$wins = 0;
$wins = $home_wins + $away_wins;
$home_losses_query = "SELECT * FROM mlcs_games WHERE home_user = '$user_id'";
$home_losses_results = mysql_query($home_losses_query);
$home_losses = 0;
while ($row = mysql_fetch_assoc($home_losses_results)) {
// Add loss for each game where home score < away score
if($row['home_score'] < $row['away_score']) { $home_losses++; }
}
$away_losses_query = "SELECT * FROM mlcs_games WHERE away_user = '$user_id'";
$away_losses_results = mysql_query($away_losses_query);
$away_losses = 0;
while ($row = mysql_fetch_assoc($away_losses_results)) {
// Add loss for each game where away score < home score
if($row['away_score'] < $row['home_score']) { $away_losses++; }
}
// Add up losses
$losses = 0;
$losses = $home_losses + $away_losses ;
// Outputs player and his record
echo "<li>$user_gamertag ($wins-$losses)</li>";
}
?>
Let me know if there is anything else you need to know. Thanks again.
I have a database with 3 tables
users - user_id, user_gamertag
teams - team_id, team_name
games - game_id, home_user, away_user, home_team, away_team, home_score, away_score
I would like players to be ranked by wins DESC and then loses ASC.
I have written a script (posted below) that will output all players and their records, I just don't know how to order him. Any help would be greatly appreciated. If I have to redo the database it will be a pain, but I can do it. Just need to have it when I enter in a game the standings update on where I have the script.
<?php
$user_query = "SELECT * FROM mlcs_users";
$user_result = mysql_query($user_query);
while ($row = mysql_fetch_assoc($user_result)) {
$user_id = $row['user_id'];
$user_gamertag = $row['user_gamertag'];
// Select Home Games
$home_wins_query = "SELECT * FROM mlcs_games WHERE home_user = '$user_id'";
$home_wins_results = mysql_query($home_wins_query);
$home_wins = 0;
while ($row = mysql_fetch_assoc($home_wins_results)) {
// Add win for each game where home score > away score
if($row['home_score'] > $row['away_score']) { $home_wins++; }
}
// Select Away Games
$away_wins_query = "SELECT * FROM mlcs_games WHERE away_user = '$user_id'";
$away_wins_results = mysql_query($away_wins_query);
$away_wins = 0;
while ($row = mysql_fetch_assoc($away_wins_results)) {
// Add win for each game where away score > home score
if($row['away_score'] > $row['home_score']) { $away_wins++; }
}
// Add up wins
$wins = 0;
$wins = $home_wins + $away_wins;
$home_losses_query = "SELECT * FROM mlcs_games WHERE home_user = '$user_id'";
$home_losses_results = mysql_query($home_losses_query);
$home_losses = 0;
while ($row = mysql_fetch_assoc($home_losses_results)) {
// Add loss for each game where home score < away score
if($row['home_score'] < $row['away_score']) { $home_losses++; }
}
$away_losses_query = "SELECT * FROM mlcs_games WHERE away_user = '$user_id'";
$away_losses_results = mysql_query($away_losses_query);
$away_losses = 0;
while ($row = mysql_fetch_assoc($away_losses_results)) {
// Add loss for each game where away score < home score
if($row['away_score'] < $row['home_score']) { $away_losses++; }
}
// Add up losses
$losses = 0;
$losses = $home_losses + $away_losses ;
// Outputs player and his record
echo "<li>$user_gamertag ($wins-$losses)</li>";
}
?>
Let me know if there is anything else you need to know. Thanks again.