繁体   English   中英

Php - Mysql。 让玩家进入阵列并按时间排序

[英]Php - Mysql. Get players into an array and sort by time

我正在尝试创建一个数组,然后从mysql_query中按时间对对象进行排序。

这是发生的事情:

  1. 当玩家完成转弯时,我会更新数据库。 我将数据库变量“lastTurn”设置为当前时间。

      $nickname = $_POST['name']; $lastTurn = date(); $myTurn = NO; $query ... update query 
  2. 现在我需要找出下一位选手是谁,然后将转牌发给他/她。

      $query = "SELECT * FROM active_users_table WHERE match_id='12345' 

这给了我与当前游戏相关的所有玩家。

但现在我不知道如何继续。 我想把所有的玩家都放到一个阵列中,然后在我猜测之后对它进行排序,看看下一个玩家是谁。 就像扑克游戏一样。 我还需要检查数据库中的另一个变量“havePlayerLost”,看看他是否仍然在游戏中处于活动状态。 如果他输了,那么让下一个活跃的玩家,并获得最高的turnDate。

任何建议都非常感谢。

谢谢

我建议你让MySQL / SQL做比你现在做的更多的工作。 用于更新播放器的SQL查询还可以包含正确格式的当前日期/时间。

player_lastTurn = NOW()

在对数组进行排序时,我建议你让MySQL处理这个:

ORDER BY player_lastTurn ASC

ASCending意味着它将为整个数据库中的该单元名提供最早的DateTime。

当您使用这些查询的结果并使用它构建数组时,您的数组将自动按正确顺序排列。

这同样适用于“丢失的玩家”,因此当您不加载它时,您自动不会将它们包含在数组中。

试试这个查询

$query = "SELECT * FROM active_users_table WHERE match_id='12345'
          and status !='havePlayerLost'
          order by  lastTurn Asc

要让播放器排序,请尝试更改添加'ORDER BY turnDate ASC'的查询

 $query = "SELECT * FROM active_users_table WHERE match_id='12345' ORDER BY turnDate ASC"

对于变量“havePlayerLost”,我认为您可以更改查询,就像这样添加'havePlayerLost = false'

$query = "SELECT * FROM active_users_table WHERE match_id='12345' AND havePlayerLost = false ORDER BY turnDate ASC"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM