Php mysql中列的排序和排序值

Php mysql中列的排序和排序值,php,mysql,Php,Mysql,假设我有3列3行,第一列是ID,第二列是名称,第三列是投票。比如: +----+------+-------+ | id | name | votes | +----+------+-------+ | 1 | bob | 7 | | 2 | jill | 2 | | 3 | jake | 9 | +----+------+-------+ 我如何让PHP比较选票字段中的值,并按数字最大者进行排序,并根据投票数附加#1、2、3等排名 每个值将显示在单独的页面上。

假设我有3列3行,第一列是ID,第二列是名称,第三列是投票。比如:

+----+------+-------+
| id | name | votes |
+----+------+-------+
|  1 | bob  |     7 |
|  2 | jill |     2 |
|  3 | jake |     9 |
+----+------+-------+
我如何让PHP比较选票字段中的值,并按数字最大者进行排序,并根据投票数附加#1、2、3等排名


每个值将显示在单独的页面上。例如,如果我以1的ID进入“bob的页面”,我需要它显示“#2 bob”,因为他在投票中排名第二。

您可以将查询返回的值读入数组,然后对所述数组进行排序。

您可以将查询返回的值读入数组,然后对所述数组进行排序。

您可以创建单独的列排名,并通过运行以下命令进行更新每当投票发生变化时,都要编写代码。此方法将提高您的效率,因为在用户访问其页面时,您不会一次又一次地对表进行排序:

    $q = "select * from tableName order by votes DESC";
    $a = mysql_query($q);
    $count = 1;
    while($arr = mysql_fetch_array($a){
       $up = "update tableName set(rank) VALUES($count) WHERE name=$arr['name']";
       $aq = mysql_query($up);
       $count++;
    }
现在在各个页面上,您只需检索排名值并显示

$user = "Bob";
$q = "select rank from tableName where name=$user";
$a = mysql_query($q);
$arr = mysql_fetch_array($a);
echo $arr[0];
此外,这(在其他答案中稍作修改)也适用于您:-

SELECT @rownum:=@rownum+1 AS rank, name, vote FROM table, (SELECT @rownum:=0) as P ORDER BY vote DESC

您可以创建一个单独的列排名,并在投票发生变化时通过运行以下代码进行更新。此方法将提高您的效率,因为在用户访问其页面时,您不会一次又一次地对表进行排序:

    $q = "select * from tableName order by votes DESC";
    $a = mysql_query($q);
    $count = 1;
    while($arr = mysql_fetch_array($a){
       $up = "update tableName set(rank) VALUES($count) WHERE name=$arr['name']";
       $aq = mysql_query($up);
       $count++;
    }
现在在各个页面上,您只需检索排名值并显示

$user = "Bob";
$q = "select rank from tableName where name=$user";
$a = mysql_query($q);
$arr = mysql_fetch_array($a);
echo $arr[0];
此外,这(在其他答案中稍作修改)也适用于您:-

SELECT @rownum:=@rownum+1 AS rank, name, vote FROM table, (SELECT @rownum:=0) as P ORDER BY vote DESC

您需要一个
SELECT
查询,执行
orderby
投票,并创建一个特殊变量来处理行的排名:

SELECT @rownum:=@rownum+1 AS rank, name, vote FROM table, (SELECT @rownum:=0) ORDER BY vote DESC
此查询应允许您获取一个数组,其中包含表中每个人的排名、姓名和投票数


或者,您也可以只按投票排序,然后自己用PHP添加排名值。

您需要一个
选择
查询,执行
按投票排序,并创建一个特殊变量来处理行的排名:

SELECT @rownum:=@rownum+1 AS rank, name, vote FROM table, (SELECT @rownum:=0) ORDER BY vote DESC
此查询应允许您获取一个数组,其中包含表中每个人的排名、姓名和投票数


或者,您可以通过投票进行排序,并使用PHP添加排名值。

您可以使用MySQL“ORDER by”并使用PHP显示这些排名: 对于此示例:

<?php
//connection
//DB selection
$query = "SELECT * FROM table_votes ORDER BY votes DESC";
$result = mysql_query($query);

for(int $i=1; $row = mysql_fetch_array($result);i++)
{
    echo "#".$i.$row['name']."<br/>";
}
?>

您可以使用MySQL“ORDER BY”并使用PHP显示这些列组: 对于此示例:

<?php
//connection
//DB selection
$query = "SELECT * FROM table_votes ORDER BY votes DESC";
$result = mysql_query($query);

for(int $i=1; $row = mysql_fetch_array($result);i++)
{
    echo "#".$i.$row['name']."<br/>";
}
?>


如果要使用mysql,请选择。。。ORDER BY Votes如果要使用mysql,请选择。。。ORDER BY Votest可以在同一页面上显示所有内容,我应该在我的帖子中详细阐述。每个值将显示在单独的页面上。如果我进入ID为1的“bobs页面”,我需要它显示“#2 bob”,因为他将在投票等方面排名第二。@user1781809我已经更新了答案。这将有效地解决您的问题issue@user1781809这应该是一个复制粘贴,可以在同一页上显示它们,我应该在我的文章中详细阐述。每个值将显示在单独的页面上。如果我进入ID为1的“bobs页面”,我需要它显示“#2 bob”,因为他将在投票等方面排名第二。@user1781809我已经更新了答案。这将有效地解决您的问题issue@user1781809现在应该是复制粘贴了