2011-06-14 209 views
2

我試圖想出一些代碼來檢查用戶是否擁有項目列表。項目列表可以是任意長度,但可能不超過5.檢查以查看是否在另一個表中選擇的項目列表

這裏涉及2個表格:qrequirements和inventory。

我已經儘可能地運行一個循環來檢查用戶是否擁有每個項目,但我堅持如何記錄每個項目的所有權的結果以及事後如何傳達給用戶。

我可能會用錯誤的方式去解決這一切,也許有一種更簡單的方法,我不知道。

任何幫助將是偉大的。這是我的代碼到目前爲止:

<?php 

// Get the list of required items 
$result = mysql_query("select * from qrequirements where qid='2'"); 
// This might return E.G: 
// item1 = '32' 
// item2 = '24' 
// item3 = '15' 

// Loop through each item to check the user has it 
while ($row = mysql_fetch_array($result)) { 
    $itemid = $row["itemid"]; 
    $check_inv = mysql_query("select * from inventory where userid='$userid' AND item = $itemid"); 
    $num_rows = mysql_num_rows($check_inv); 
    if($num_rows>=1){ 
     // Something in here to confirm the item is owned by the user, while we check the others 
    }else{ 
     echo "You do not have this item"; 
    } 
} 

// Notify the user if they have all items required 

?> 

回答

0

確定用戶需要但沒有的項目可以通過一個查詢來解決。以下查詢應完成該任務。

SELECT * FROM qrequirements t1 
WHERE t1.quid = '2' 
    AND NOT EXISTS (SELECT 1 FROM inventory t2 
       WHERE t1.item = t2.item 
        AND t2.userid = '$userid') 

如果您還需要知道用戶具有哪些項目,那麼此類似查詢將完成該額外任務。

SELECT * FROM qrequirements t1 
WHERE t1.quid = '2' 
    AND EXISTS (SELECT 1 FROM inventory t2 
       WHERE t1.item = t2.item 
        AND t2.userid = '$userid') 

另一個有用的查詢是返回所需項目和用戶是否擁有該項目的指示符。如果用戶沒有該項目,item_count將爲0,如果用戶確實擁有該項目,item_count將爲0。

SELECT t1.*, (SELECT count(*) FROM inventory t2 
       WHERE t1.item = t2.item 
       AND t2.userid = '$userid') as item_count 
FROM qrequirements t1 
WHERE t1.quid = '2' 
+0

感謝您的,但這並沒有真正與主要問題有幫助。我仍然需要將這個查詢添加到一個循環來檢查每個項目,這使我的代碼類似於我的。問題是我仍然需要提供一個最終的布爾結果來判斷用戶是否擁有所有項目。目前我正在一次檢查一個,但似乎無法將它們全部結合在一起以獲得最終的布爾結果。 – spengos 2011-06-14 15:57:06

+0

也許我需要更清楚我想要做什麼,但很難解釋:) – spengos 2011-06-14 16:01:07

+0

想象一個包含一個包含所需項目列表和提交按鈕的框的網頁可能會更容易。如果用戶在清單中包含所有必需項目,則只能點擊提交按鈕。這是我想要實現的一般要點。 – spengos 2011-06-14 16:05:01

0

試試這個,因爲只有一個版本的SQL:

SELECT IF(COUNT(DISTINCT r.itemid) = COUNT(DISTINCT i.itemid), 1, 0) as met_reqirements 
FROM qrequirements r 
    LEFT JOIN inventory i ON i.itemid = r.item_id AND i.userid = '$userid' 
WHERE r.qid = 2 
相關問題