-5

次の例のように、特定の投稿に関連するすべての「いいね」をグループ化し、いいねボタンをクリックした人を表示する php/mysql コードを作成する最短の方法は何ですか?

ジョン、メアリー、ブライアン、その他のユーザーがこのコメントに「いいね!」しました

4

1 に答える 1

2

必要なもの以外の詳細を提供しなかったため、これはすべて、DB がどのようにセットアップされるかという仮定に基づいています。

SQL クエリ:

 SELECT * FROM likes WHERE (comment or post id) = 'ID'

post_id はグループ化するものです。たとえば、各コメントに独自の ID がある場合は、それによっていいね! をグループ化します。

私が持っている私のDBは、次のように設定されています。

フィールド: id、comment_id、post_id、name

したがって、次のようになります。

+--------------+---------------+--------------+--------------+
|    ID        |   comment_id  |    post_id   |   name       |
+--------------+---------------+--------------+--------------+
|     1        |     382       |     null     |   John       |
|     2        |     382       |     null     |   Mary       |
|     3        |     null      |     189      |   Brian      |
|     4        |     null      |     189      |   Joe        |
|     5        |     382       |     null     |   Ryan       |
|     6        |     382       |     null     |   Bell       |
+--------------+---------------+--------------+--------------+

したがって、SQL スクリプトを使用する場合:

SElECT * FROM likes WHERE comment_id = '382'

次のものが得られます。

+--------------+---------------+--------------+--------------+
|    ID        |   comment_id  |    post_id   |   name       |
+--------------+---------------+--------------+--------------+
|     1        |     382       |     null     |   John       |
|     2        |     382       |     null     |   Mary       |
|     5        |     382       |     null     |   Ryan       |
|     6        |     382       |     null     |   Bell       |
+--------------+---------------+--------------+--------------+

次に、次のようなスクリプト (PHP であると仮定) を実行します。

$num = 0; // This is used as an identifier
$numrows = mysqli_num_rows($getdata); // Count the number of likes on your comment or post

if($numrows > 3) { 
    $ending = 'and others like this comment.'; // If there are more than 3 likes, it ends this way
} else { 
    $ending = 'like this comment.'; // If there are less than or equal to 3 likes, it will end this way
}

while($data = mysqli_fetch_array($getdata)) {
    if($num => 3) { // This says that if the $num is less than or equal to 3, do the following
        // This will be used to list the first 3 names from your database and put them in a string like: name1, name2, name3, 
        $names = $data['name'].', ';
        // This adds a number to the $num variable.
        $num++;
    }
}

echo $names.' '.$ending; //Finally, echo the result, in this case, it will be: John, Mary, Ryan, and other like this comment.
于 2013-10-03T16:38:59.480 に答える