Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подсчёт количества сообщений на форуме - вопрос
 
 автор: KIM   (07.02.2007 в 11:34)   письмо автору
 
 

Возник, возможно глупый, но нужный мне вопрос:
Имеется форум (неважно какой).
Надо чтобы в списке тем, у каждой темы было число, показывающее количество сообщений в данной теме. Конечно, это организовать не состовляет труда, но имеется 2 пути, по которым можно это организовать, и какой из них использовать?
1) Вот первый способ, но мне кажется, что это не разумно...

<?php
$res 
mysql_query("SELECT * FROM tops where id='$tid' "); // tops - это таблица с темами, где id - это уникальный идентификатор, $tid - рабочая переменная.
while($res mysql_fetch_array($res))
{
      
$count mysql_query("SELECT count(*) FROM mess where top='$tid' "); // mess -таблица с сообщениями, где top - это идентификатор, который указывает принадлежность сообщения к темам.  $tid - рабочая переменная.
      
$count mysql_result($count0);
      echo 
$res['top_name'].'[Сообщений: '.$count.']';
}
?>

2) Просто, при добавлении нового сообщения в БД, прибавлять число 1 к определённому числу в определённой ячейке темы. Эта ячейка хранит, так сказать, количество сообщений данной темы.

   
 
 автор: Trianon   (07.02.2007 в 11:43)   письмо автору
 
   для: KIM   (07.02.2007 в 11:34)
 

Есть третий способ.

SELECT tops.*, count(top) AS mcnt 
FROM tops LEFT JOIN mess ON tops.id=mess.tid 
GROUP BY tops.id

   
 
 автор: ZuArt   (07.02.2007 в 11:53)   письмо автору
 
   для: KIM   (07.02.2007 в 11:34)
 

Опять же все зависит от подхода и требований.

1 вариант - правильнее с точки зрения построения БД и работы с данными, но требует дополнительного запроса, по которому сервак должен пройтись по всей таблице, выбрать те, которые удовлетворяют условию и посчитать кол-во таких записей.... при большом форуме это может занять немало временных ресурсов

2 вариант - сложнее в плане организации - нужно поддерживать актуальность данных (+1 при новом сообщении, или переносе В тему... -1 при удалении, переносе ИЗ темы), но доп. времени нисколько не потребуется и вывод числа не зависит от объема таблицы.

Решать, как всегда, разработчику =)

   
 
 автор: cheops   (07.02.2007 в 13:34)   письмо автору
 
   для: KIM   (07.02.2007 в 11:34)
 

Лучше использовать второй вариант, форумы имеют объёмные базы и нагрузка будет достаточно сильной.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования