Пропустить

РЕШЕНО Дополнительные поля в профиле математические действия

Форум для авторов модов для phpBB 3.0.x. Здесь можно попросить помощи в разработке у коллег.
Свернуть Развернуть Правила форума Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).

РЕШЕНО Дополнительные поля в профиле математические действия

Сообщение komar » 16.08.2010 3:31

Доброго времени суток.
Помогите решить проблему уважаемые гуру, просто сам в пхп не силен.
Вопрос такой:
Существуют уже три дополнительных поля в минипрофиле, куда вносятся значения (простые числа)
Надо создать четвертое поле которое будет суммой первых трех значений.
Возможно ли это реализовать?
Что пытался сделать в коде viewtopic_body.html:
у меня доп поля прописаны отдельно, т.е. вот так:
<!-- IF postrow.S_PROFILE_POLE1 --><dd><strong>{postrow.PROFILE_POLE1_NAME}:</strong> {postrow.PROFILE_POLE1_VALUE}</dd><!-- ENDIF -->
<!-- IF postrow.S_PROFILE_POLE2 --><dd><strong>{postrow.PROFILE_POLE2_NAME}:</strong> {postrow.PROFILE_POLE2_VALUE}</dd><!-- ENDIF -->
<!-- IF postrow.S_PROFILE_POLE3 --><dd><strong>{postrow.PROFILE_POLE3_NAME}:</strong> {postrow.PROFILE_POLE3_VALUE}</dd><!-- ENDIF -->
<!-- IF postrow.S_PROFILE_POLE4 --><dd><strong>{postrow.PROFILE_POLE4_NAME}:</strong><?php $POLSUM = {postrow.PROFILE_POLE1_VALUE} +  {postrow.PROFILE_POLE2_VALUE} +  {postrow.PROFILE_POLE3_VALUE} ?> {POLSUM}</dd><!-- ENDIF -->

Сам знаю что написан бред в 4-м поле, ну вот так пытался решить эту проблему. PHP в шаблонах включен.
Подскажите как будет правильнее написать код, повторюсь, в пхп - полный ноль
Последний раз редактировалось komar 26.08.2010 9:18, всего редактировалось 1 раз.

komar
phpBB 1.2.0
 
Сообщения: 13
Зарегистрирован: 05.08.2010 16:35
Благодарил (а): 7 раз.
Поблагодарили: 0 раз.

Re: Дополнительные поля в профиле (математические действия)

Сообщение Палыч » 16.08.2010 16:37

komar писал(а):Надо создать четвертое поле которое будет суммой первых трех значений.

Нужно поле, которое будет храниться? И как оно будет обновляться, если будет изменены значения первых трёх полей?
Или нужно выводить (и где) сумму первых трёх полей?
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
Аватара пользователя
Палыч
Просто Палыч
Просто Палыч
 
Сообщения: 9471
Зарегистрирован: 24.05.2006 23:20
Откуда: Питер
Благодарил (а): 3 раз.
Поблагодарили: 337 раз.

Re: Дополнительные поля в профиле (математические действия)

Сообщение komar » 16.08.2010 17:00

Четвертое поле (оно как бы не 4-е, 4-е вообще будет всегда равно 0 и его нигде не будет видно), правильнее назвать "Сумма первых трех полей" не должно храниться, а должно изменяться при изменении первых трех полей, они же изменяются не пользователем, а в админке и выводятся все 3 в минипрофиле.
Обновляться значение суммы должно, наверное, при обновлении страницы и при пересчете значения ну как я писал:
суммаполей=1поле+2поле+3поле
4-е же поле создано из-за кривизны моих рук, просто не знал как прописать вывод в viewtopic_body.html и создать функцию вкл/выкл отображения суммы.

komar
phpBB 1.2.0
 
Сообщения: 13
Зарегистрирован: 05.08.2010 16:35
Благодарил (а): 7 раз.
Поблагодарили: 0 раз.

Re: Дополнительные поля в профиле (математические действия)

Сообщение Палыч » 16.08.2010 17:02

komar
Вы можете ответить на все вопросы?
Палыч писал(а):нужно выводить (и где) сумму первых трёх полей?
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
Аватара пользователя
Палыч
Просто Палыч
Просто Палыч
 
Сообщения: 9471
Зарегистрирован: 24.05.2006 23:20
Откуда: Питер
Благодарил (а): 3 раз.
Поблагодарили: 337 раз.

Re: Дополнительные поля в профиле (математические действия)

Сообщение komar » 16.08.2010 17:02

И еще, на самом деле там не обычное сложение полей, это просто писал для упрощения понимания задачи, там такое выражение:
Сумма полей=поле1+поле1*поле2/200+поле1*поле3/100

Добавлено спустя 40 секунд:
Палыч писал(а):Вы можете ответить на все вопросы?

в минипрофиле пользователя.

komar
phpBB 1.2.0
 
Сообщения: 13
Зарегистрирован: 05.08.2010 16:35
Благодарил (а): 7 раз.
Поблагодарили: 0 раз.

Re: Дополнительные поля в профиле (математические действия)

Сообщение Палыч » 16.08.2010 17:09

komar
Нужно просто в viewtopic.php в массив postrow добавить вашу переменную, например $POLSUM, которой присваивать соответствующее вычисляемое значение.
А в шаблоне сделать её вывод, можно условный.
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
За это сообщение автора Палыч поблагодарил:
komar (16.08.2010 17:15)
Аватара пользователя
Палыч
Просто Палыч
Просто Палыч
 
Сообщения: 9471
Зарегистрирован: 24.05.2006 23:20
Откуда: Питер
Благодарил (а): 3 раз.
Поблагодарили: 337 раз.

Re: Дополнительные поля в профиле (математические действия)

Сообщение komar » 16.08.2010 17:15

Можно поподробнее, просто честное слово php знаю на уровне минимальном.
Но в любом случае спасибо что откликнулись.

Добавлено спустя 55 минут 12 секунд:
Как я понял надо добавлять в в viewtopic.php:
после:
$postrow=array_merge($postrow, array(
'POST_AUTHOR_FULL'		=> ($poster_id != ANONYMOUS) ? $user_cache[$poster_id]['author_full'] : get_username_string('full', $poster_id, $row['username'], $row['user_colour'], $row['post_username']),
		'POST_AUTHOR_COLOUR'	=> ($poster_id != ANONYMOUS) ? $user_cache[$poster_id]['author_colour'] : get_username_string('colour', $poster_id, $row['username'], $row['user_colour'], $row['post_username']),
		'POST_AUTHOR'			=> ($poster_id != ANONYMOUS) ? $user_cache[$poster_id]['author_username'] : get_username_string('username', $poster_id, $row['username'], $row['user_colour'], $row['post_username']),
		'U_POST_AUTHOR'			=> ($poster_id != ANONYMOUS) ? $user_cache[$poster_id]['author_profile'] : get_username_string('profile', $poster_id, $row['username'], $row['user_colour'], $row['post_username']),

		'RANK_TITLE'		=> $user_cache[$poster_id]['rank_title'],
		'RANK_IMG'			=> $user_cache[$poster_id]['rank_image'],
		'RANK_IMG_SRC'		=> $user_cache[$poster_id]['rank_image_s... и т.д.

А вот что добавлять совсем не понимаю.

komar
phpBB 1.2.0
 
Сообщения: 13
Зарегистрирован: 05.08.2010 16:35
Благодарил (а): 7 раз.
Поблагодарили: 0 раз.

Re: Дополнительные поля в профиле (математические действия)

Сообщение Nekstati » 16.08.2010 21:07

viewtopic.php
		'POLSUM'			=> $cp_row['row']['PROFILE_POLEA_VALUE'] + $cp_row['row']['PROFILE_POLEB_VALUE'] + $cp_row['row']['PROFILE_POLEC_VALUE'],


viewtopic_body.html
<dd><strong>Сумма:  {POLSUM}</dd>


Тип полей должен быть только «Число», иначе полезут ошибки.
За это сообщение автора Nekstati поблагодарил:
komar (16.08.2010 21:35)
Аватара пользователя
Nekstati
Лидер поддержки
Лидер поддержки
 
Сообщения: 2571
Зарегистрирован: 19.03.2009 18:43
Благодарил (а): 9 раз.
Поблагодарили: 772 раз.

Re: Дополнительные поля в профиле (математические действия)

Сообщение komar » 16.08.2010 21:36

Nekstati
Огромное СПАСИБО!

komar
phpBB 1.2.0
 
Сообщения: 13
Зарегистрирован: 05.08.2010 16:35
Благодарил (а): 7 раз.
Поблагодарили: 0 раз.

Re: Дополнительные поля в профиле (математические действия)

Сообщение Палыч » 16.08.2010 22:09

Nekstati писал(а):viewtopic_body.html
<dd><strong>Сумма:  {POLSUM}</dd>

Маленькая поправка
<dd><strong>Сумма:  {postrow.POLSUM}</dd>

Ну и не просто сумма, а по условиям... (/100 /200 и т.д.)

Добавлено спустя 7 минут 40 секунд:
И лучше так:
'POLSUM'         => (isset($cp_row['row'])) ? $cp_row['row']['PROFILE_POLEA_VALUE'] + $cp_row['row']['PROFILE_POLEB_VALUE'] + $cp_row['row']['PROFILE_POLEC_VALUE'] : '',

и так
		<!-- IF postrow.POLSUM --><dd><strong>Сумма:  {postrow.POLSUM}</dd><!-- ENDIF -->

а то точно ошибки полезут.
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
За это сообщение автора Палыч поблагодарил:
komar (17.08.2010 4:24)
Аватара пользователя
Палыч
Просто Палыч
Просто Палыч
 
Сообщения: 9471
Зарегистрирован: 24.05.2006 23:20
Откуда: Питер
Благодарил (а): 3 раз.
Поблагодарили: 337 раз.

Re: Дополнительные поля в профиле (математические действия)

Сообщение komar » 17.08.2010 6:23

Огромное СПАСИБО за помощь, разобрался, работает оч. хорошо, так как надо.
Возник другой вопрос, но это уже не так важно, хотя если найдется человек, который поможет, буду очень рад.
На форуме установлен замечательный мод "Thanks for posts" и вот в это (вышеподсказанное) выражение хотелось бы добавить значение поля: "Поблагодарили: (это число) раз"
В общем сидел до 6-ти утра и так и не разобрался как его добавить.

komar
phpBB 1.2.0
 
Сообщения: 13
Зарегистрирован: 05.08.2010 16:35
Благодарил (а): 7 раз.
Поблагодарили: 0 раз.

Re: Дополнительные поля в профиле (математические действия)

Сообщение Палыч » 17.08.2010 7:59

komar писал(а):хотелось бы добавить значение поля:

Добавить, в смысле приплюсовать? Или просто как строку?
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
Аватара пользователя
Палыч
Просто Палыч
Просто Палыч
 
Сообщения: 9471
Зарегистрирован: 24.05.2006 23:20
Откуда: Питер
Благодарил (а): 3 раз.
Поблагодарили: 337 раз.

Re: Дополнительные поля в профиле (математические действия)

Сообщение komar » 17.08.2010 10:59

Палыч
Приплюсовать.

komar
phpBB 1.2.0
 
Сообщения: 13
Зарегистрирован: 05.08.2010 16:35
Благодарил (а): 7 раз.
Поблагодарили: 0 раз.

Re: Дополнительные поля в профиле (математические действия)

Сообщение Nekstati » 17.08.2010 16:09

Найти в viewtopic.php
output_thanks($row['user_id']);

Добавить после
	if (isset($cp_row['row']))
	{
		$postrow = array_merge($postrow, array('POLSUM' => $cp_row['row']['PROFILE_POLEA_VALUE'] + $cp_row['row']['PROFILE_POLEB_VALUE'] + $postrow['POSTER_RECEIVE_COUNT']));
	}

А предыдущие вставки убрать.
За это сообщение автора Nekstati поблагодарил:
komar (17.08.2010 17:34)
Аватара пользователя
Nekstati
Лидер поддержки
Лидер поддержки
 
Сообщения: 2571
Зарегистрирован: 19.03.2009 18:43
Благодарил (а): 9 раз.
Поблагодарили: 772 раз.

Re: Дополнительные поля в профиле (математические действия)

Сообщение komar » 17.08.2010 17:33

Nekstati
я до конца не понимаю механизм вашего кода, но примерно думаю что он в поле спасибо приплюсует все остальное, а мне надо наоборот, чтоб ко всему прочему еще приплюсовать спасибо.
Сейчас код уже выглядит так (спасибо Вам и Палычу):
'POLSUM' => round(($cp_row['row']['PROFILE_SKILL_VALUE'] + 10) * (1 + ($cp_row['row']['PROFILE_GROUPMEM_VALUE']/100) + ($cp_row['row']['PROFILE_KOEFF_VALUE']/100000) + ($cp_row['row']['PROFILE_ADMFREND_VALUE']/100) + ($user_cache[$poster_id]['user_torrents']/200) + ($user_cache[$poster_id]['posts']/10000) - ($user_cache[$poster_id]['warnings']/3)),2),

и вот в в это мат. выражение еще хотелось бы добавить количество спасибок данных пользователю.

komar
phpBB 1.2.0
 
Сообщения: 13
Зарегистрирован: 05.08.2010 16:35
Благодарил (а): 7 раз.
Поблагодарили: 0 раз.

След.

Вернуться в Для авторов (phpBB 3.0.x)

 

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

Бессрочный конкурс phpBB-ориентированных материалов
FastVPS — надёжный и доступный хостинг для phpBB
Место для вашей рекламы