Перейти к контенту
  • 0

Подсчет сообщений


liashyk

Вопрос

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

 

мне нужно подсчитать сообщения юзера с определенным id (юзера допустим 7) в форуме (id форума равно 3)

 

то что нужно сделать с этим запросом , я зделаю и сам (знаний должно хватить (начал изучать php))

 

просто в данный момент я немогу додуматься как сделать запрос в таблицу posts и из нее выбрать все посты пользователя с колонки author_id где оно равно переменной $member['id'] , отсортировать все эти результаты и выбрать из них посты сделаные токо в подфоруме номер 3 (а в таблице posts есть только topic_id (знач нужно выбрать только те посты где номера топиков относятся к подфоруму номер 3, а чтоб это сделать как понял должен еще быть запрос в таблицу topics и выбрать только те топики которые относятся к подфоруму номер 3)) и когда все эти выборки сделаны нужно эти посты юзера подсчитать и результат подсчета представить в переменной $info['post_in_forum_3'] )

 

 

весь запрос и результат с полученой переменной $info['user_post_in_forum_3'] нужно вставить в sources\action_public\profile.php

Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0

переведите, плз, второе предложение на русский язык.

 

кроме того, было бы совсем неплохо, если бы вы нашли время переформулировать весь вопрос, начав словами "у меня не получается то-то, я хочу добиться вот такого вот, подскажите, пожалуйста..."

 

пока из того, что вы спросили, понятно только, что вам нужно помочь составить SQL-запрос. а вы знаете, что с ним потом делать?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

все перефразировал и написал докладно то что мне нужно

помогите пожалуйста...

 

 

 

 

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

 

мне нужно подсчитать сообщения юзера с определенным id (юзера допустим 7) в форуме (id форума равно 3)

 

то что нужно сделать с этим запросом , я зделаю и сам (знаний должно хватить (начал изучать php))

 

просто в данный момент я немогу додуматься как сделать запрос в таблицу posts и из нее выбрать все посты пользователя с колонки author_id где оно равно переменной $member['id'] , отсортировать все эти результаты и выбрать из них посты сделаные токо в подфоруме номер 3 (а в таблице posts есть только topic_id (знач нужно выбрать только те посты где номера топиков относятся к подфоруму номер 3, а чтоб это сделать как понял должен еще быть запрос в таблицу topics и выбрать только те топики которые относятся к подфоруму номер 3)) и когда все эти выборки сделаны нужно эти посты юзера подсчитать и результат подсчета представить в переменной $info['post_in_forum_3'] )

 

 

весь запрос и результат с полученой переменной $info['user_post_in_forum_3'] нужно вставить в sources\action_public\profile.php

Ссылка на комментарий
Поделиться на других сайтах

  • 0

в таблице topics есть два поля - posts и forum_id

SELECT первое FROM ibf_topics WHERE второе=3

а как мембера сделать - хз

 

наверно так

SELECT topic_id FROM ibf_posts WHERE author_id='target'

пишем это в массив, если уже есть в массиве, то не пишем

потом n раз

SELECT posts FROM ibf_topics WHERE forum_id=3 AND tid='target[n]'

как то так

 

не, или не n раз

есть конструкция IN

типа

WHERE tid IN (1,2,3)

Ссылка на комментарий
Поделиться на других сайтах

  • 0

есть в версиях до 2.1 включительно такая фича в профиле - наибольшая активность в таком-то форуме.

 

вычисляется это путем обращения к готовому запросу profile_get_favourite, в качестве параметров передается массив, в котором элемент mid - это ID искомого пользователя, а fid_array - это список тех форумов, к которым имеет доступ тот, кто просматривает профиль.

 

раз список форумов нам не нужен, просто убираем это условие (или оставляем, тогда вообще ничего менять на надо).

 

собственно, от этого запроса можно и поиграть, вот он, очищенный.

SELECT t.forum_id, COUNT(p.author_id) as f_posts
FROM ibf_posts p
LEFT JOIN ibf_topics t ON ( p.topic_id=t.tid )
WHERE p.author_id=АЙДИ_НУЖНОГО_ЮЗЕРА AND t.tid IS NOT NULL
GROUP BY t.forum_id
ORDER BY f_posts DESC

 

этот запрос находится в функции profile_get_favourite, скрипт sources/sql/mysql_queries.php

 

в sources/action_public/profile.php весь процесс обращения к нему можно найти после строчки

// Most posted forum

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

while($this->ipsclass->DB->fetch_row()) 
...

 

P.S. а редактировать первое сообщение - нехорошо :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Большое спасибо.

 

действительно зачем изобретать новый велосипед если можно еще покататься на старом

 

в общем у меня еще проще получилось ето сделать.

мож комуто понабится:

стоить просто поменять значение переменной $forum_ids[] в profile.php на номер нужного форума и оно будет считать сообщения только оттуда

Ссылка на комментарий
Поделиться на других сайтах

  • 0
стоить просто поменять значение переменной $forum_ids[] в profile.php на номер нужного форума и оно будет считать сообщения только оттуда

в смысле $forum_ids[] ? :D

меня скобки встревожили.

это вы вот здесь:

		$forum_ids = array('0');
	foreach( $this->ipsclass->forums->forum_by_id as $i => $r )
	{
		if ( $this->ipsclass->check_perms($r['read_perms']) == TRUE )
		{
			$forum_ids[] = $r['id'];
		}
	}

вместо $r['id'] хотите поставить просто, допустим, 3 ?

 

интересное "упрощение" - отправлять базе массив из кучи одинаковых циферок ;)

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Простенько и со вкусом, а главное что оно работает.

м-да. :D

тогда уж просто весь вот этот блок:

		$forum_ids = array('0');
	foreach( $this->ipsclass->forums->forum_by_id as $i => $r )
	{
		if ( $this->ipsclass->check_perms($r['read_perms']) == TRUE )
		{
			$forum_ids[] = $r['id'];
		}
	}

замените на

		$forum_ids = array(3);

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.