Intellect Board — cистема управления сайтом

Построение сайта на основе форума

Intellect Board — cистема управления сайтом »   Техническая поддержка версии 2.22 »   Как посчитать количество участников в группе?
RSS

Как посчитать количество участников в группе?

Как правильно сформировать SQL запрос?

Текущий рейтинг темы: Нет
Выводить сообщения

<<Назад  Вперед>>Модераторы: aerograf, wsxПечать
 
Dearheart
Почетный участник


Откуда: Нижний Новгород
Всего сообщений: 130
Рейтинг пользователя: 4


Ссылка


Дата регистрации на форуме:
27 дек. 2007
Появилась необходимость в табличке группы вывести количество участников для каждой группы (аналогично, как это делается в админке). Я попытался изменить исходный SQL запрос, но ничего не вышло. Получается, что если начинаешь считать количество участников, то запрос неправильно возвращает членство в группе, и предлагает выйти из той группы, в которой меня небыло :frown: Тоесть ничего не получается... :frown:
Подскажите пожалуйста, как этот запрос должен выглядеть? Может быть возможно сделать два запроса, один работает как и раньше, а другой только считает количество участников... Но как тогда результаты двух запросов вставить в одну таблицу?

---
Форум для родителей детей с ВПС: http://forum.dearheart.ru
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 3299
Рейтинг пользователя: 70


Ссылка


Дата регистрации на форуме:
29 сен. 2001
Вообще, объединение следует проводить уже после выполнения самих запросов средствами PHP.
А запрос такой:
$sql = "SELECT g_id, COUNT(g_id) FROM prefix_UserGroup GROUP BY g_id"... (За счет точности наименования полей не ручаюсь, т.к. пишу с работы, где кода под рукой нет.)
Выполняешь этот запрос до основного, сохраяешь в хеш вида $gcount[группа]=число, а в цикле, где извлекаются группы с учетом участия добавляешь $имя_переменной['gcount']=$gcount[$имя_переменной['g_id']];

---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно!
Dearheart
Почетный участник


Откуда: Нижний Новгород
Всего сообщений: 130
Рейтинг пользователя: 4


Ссылка


Дата регистрации на форуме:
27 дек. 2007
Большое спасибо - все работает \":thumbup\"
Если кому понадобится такая фича, то рассказываю как сделал:

Дополнительный запрос, который выполняется до основного выглядит так:
$sql = "SELECT g.*, COUNT(gm.uid) AS gm_count FROM ".$GLOBALS['DBprefix']."UGroup g ".
"LEFT JOIN ".$GLOBALS['DBprefix']."UGroupMember gm ON (gm.gid=g.g_id) GROUP BY g.g_id,g.g_title,g.g_setlevel,g.g_ljoin,g.g_lview,g.g_lautojoin,g.g_descr,g.g_allowquit";
$resd =&db_query($sql,$link);

Затем заносим результаты запроса в массив $gcount, для этого выполняем цикл:
while ($qdata=&db_fetch_array($resd)) {
$gcount[$qdata['g_id']]=$qdata['gm_count'];
}

Далее следует основной запрос, там нет изменений, затем в основном цикле извлечения результатов запроса добавляем такую строку:
$gdata['gcount']=$gcount[$gdata['g_id']];
Это в основной массив добавляется количество участников для каждой группы.

Это всё, остаётся только в функции построения таблицы групп для HTML добавить такую строку <td align=center><?=$gdata['gcount'];?> чтобы построить четвёртую колону (и не забыть указать в шапке таблицы, что колонок будет 4) .

Всё работает - можно это дополнение добавить в следующий релиз \";)\"

---
Форум для родителей детей с ВПС: http://forum.dearheart.ru
Gram
Администратор

Gram
Откуда: Нижний Новгород
Всего сообщений: 1011
Рейтинг пользователя: 38


Ссылка


Дата регистрации на форуме:
23 июля 2003

Dearheart написал:
[q]
Всё работает - можно это дополнение добавить в следующий релиз
[/q]

Добавил \":rolleye\"
Dearheart
Почетный участник


Откуда: Нижний Новгород
Всего сообщений: 130
Рейтинг пользователя: 4


Ссылка


Дата регистрации на форуме:
27 дек. 2007
Gram, есть ещё одна полезная фишка - это дополнение галерей возможностью фотохостинга, что позволит размещать фотки из нашей галереи на других форумах, которые размещение фоток не поддерживают. Дополнение небольшое, поэтому его тоже можно вставить в релиз. Текст этого дополнения на форуме выкладывать нельзя, поскольку форум при этом ломается, так что выкладываю текст доработки в приаттаченном файле, может кому пригодится.

Прикрепленный файл (dop.txt, 1550 байт, скачан: 1109 раз)
---
Форум для родителей детей с ВПС: http://forum.dearheart.ru
Gram
Администратор

Gram
Откуда: Нижний Новгород
Всего сообщений: 1011
Рейтинг пользователя: 38


Ссылка


Дата регистрации на форуме:
23 июля 2003
Dearheart, дополнение конечно добавлю как буду переделывать фотогалерею. А ошибку исправим скоро.
<<Назад  Вперед>>Модераторы: aerograf, wsxПечать
Intellect Board — cистема управления сайтом »   Техническая поддержка версии 2.22 »   Как посчитать количество участников в группе?
RSS

1 посетитель просмотрел эту тему за последние 10 минут
В том числе: 1 гость, 0 скрытых пользователей

Последние RSS
Ограничение доступа
не отображаются разделы
Архив версий
Установка стиля на Intellect Board 2.22
Завершилась работа над новой версией 3.00

Самые активные 5 тем RSS


Время выполнения скрипта: 0.0694. Количество выполненных запросов: 17, время выполнения запросов 0.0000
Creative Commons License Rambler's Top100 Rambler's Top100 Рейтинг@Mail.ru Valid HTML 4.01 Transitional Valid CSS!