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

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
komar
phpBB 1.2.0
Сообщения: 13
Стаж: 16 лет 1 месяц
Благодарил (а): 7 раз

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

Сообщение komar »

Доброго времени суток.
Помогите решить проблему уважаемые гуру, просто сам в пхп не силен.
Вопрос такой:
Существуют уже три дополнительных поля в минипрофиле, куда вносятся значения (простые числа)
Надо создать четвертое поле которое будет суммой первых трех значений.
Возможно ли это реализовать?
Что пытался сделать в коде 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 5:18, всего редактировалось 1 раз.
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 20 лет 4 месяца
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза

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

Сообщение Палыч »

komar писал(а):Надо создать четвертое поле которое будет суммой первых трех значений.
Нужно поле, которое будет храниться? И как оно будет обновляться, если будет изменены значения первых трёх полей?
Или нужно выводить (и где) сумму первых трёх полей?
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
komar
phpBB 1.2.0
Сообщения: 13
Стаж: 16 лет 1 месяц
Благодарил (а): 7 раз

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

Сообщение komar »

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

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

Сообщение Палыч »

komar
Вы можете ответить на все вопросы?
Палыч писал(а):нужно выводить (и где) сумму первых трёх полей?
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
komar
phpBB 1.2.0
Сообщения: 13
Стаж: 16 лет 1 месяц
Благодарил (а): 7 раз

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

Сообщение komar »

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

Добавлено спустя 40 секунд:
Палыч писал(а):Вы можете ответить на все вопросы?
в минипрофиле пользователя.
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 20 лет 4 месяца
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза

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

Сообщение Палыч »

komar
Нужно просто в viewtopic.php в массив postrow добавить вашу переменную, например $POLSUM, которой присваивать соответствующее вычисляемое значение.
А в шаблоне сделать её вывод, можно условный.
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
komar
phpBB 1.2.0
Сообщения: 13
Стаж: 16 лет 1 месяц
Благодарил (а): 7 раз

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

Сообщение komar »

Можно поподробнее, просто честное слово 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... и т.д.
А вот что добавлять совсем не понимаю.
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Стаж: 17 лет 6 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1454 раза

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

Сообщение Nekstati »

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>
Тип полей должен быть только «Число», иначе полезут ошибки.
komar
phpBB 1.2.0
Сообщения: 13
Стаж: 16 лет 1 месяц
Благодарил (а): 7 раз

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

Сообщение komar »

Nekstati
Огромное СПАСИБО!
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 20 лет 4 месяца
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза

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

Сообщение Палыч »

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
phpBB 1.2.0
Сообщения: 13
Стаж: 16 лет 1 месяц
Благодарил (а): 7 раз

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

Сообщение komar »

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

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

Сообщение Палыч »

komar писал(а):хотелось бы добавить значение поля:
Добавить, в смысле приплюсовать? Или просто как строку?
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
komar
phpBB 1.2.0
Сообщения: 13
Стаж: 16 лет 1 месяц
Благодарил (а): 7 раз

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

Сообщение komar »

Палыч
Приплюсовать.
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Стаж: 17 лет 6 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1454 раза

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

Сообщение Nekstati »

Найти в 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']));
	}
А предыдущие вставки убрать.
komar
phpBB 1.2.0
Сообщения: 13
Стаж: 16 лет 1 месяц
Благодарил (а): 7 раз

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

Сообщение komar »

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),
и вот в в это мат. выражение еще хотелось бы добавить количество спасибок данных пользователю.

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