需要使用排序表中列条目的值来确定行偏移的数值。
鉴于,我知道感兴趣的行中的唯一用户名($ username)
例如$username = "SnowWhite";
鉴于:保证$ username在数据库中并且将在我之后的初始查询的结果中。这是我的初始查询(有效):
$query = "SELECT ALL username,ticket_number, queue_time FROM members WHERE queue_time !=0 ORDER BY queue_time";
$result = mysql_query($query);
有效的是$result
数组的强制php搜索$username
的值。
我想用查询(或重新编写上述查询)替换php搜索逻辑,该查询将$result
内行偏移的整数值存储为用户名列的值$username
变量,例如$offset
。
例如,如果SnowWhite位于$result
的第三行,我期望$offset == 2
(假设行索引偏移从0开始)。
最终(这有效)我会将所选行的'ticket_number'值更新为== $offset+1
。由:
$query="update members set ticket_number='$offset+1' where username='$username'";
mysql_query($query);
当前工作逻辑
$query = "SELECT ALL username,ticket_number, queue_time FROM members WHERE queue_time !=0 ORDER BY queue_time";
$result = mysql_query($query);
$i = 0;
while ($row = mysql_fetch_array($result)) {
if ($row[username] == $userinfo) //-- compare usernames
{
++$i;
$query="update members set ticket_number='$i+1' where username='$userinfo'";
mysql_query($query);
break;
}
++$i;
}
mysql_free_result($result);
用户名ticket_number queue_time Doc 0 0第3个未排序的结果 脾气暴躁0 0 快乐0 0 困了1 111以下是ni排序结果 害羞2 222 Sneezy 0 333 白雪公主 ??? 444这是当前用户(assign ??? = 4) Dopey 0 555 EvilQueen 0 666
答案 0 :(得分:0)
所以使用你的表格示例:
username ticket_number queue_time Doc 0 0 The 1st 3 not in sorted result Grumpy 0 0 Happy 0 0 Sleepy 1 111 The following are in sorted result Bashful 2 222 Sneezy 0 333 SnowWhite ??? 444 This is the current user (assign ???=4) Dopey 0 555 EvilQueen 0 666
如何将值4分配给用户名SnowWhite的列ticket_number,4是初始行的排序选择中的行的排名:
首先得到排序结果:
$result = mysql_query("SELECT * FROM table WHERE [here the condition for your sorted array]");
// don't forget to remove the []. they don't go there.
while ($row = mysql_fetch_assoc($result))
{$array[] = $row;}
这应该会得到类似的东西:
[0] [username] [Sleepy]
[ticket_number] [1]
[queue_time] [111]
[1] [username] [Bashful]
[ticket_number] [2]
[queue_time] [222]
[2] [username] [Sneezy]
[ticket_number] [0]
[queue_time] [333]
[3] [username] [SnowWhite]
[ticket_number] [NULL]
[queue_time] [444]
然后通过你的数组
foreach ($array as $number => $row)
{if ($row[username] == $userinfo)
{$result = mysql_query('UPDATE table SET ticket_numer=' . ($number+1) . ' WHERE username=' . $userinfo);}}
与用户名SnowWhite对应的行将获得($ number + 1)(3 + 1)作为ticket_number