2013-05-17 77 views
0

所以這個腳本就像這樣工作。它將您選擇的標籤作爲您的興趣並將其與其他用戶標籤進行比較。下面的腳本給出了我和其他人共有多少個標籤的輸出。陣列顯示順序

$get_userinfo = mysql_query("SELECT * FROM users") or die(mysql_error()); 
     while($userinfo = mysql_fetch_array($get_userinfo)) { 
      $usertags = $userinfo['tags']; 
      $tagsdata = explode(" ", $usertags); 
      $interestsdata = explode(" ", $interests); 
      $result = array_intersect($interestsdata, $tagsdata); 
      echo "Count under this belongs to ".$userinfo['name'].""; 
      echo count($result); 
      echo "<br />"; 
      } 

現在,我想第一,這個腳本也顯示我的列表,所以我知道我有多少標籤有自己共同的和我想刪除自己。其次,我如何列出它,以便最高號碼(大多數標籤共同)的人顯示在頂部和下降。

回答

0

添加一個條件,從自己的查詢中排除自己:

SELECT * FROM users WHERE user_id != [your user id] 

要由標籤數目訂貨,您需要在SQL語句中發出聚合函數由標籤和用戶組的結果。沒有看到你的表結構,我只能提供一個非常廣義的說法

SELECT username, tag, count(tag) FROM users JOIN tags ON x = y WHERE user_id != [your user id] GROUP BY user_id, tag_id ORDER BY count(tag) DESC 

另一種選擇是收集數據,並通過排序它PHP後,你已經知道每個用戶有多少標籤有共通之處。有關排序數組的信息,請參閱http://php.net/manual/en/function.sort.php

您應該也開始使用PDO或mysqli,因爲mysql函數已被正式棄用。

我也強烈建議你不要把多個標籤放在一個數據庫字段。

+0

我完全打開來改變我的數據庫的佈局。你覺得我應該如何儲存標籤? – TheMeisterSE

+0

用戶 - >用戶標籤 - >標籤。多對多的關係。許多用戶可以有很多標籤。許多標籤可以屬於許多用戶。但這是一個完全不同的問題。也許可以問我們的朋友在dba堆棧交換站點。 – Kevin

+0

所以你的意思是我應該爲標籤製作一個單獨的表格?但那麼用戶如何將標籤分配給他們自己呢? – TheMeisterSE