2011-09-16 4 views
0

おそらくかなりシンプルですが、私はいくつかの問題を抱えています。php countある著者がテーブルに投稿する

私がやろうとしていますすべての設定「「特定」「著者は、カテゴリ」あるから、持っている」どのように多くの記事「カウント」さ

表:

id | author | category | full | short 

1  jim  2,3  ...  ... 
2  josh  5,9  ...  ... 
3  jim  3,9  ...  ... 
4  jim  1,9  ...  ... 
5  josh  3,4  ...  ... 
6  trina  2  ...  ... 

私はどのように知っていますクエリ..

しかし、どのように私は私が(例えば、クエリ)

を問い合わせる場合はどのように多くのポストカウントする「foreachの」

をコーディングします

WHERE category = '9' AND author = "$author" 

だから、私は大したことではありませんその著者による投稿を示すだろうが、どのように私が表示されるでしょう:

$作者=「ジム」

ジム・カテゴリーで(2つのポスト場合9)

または$作者= "ジョシュ"

ジョシュカテゴリー9(1つのポスト)

場合

ありがとうございます!

ここは私が使用したものです。ありがとうございます!

+0

で(テストしていません)この

SELECT * FROM table_name WHERE category LIKE '%,9' OR category LIKE '9,%' OR category LIKE '9' OR category LIKE '%,9,%' 

は、あなたがそれを直接数えることができるように行うことができますによってテストされていませんか?もしそうなら、そのようにタグを付けましょう。 –

答えて

1

あなたはSQLクエリによって計算するだけで何のforeachをそれを行うことはできません。この宿題は、あなたが

mysql_num_rows 
2

著者をインデックスとして持つ多次元配列を作成することができます。各著者インデックスはカテゴリの別の配列といくつの投稿にすることができます。

$postCounts = array(); 
foreach($results as $result) { 
    if (!array_key_exists($result['author'], $postCounts)) { 
     $postCounts[$result['author']] = array(); 
    } 

    if (!array_key_exists[$result['category'], $postCounts[$result['author']])) { 
     $postCounts[$result['author']][$result['category'] = 1; // first post seen 
    } else { 
     $postCounts[$result['author']][$result['category'] += 1; // increment count 
    } 
} 

あなたのカテゴリの結果を見てから、しかし、あなたは、カンマでそれらを爆発し、二array_key_existsは、ループ内のブロックを追加する必要があるかもしれません。しかし、それはあなたがPHP foreachで望むことをすることができます。

あなたはこのような配列を取得最後に

$postCounts = Array(
    'jim' => Array(9 => 2) // 2 posts in category 9 for jim 
    'josh' => Array(9 => 1) // 1 post in category 9 for josh 
    'bob' => Array(9 => 3, 2 => 5) // 3 posts in category 9, 5 posts in category 2. 
) 
関連する問題