2017-11-11 162 views
-2

我想创建一个排队系统,以这种方式工作:创建队列系统

  • 用户填写一个表格,他们必须输入一些数据。
  • 点击发送,这些数据将被保存在一个sql表中。
  • 进入index.php页面会看到一个包含如下文本的框:在您面前有4个请求,请等待几分钟。

我已经试过做这样的事情,但要创建新的请求消息的数字“4”增长。 这是因为我创建了一个查询来计算表上的所有结果。

$query = $mysql->query("SELECT COUNT(*) AS q FROM application_approve");

虽然我希望它只计算发送用户请求上述结果。

id name   text  text2 
1 First request dassasad dsadasas 
2 Second request dassasad dsadasas 
3 Third request dsadasdsas dsadasad 

在上面,我想只有多少行有“第二请求”上面来算的例子:在这种情况下,1

+0

请编辑您的问题,并显示您的表(S)的模式。此外,哪些字段用于选择用户的信息,以及哪个字段确定记录的排序? –

回答

1

假设你的表中有一个PK(id)并参照user_id来确定哪个请求属于哪个用户,并且假设每个用户只有一个请求在队列中,那么您的查询将如下所示。

SELECT COUNT(id) AS q FROM application_approve 
    WHERE id < (
     SELECT id FROM application_approve 
     WHERE user_id = ? 
    ) 

这也假定PK id是一个自动递增键。

鉴于user_id此查询将返回给定用户行上方的行数(假设它们有一个),则返回。换句话说,所有的ID都小于给定用户的ID。

为简单起见,我们假设这个模式只有2列(iduser_id):

 

mysql> SELECT * FROM application_approve; 
+------+---------+ 
| id | user_id | 
+------+---------+ 
| 1 |  1 | 
| 2 |  2 | 
| 3 |  3 | 
+------+---------+ 
3 rows in set (0.00 sec) 

因此,在给定的表,有3个用户,每个用户在队列1项。

如果我们想找到哪个位置用户2是在查询会给我们以下结果:

 
mysql> SELECT COUNT(id) AS q FROM application_approve WHERE id < (SELECT id FROM application_approve WHERE user_id = 2); 
+---+ 
| q | 
+---+ 
| 1 | 
+---+ 
1 row in set (0.00 sec)