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 />";
            }

さて、まず最初に、このスクリプトは私もリストに表示するので、自分と共通のタグがいくつあるかを確認し、自分自身を削除したいと考えています。次に、番号が最も高い (最もタグが多い) 人が一番上と下に表示されるようにリストするにはどうすればよいですか。

4

1 に答える 1

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

もう 1 つのオプションは、データを収集し、各ユーザーが共通のタグをいくつ持っているかを知った後で、PHP で並べ替えることです。配列のソートについては、 http://php.net/manual/en/function.sort.phpを参照してください。

mysql 関数は公式に非推奨になっているため、PDO または mysqli の使用も開始する必要があります。

また、1 つのデータベース フィールドに複数のタグを配置しないことを強くお勧めします。

于 2013-05-17T22:43:37.830 に答える