2017-11-11 158 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)