排名更新问题

时间:2013-12-09 17:38:40

标签: php html mysql

我有这个代码,它给出了数据库的输出,现在我想根据TeamPoints对它进行排序。得分较高的球队获得第一名。我该如何实施呢。

我一直在尝试在数据库中添加TeamRank字段,该字段按增量或减量更新团队排名。但它不起作用,所以我决定只按分数排序,但现在我面临着按顺序排列它们的问题。

<?php
    $con=mysqli_connect("", "", ", "");

    // Check connection:
    if (mysqli_connect_errno())
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    mysqli_query($con,"CREATE VIEW Rankings AS
        SELECT TeamID, TeamName, TeamLeader, TeamEmail, P_1, P_2, P_3, P_4, P_5, S_1, S_2, TeamWins, TeamLoss, TeamPoints
        FROM team
        WHERE TeamID>0");

    $result = mysqli_query($con,"SELECT * FROM team");

    echo "<table border='1'>
    <tr>
        <th>TeamID</th>
        <th>TeamName</th>
        <th>TeamLeader</th>
        <th>TeamEmail</th>
        <th>Player #1</th>
        <th>Player #2</th>
        <th>Player #3</th>
        <th>Player #4</th>
        <th>Player #5</th>
        <th>Subsitute #1</th>
        <th>Subsitute #2</th>
        <th>Total Wins</th>
        <th>Total Losses</th>
        <th>Total Points</th>
    </tr>";

    while($row = mysqli_fetch_array($result))
    {
        echo "<tr>";
            echo "<td>" . $row['TeamID'] . "</td>";
            echo "<td>" . $row['TeamName'] . "</td>";
            echo "<td>" . $row['TeamLeader'] . "</td>";
            echo "<td>" . $row['TeamEmail'] . "</td>";
            echo "<td>" . $row['P_1'] . "</td>";
            echo "<td>" . $row['P_2'] . "</td>";
            echo "<td>" . $row['P_3'] . "</td>";
            echo "<td>" . $row['P_4'] . "</td>";
            echo "<td>" . $row['P_5'] . "</td>";
            echo "<td>" . $row['S_1'] . "</td>";
            echo "<td>" . $row['S_2'] . "</td>";
            echo "<td>" . $row['TeamWins'] . "</td>";
            echo "<td>" . $row['TeamLoss'] . "</td>";
            echo "<td>" . $row['TeamPoints'] . "</td>";
        echo "</tr>";
    }

    echo "</table>";
    mysqli_close($con);
?>

3 个答案:

答案 0 :(得分:1)

这是你想要的吗?

SELECT  TeamID,TeamName,TeamLeader,TeamEmail,P_1,P_2,P_3,P_4,P_5,S_1,S_2,TeamWins,TeamLoss,TeamPoints
FROM team
where TeamID>0
ORDER BY TeamPoints DESC;

答案 1 :(得分:0)

    CREATE VIEW Rankings AS
    SELECT  TeamID
         , TeamName
         , TeamLeader
         , TeamEmail
         , P_1        -- none 
         , P_2        -- of
         , P_3        -- these
         , P_4        -- belong
         , P_5        -- in a 
         , S_1        -- teams
         , S_2        -- table
         , TeamWins   -- and even
         , TeamLoss   -- these are
         , TeamPoints -- questionable
      FROM team
     where TeamID > 0;

答案 2 :(得分:0)

为选择添加排名并将其输出,同时将输出限制为页面(10 - 容易更改): -

<?php
    $con=mysqli_connect("", "", "", "");

    // Check connection:
    if (mysqli_connect_errno())
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    $PageStart = 10 * intval($_POST['page']);

    $result = mysqli_query($con,"SELECT TeamID,
                                TeamName,
                                TeamLeader,
                                TeamEmail,
                                P_1,
                                P_2,
                                P_3,
                                P_4,
                                P_5,
                                S_1,
                                S_2,
                                TeamWins,
                                TeamLoss,
                                TeamPoints,
                                TeamRnk
                                FROM
                                (
                                    SELECT TeamID,
                                            TeamName,
                                            TeamLeader,
                                            TeamEmail,
                                            P_1,
                                            P_2,
                                            P_3,
                                            P_4,
                                            P_5,
                                            S_1,
                                            S_2,
                                            TeamWins,
                                            TeamLoss,
                                            TeamPoints,
                                            @Rank := @Rank + 1 AS TeamRnk
                                    FROM SomeTable
                                    CROSS JOIN (SELECT @Rank:=0) Sub0
                                    ORDER BY TeamPoints DESC
                                ) Sub1
                                LIMIT $PageStart, 10");

    echo "<table border='1'>
    <tr>
        <th>TeamRnk</th>
        <th>TeamID</th>
        <th>TeamName</th>
        <th>TeamLeader</th>
        <th>TeamEmail</th>
        <th>Player #1</th>
        <th>Player #2</th>
        <th>Player #3</th>
        <th>Player #4</th>
        <th>Player #5</th>
        <th>Subsitute #1</th>
        <th>Subsitute #2</th>
        <th>Total Wins</th>
        <th>Total Losses</th>
        <th>Total Points</th>
    </tr>";

    while($row = mysqli_fetch_assoc($result))
    {
        echo "<tr>";
            echo "<td>" . $row['TeamRnk'] . "</td>";
            echo "<td>" . $row['TeamID'] . "</td>";
            echo "<td>" . $row['TeamName'] . "</td>";
            echo "<td>" . $row['TeamLeader'] . "</td>";
            echo "<td>" . $row['TeamEmail'] . "</td>";
            echo "<td>" . $row['P_1'] . "</td>";
            echo "<td>" . $row['P_2'] . "</td>";
            echo "<td>" . $row['P_3'] . "</td>";
            echo "<td>" . $row['P_4'] . "</td>";
            echo "<td>" . $row['P_5'] . "</td>";
            echo "<td>" . $row['S_1'] . "</td>";
            echo "<td>" . $row['S_2'] . "</td>";
            echo "<td>" . $row['TeamWins'] . "</td>";
            echo "<td>" . $row['TeamLoss'] . "</td>";
            echo "<td>" . $row['TeamPoints'] . "</td>";
        echo "</tr>";
    }

    echo "</table>";
    mysqli_close($con);
?>