猿问

PHP/mysql:通过点击对用户进行排名

所以我想通过点击对用户进行排名,这是我的代码:


<!DOCTYPE html>

<html>

<head>

<title>User ranking</title>

</head>

<body>


<table style="width:100%">

  <tr>

    <th>Rank</th>

    <th>User</th> 

    <th>clicks</th>

  </tr>

  <tr>

    <td></td>

    <td>


    <?php

    $servername = "localhost";

    $username = "...";

    $password = "...";

    $dbname = "...";


    // Create connection

    $conn = new mysqli($servername, $username, $password, $dbname);

    // Check connection

    if ($conn->connect_error) {

        die("Connection failed: " . $conn->connect_error);

    }


    $sql = "SELECT DISTINCT  id, user FROM users";

    $result = $conn->query($sql);


    if ($result->num_rows > 0) {

        // output data of each row

        while($row = $result->fetch_assoc()) {

            echo $row["user"]. "<br>";

        }

    } else {

        echo "0 results";

    }

    $conn->close();

    ?>

    </td>

    <td></td>

  </tr>


</table>


</body>

</html>

但这是我的问题:“用户”列有重复的用户,在表中我只想将唯一用户计为“用户”,你注意到我没有在 php 代码中提到“点击”,因为我没有点击数据库中的列...


所以这就是我想要计算点击次数的方式:正如我所说的“用户”列有重复的用户,我想计算用户名重复的次数并对其进行排名。


例如:用户 John X3 和 Dan X2 在数据库中我想计算 John 和 Dan 重复的次数,因为 John 是 3 次 John 排名第一,而 Dan 应该排名第二


这里还有另一个问题:数据库每 24 小时重置一次,因此所有数据每 24 小时消失一次。如何解决?如何永久显示数据库数据,我的意思是显示数据库数据,然后在 24 小时后保持增加...


我不知道这是否有用:数据库有“Id”列并且它不会重置例如 3 次 John 在数据库中,'John with id 1''john with id 2'和'john id 为 3'。


用过JS没问题。顺便说一句,我是初学者,我试图这样做……我花了大约 7 个小时,但每次尝试都失败了。


慕斯709654
浏览 70回答 1
1回答

弑天下

所以这就是我想要计算点击次数的方式:正如我所说的“用户”列有重复的用户,我想计算用户名重复的次数并对其进行排名。你想要聚合:select&nbsp;user,&nbsp;count(*)&nbsp;clicks&nbsp;from&nbsp;users&nbsp;group&nbsp;by&nbsp;user&nbsp;order&nbsp;by&nbsp;clicks&nbsp;desc
随时随地看视频慕课网APP
我要回答