What are the best practices for handling article rankings and page navigation in a PHP-based forum with a voting system?

Issue: When handling article rankings and page navigation in a PHP-based forum with a voting system, it is important to properly sort and display articles based on their rankings, while also implementing pagination to efficiently navigate through multiple pages of articles. Code snippet:

// Get articles from database sorted by rankings
$query = "SELECT * FROM articles ORDER BY votes DESC";

// Pagination logic
$per_page = 10;
$page = isset($_GET['page']) ? $_GET['page'] : 1;
$start = ($page - 1) * $per_page;

$query .= " LIMIT $start, $per_page";

// Execute query and display articles
$result = mysqli_query($connection, $query);

while ($row = mysqli_fetch_assoc($result)) {
    // Display article content
}

// Pagination links
$total_articles = mysqli_num_rows(mysqli_query($connection, "SELECT * FROM articles"));
$total_pages = ceil($total_articles / $per_page);

for ($i = 1; $i <= $total_pages; $i++) {
    echo "<a href='forum.php?page=$i'>$i</a> ";
}