0

私は通知スクリプトを作成していますが、現在、同じ画像に関する複数の通知を表示するためにこれを使用しています。たとえば、ジョンはimage_nameが好きで、サラはimage_nameが好きです->image_nameが好きです。

これは私が今まで持っているものです。

$query = mysql_query("SELECT type, extra_id, COUNT(*), id AS count FROM `notifications` WHERE `receiver_id` = '14' AND `read` = '0' GROUP BY type, extra_id");
while($row = mysql_fetch_array($query)){

    if($row['count'] == 1){

        switch ($row['type']) {
            case "Following":
                echo "John Doe is now following you <br />";
            break;
            case "Liked":
                $image_id = $row['extra_id'];
                $image_q = mysql_query("SELECT * FROM `images` WHERE `id` = '$image_id' LIMIT 1");
                $image = mysql_fetch_array($image_q);
                echo "John Doe likes ".$image['heading']."<br />";
            break;
        }

    }   else   {

        switch ($row['type']) {
            case "Following":
                echo $row['count']." New Users are following you <br />";
            break;
            case "Liked":
                $image_id = $row['extra_id'];
                $image_q = mysql_query("SELECT * FROM `images` WHERE `id` = '$image_id' LIMIT 1");
                $image = mysql_fetch_array($image_q);
                echo $row['count']." Users Like ".$image['heading']."<br />";
            break;
        }

    }

}

そして、私のデータベースは通知テーブルでは次のようになっています。 http://i.minus.com/iZtrR0MNZ95Qn.png

そして、コードからの出力は、

2 New Users are following you 
5 Users Like IMAGE_ID_29
John Doe likes IMAGE_ID_50

あるべき場所

2 New Users are following you
John Doe likes IMAGE_ID_29
2 Users like IMAGE_ID_50
4

1 に答える 1

1

現在のクエリは次のとおりです。

SELECT type, extra_id, COUNT(*), id AS count FROM `notifications` WHERE `receiver_id` = '14' AND `read` = '0' GROUP BY type, extra_id

つまり、idフィールドをとして使用していますcount

あなたはおそらくそれを次のように書き直したいかもしれません:

SELECT type, extra_id, COUNT(*) AS count, id FROM `notifications` WHERE `receiver_id` = '14' AND `read` = '0' GROUP BY type, extra_id
于 2012-08-22T16:22:01.933 に答える