посчитать количество комментариев (php / mysql) - PullRequest
1 голос
/ 30 апреля 2011

Я использую этот код, чтобы я мог посчитать количество комментариев для каждой статьи

SELECT *, COUNT(comment_id) as count
FROM article_comments
WHERE article_id =colname
GROUP BY article_id

Вот так выглядит моя таблица комментариев

http://i54.tinypic.com/2cdu3dk.png

Я хочу сохранить эти номера в другой таблице (таблица статей ... каждый номер рядом со своей статьей), например:

http://i54.tinypic.com/2dgm82u.png

и когда пользователь вводит комментарий ...автоматическое изменение номера

кто-нибудь поможет мне с кодом или, если есть другой способ сделать это

я знаю, что это длинный вопрос, но я пытался решить эту проблему, как ... навсегда1018 *

спасибо

Ответы [ 5 ]

2 голосов
/ 30 апреля 2011

Вы можете установить TRIGGER, который будет обновлять таблицу количества комментариев при каждом добавлении комментария. Или вы можете просто добавить запрос UPDATE сразу после запроса INSERT на странице комментариев.

1 голос
/ 30 апреля 2011

Вам, вероятно, не нужна таблица поиска.1 статья имеет много комментариев.Поэтому структурируйте свою таблицу комментариев примерно так (добавьте поле статьи);

id | article | content
-------------------------
1  | 1       | Comment 1 for article 1.
2  | 1       | Comment 2 for article 1.
3  | 2       | Comment 3 for article 2. 

При отображении вашей статьи перечислите комментарии, используя следующий запрос;

SELECT a.id, a.content FROM articles a WHERE a.article = :myArticleId

При создании нового комментария:

INSERT INTO comments (article, content) VALUES (:currentArticleId, :content)
UPDATE article SET commentCount = commentCount + 1 WHERE article = :currentArticleId

Таблица статей будет выглядеть примерно так;

id | commentCount | content
------------------------------
1  | 0            | Article with 0 comments.
2  | 3            | Article with 3 comments.

Это потребует некоторых усилий с вашей стороны, ноэто имеет больше преимуществ, чем недостатков.


Предлагаемое решение имеет 2 больших недостатка:

  • COUNT () в SQL не очень хорошо масштабируется и может быть медленным, обычно этого можно избежать.
  • Таблица поиска добавляет ненужную сложность вашему приложению.

Следует также всегда избегать триггеров.Они создают «волшебные» условия - ваша база данных может быть изменена без вашего ведома.Триггеры часто сложнее изменить, чем код.

1 голос
/ 30 апреля 2011
$query = mysql_query("SELECT * FROM article_comments WHERE article_id =".$youarticleId);

//the number of comments is :
$number_Of_Comments = mysql_num_rows($query);

//save it to another table

$query2 = mysql_query("UPDATE yourTable set numberOfComments =".$number_Of_Comments);
0 голосов
/ 30 апреля 2011

вы просите, чтобы сервер sql выбрал все и идентификатор счета одновременно, используйте один из них и задайте ему, где закрыть, и Bingo!

0 голосов
/ 30 апреля 2011

при сохранении комментариев, попробуйте:

  update table_where_you_count_the_comments set number_of_comments = number_of_comments +1 where article_id = theID limit 1;

или ищите триггеры mysql.

...