Php mysql中列的排序和排序值
假设我有3列3行,第一列是ID,第二列是名称,第三列是投票。比如: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等排名 每个值将显示在单独的页面上。
+----+------+-------+
| 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现在应该是复制粘贴了