2013-05-17 64 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