Simple AFL ladder with PHP

Here is how to use an open API to display the AFL Ladder with PHP.

The concept is simple; Call the ladder API, start a table and then in a foreach loop go through the results.

The foreach loop represents a row for each loop, this is the same as building a table from MySQL data except this is with JSON formatted data.

As always dont abuse any open API’s and cache them in a database where possible.

PHP code is:

<?php
$data = json_decode(file_get_contents('https://www.afl.com.au/aflrender/get?service=ladder&site=AFL&params=seasonId?:CD_S2019014,roundId?:CD_R201901402&field=json&competitionType=AFL'), true);//The ladder api call
echo "<table>
<tr>
<th>#</th>
<th>Team</th>
<th>Points</th>
<th>Wins</th>
<th>Lost</th>
<th>Played</th>
<th>Percent</th>
<th>Points for</th>
<th>Points against</th>
<th>Last 5</th>
<th>vs next</th>
</tr>";//Start table and have headers outside of the loop
foreach ($data['positions'] as $val) {//loop
    echo "<tr>";//start row
    $team = $val['teamName']['teamName'];
    $position = $val['thisSeasonRecord']['ladderPosition'];
    $points = $val['thisSeasonRecord']['aggregatePoints'];
    $percent = $val['thisSeasonRecord']['percentage'];
    $next_vs = $val['nextOpponent']['teamName'];
    $points_for = $val['pointsFor'];
    $points_against = $val['pointsAgainst'];
    $last_5_wins = $val['lastFiveGamesRecord']['wins'];
    $last_5_draws = $val['lastFiveGamesRecord']['draws'];
    $last_5_losses = $val['lastFiveGamesRecord']['losses'];
    $wins = $val['thisSeasonRecord']['winLossRecord']['wins'];
    $losses = $val['thisSeasonRecord']['winLossRecord']['losses'];
    $played = $val['thisSeasonRecord']['winLossRecord']['played'];
    if ($position > 8) {
        $row_color = '#de7c8d';//if position greater than 8 (not in finals position)
    } else {
        $row_color = '#94dea3';
    }
    echo "<td style='background: $row_color'>$position</td>";
    echo "<td style='background: $row_color'>$team</td>";
    echo "<td style='background: $row_color'>$points</td>";
    echo "<td style='background: $row_color'>$wins</td>";
    echo "<td style='background: $row_color'>$losses</td>";
    echo "<td style='background: $row_color'>$played</td>";
    echo "<td style='background: $row_color'>$percent</td>";
    echo "<td style='background: $row_color'>$points_for</td>";
    echo "<td style='background: $row_color'>$points_against</td>";
    echo "<td style='background: $row_color'>W:$last_5_wins L:$last_5_losses D:$last_5_draws</td>";
    echo "<td style='background: $row_color'>$next_vs</td>";
    echo "</tr>";//end row
}
echo "</table>";//close table

Some minimal styling (add above <?php):

<style>
    body {
        background: #87b0ed;
        color: #3d4042;
    }
    th {
        background-color: #82a6de;
        color: white;
    }
    table {
        border-collapse: collapse;
    }
    th {
        text-align: center;
    }
    th, td {
        padding: 10px;
    }
    table, th, td {
        border: 1px solid black;
    }
    tr:hover {
        background-color: #f5f5f5;
        color: white;
    }
</style>

Gives you this

AFL ladder api php