Пропустить

User Reputation System 1.0.0

Ответы на вопросы, связанные с модами для phpBB 2.0.x, кроме относящихся к форуму Для авторов (phpBB 2.0.x).

User Reputation System 1.0.0

Сообщение А.Г.А. » 04.08.2007 19:03

Отдельную тему для этого мода не нашел, извините.

############################################################## 
## MOD Title: Users Reputations System v.1.0.0
## MOD Author: antongranik < anton@granik.com > (Anton Granik) http://granik.com 
## MOD Description: Allows users to give reputation points to each others, earn it by posts and by "living" on forum, see the history of givings. Admin can edit users' reputations in admin cp. The whole system can be a text or a graphic version (5 different medals) and simple or advanced version (with choosing of how much reputation to give). You can get help on the system in the guide/ folder.
## MOD Version: 1.0.0 
## 
## Installation Level: (Intermediate) 
## Installation Time: 30 Minutes 
## Files To Edit (15):
## Included Files (21):
##		
## License: http://opensource.org/licenses/gpl-license.php GNU General Public License v2 
############################################################## 
## For security purposes, please check: http://www.phpbb.com/mods/ 
## for the latest version of this MOD. Although MODs are checked 
## before being allowed in the MODs Database there is no guarantee 
## that there are no security problems within the MOD. No support 
## will be given for MODs not found within the MODs Database which 
## can be found at http://www.phpbb.com/mods/ 
############################################################## 
## Author Notes: 
##		1. For the latest release always go to http://granik.com/forum/viewtopic.php?t=16
## 		2. Official support forum is http://granik.com/forum/viewforum.php?f=3 If you download this mod from other sides then the mentioned sites above, it might cause malicious code to enter into your phpBB Forum.
##		3. Russian translation is included in folder lang_russian/
##		4. In folder different medals/buckets/ there are different medals. The medals are buckets with paint. :) Just copy these files to your forum_root_directory/images/
##		5. Special thanks to my wife and daughter for leaving me untouched while writing this mod :) , rockboyteek, Raul Duke, cherokee red, Patrick Simmons, aboyd, Infamy and all those I have forgotten for testing and helping...
##		6. Tested on phpbb 2.0.19, 2.0.20.
##############################################################


Проблема заключается в следующем (причем, что странно, на локалхосте никакой проблемы нет):
При написании сообщения в любой теме выскакивает ошибка

Error in updating the reputations

DEBUG MODE

UPDATE phpbb_users SET user_reputation = user_reputation + 0,02, user_rep_last_time = 1186165477 WHERE user_id = 2

Line : 176
File : functions_reputation.php 

В настройках включен набор репутации по одному очку за каждые 50 сообщений, оставленные не форме. Несмотря на ошибку, сообщение оставляется, что логично, но репутация, естественно, не набирается.
Вот эти строки из файла functions_reputation.php:
	if ($mode != 'poll_delete')
	{
		$sql = "UPDATE " . USERS_TABLE . "
				SET user_reputation = user_reputation $sign_rep, user_rep_last_time = $last_time
				WHERE user_id = $user_id";
		if (!$db->sql_query($sql))
		{
			message_die(GENERAL_ERROR, 'Error in updating the reputations', '', __LINE__, __FILE__, $sql);
		}
	}


При удалении этого сообщения также выскакивает ошибка:
Error in updating the reputations

DEBUG MODE

SQL Error : 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '02, user_rep_last_time = 1186165477 WHERE user_id = 2' at line 2

UPDATE phpbb_users SET user_reputation = user_reputation - 0,02, user_rep_last_time = 1186165477 WHERE user_id = 2

Line : 176
File : functions_reputation.php


Очень надеюсь на вашу помощь.
...мы могли бы посылать каждого из вас... в нашу коллекцию полезных ссылок - Документация, ПОИСК, правила конференции, шаблон запроса, FAQ, руководство пользователя, руководство по установке модов и стилей.
© Общие ошибки новичков :D
Аватара пользователя
А.Г.А.
phpBB 2.0.0
 
Сообщения: 113
Зарегистрирован: 02.01.2007 6:01
Откуда: RU.MSK
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение rxu » 04.08.2007 19:09

До запроса создайте какую-либо переменную и присвойте ей значение 0,02, а в запросе используйте уже эту переменную. Например (никак не связано с кодом мода, просто чтобы сориентировать):
$delta = 0,02;
$sql = "UPDATE phpbb_users SET user_reputation = user_reputation + $delta, user_rep_last_time = $current_time WHERE user_id = 2";
Изображение
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
 
Сообщения: 7366
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 2 раз.
Поблагодарили: 270 раз.

Сообщение А.Г.А. » 04.08.2007 19:22

но ведь так и происходит.
В запросе используется переменная $sign_rep, которая создается следующим образом:

		if ($rep_config['posts_to_earn'] != 0)
		{
			$sign_rep = ($mode == 'delete') ? '- ' . (1/$rep_config['posts_to_earn']) : '+ ' . (1/$rep_config['posts_to_earn']);
		} else
		{
			$sign_rep = ' + 0';
		}


Добавлено спустя 1 минуту 37 секунд:

Кстати, попробовал сделать так, как вы предложили:

Parse error: syntax error, unexpected ',' in /home/virtwww/w_reaclub_d9f23389/http/includes/functions_reputation.php on line 168
Кажется, у форума (или у хостинга, кто их знает, на локалхосте работает ведь все) проблемы с запятыми :D
...мы могли бы посылать каждого из вас... в нашу коллекцию полезных ссылок - Документация, ПОИСК, правила конференции, шаблон запроса, FAQ, руководство пользователя, руководство по установке модов и стилей.
© Общие ошибки новичков :D
Аватара пользователя
А.Г.А.
phpBB 2.0.0
 
Сообщения: 113
Зарегистрирован: 02.01.2007 6:01
Откуда: RU.MSK
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение rxu » 04.08.2007 19:40

А.Г.А. писал(а): попробовал сделать так, как вы предложили

Выложите код, как именно попробовали.

Добавлено спустя 3 минуты 31 секунду:

Кстати, непонятно, откуда запятая появляется в 0,02. По идее, должна быть точка.
Изображение
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
 
Сообщения: 7366
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 2 раз.
Поблагодарили: 270 раз.

Сообщение А.Г.А. » 04.08.2007 20:08

сделал так:
	$rep_delta = 0,02;
	if ($mode != 'poll_delete')
	{
		$sql = "UPDATE " . USERS_TABLE . "
				SET user_reputation = user_reputation + $rep_delta, user_rep_last_time = $last_time
				WHERE user_id = $user_id";
		if (!$db->sql_query($sql))
		{
			message_die(GENERAL_ERROR, 'Error in updating the reputations', '', __LINE__, __FILE__, $sql);
		}
	}

так если точка дожна быть.. может ее попробовать? :oops:

Добавлено спустя 9 минут 40 секунд:

попробовал тупо поставить вместо $rep_delta сразу значение - 0.02
заработало. Но это не выход, ведь при удалении сообщения надо, чтобы репутация уменьшалась, а так она будет увеличиваться на те же 0.02
...мы могли бы посылать каждого из вас... в нашу коллекцию полезных ссылок - Документация, ПОИСК, правила конференции, шаблон запроса, FAQ, руководство пользователя, руководство по установке модов и стилей.
© Общие ошибки новичков :D
Аватара пользователя
А.Г.А.
phpBB 2.0.0
 
Сообщения: 113
Зарегистрирован: 02.01.2007 6:01
Откуда: RU.MSK
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение rxu » 04.08.2007 20:09

А.Г.А. писал(а): может ее попробовать?

А что тут пробовать. Результатом вычисления выражения 1/$rep_config['posts_to_earn'] должно быть число с точкой, а не с запятой. Откуда берется запятая?
Изображение
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
 
Сообщения: 7366
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 2 раз.
Поблагодарили: 270 раз.

Сообщение А.Г.А. » 04.08.2007 20:13

я не знаю.
до этого, вместо $rep_delta = 0,02;
написал $rep_delta = 0.02; - с точкой.

Почему-то вылезает абсолютно та же ошибка с запятой. :x
...мы могли бы посылать каждого из вас... в нашу коллекцию полезных ссылок - Документация, ПОИСК, правила конференции, шаблон запроса, FAQ, руководство пользователя, руководство по установке модов и стилей.
© Общие ошибки новичков :D
Аватара пользователя
А.Г.А.
phpBB 2.0.0
 
Сообщения: 113
Зарегистрирован: 02.01.2007 6:01
Откуда: RU.MSK
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение rxu » 04.08.2007 20:43

Попробуйте вывести на экран переменную $sign_rep перед присвоением значения $sql. Очень желательно - не на рабочем форуме. Что-то вроде
echo $sign_rep;
exit;
Изображение
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
 
Сообщения: 7366
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 2 раз.
Поблагодарили: 270 раз.

Сообщение А.Г.А. » 04.08.2007 20:54

Сделал на локалхосте.
оставил сообщение, на экране: + 0.02, как и должно быть.

Сделал так же на рабочем:
На экране + 0,02

Ума не приложу, как такое может быть.

ЗЫ.На рабочем форуме сейчас не страшно проводить эксперименты)) Сайт толко открылся, и еще даже собственный домен не приобрел.. все на субдомене 1gb тусуется
...мы могли бы посылать каждого из вас... в нашу коллекцию полезных ссылок - Документация, ПОИСК, правила конференции, шаблон запроса, FAQ, руководство пользователя, руководство по установке модов и стилей.
© Общие ошибки новичков :D
Аватара пользователя
А.Г.А.
phpBB 2.0.0
 
Сообщения: 113
Зарегистрирован: 02.01.2007 6:01
Откуда: RU.MSK
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение rxu » 04.08.2007 21:55

Видимо, вот это как раз описание Вашей проблемы:
Luzian (17-Nov-2005 08:03)

Be careful when using float values in strings that are used as code later, for example when generating JavaScript code or SQL statements. The float is actually formatted according to the browser's locale setting, which means that "0.23" will result in "0,23". Imagine something like this:
$x = 0.23;
$js = "var foo = doBar($x);";
print $js;
This would result in a different result for users with some locales. On most systems, this would print:
var foo = doBar(0.23);
but when for example a user from Germany arrives, it would be different:
var foo = doBar(0,23);

which is obviously a different call to the function. JavaScript won't state an error, additional arguments are discarded without notice, but the function doBar(a) would get 0 as parameter. Similar problems could arise anywhere else (SQL, any string used as code somewhere else). The problem persists, if you use the "." operator instead of evaluating the variable in the string.
So if you REALLY need to be sure to have the string correctly formatted, use number_format() to do it!
Изображение
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
 
Сообщения: 7366
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 2 раз.
Поблагодарили: 270 раз.

Сообщение А.Г.А. » 04.08.2007 22:26

тогда, возможно дело в том, что у меня раскомментирована строка
setlocale(LC_ALL, 'ru_RU.CP1251');
в lang_main.php...

Добавлено спустя 3 минуты 39 секунд:

Ну вы представляете!
Дело именно в этой раскомментированной строке)
Я вернул, как было в самом начале - и все вернулось на свои места))

Большое спасибо за помощь, rxu :)
...мы могли бы посылать каждого из вас... в нашу коллекцию полезных ссылок - Документация, ПОИСК, правила конференции, шаблон запроса, FAQ, руководство пользователя, руководство по установке модов и стилей.
© Общие ошибки новичков :D
Аватара пользователя
А.Г.А.
phpBB 2.0.0
 
Сообщения: 113
Зарегистрирован: 02.01.2007 6:01
Откуда: RU.MSK
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение SemShulm » 11.08.2007 15:54

Нужно оставить только положительную репутацию.
Что и где нужно сделать?
Помогите,пожалуйста.Очень нужно.

Добавлено спустя 1 час 41 минуту 59 секунд:

Добавлено спустя 1 час 53 минуты 28 секунд:

Кто нибудь может помочь?Очень нужно
Аватара пользователя
SemShulm
phpBB 1.4.0
 
Сообщения: 33
Зарегистрирован: 01.01.2007 15:36
Откуда: Израиль, Ашкелон
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение crash » 11.08.2007 16:29

SemShulm
чтобы случайно не быть забаненным, прочтите правила форума
Как правильно задавать вопросы
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса
Аватара пользователя
crash
Former team member
 
Сообщения: 6579
Зарегистрирован: 07.07.2004 17:12
Откуда: Бердск
Благодарил (а): 0 раз.
Поблагодарили: 16 раз.

Сообщение Zlodey12 » 13.08.2007 14:53

SemShulm писал(а):Нужно оставить только положительную репутацию.
Что и где нужно сделать

ну, если так сразу навскидку, то можно подправить файл reputation.tpl, убрав упоминание о "минусовой" репутации.
те, кто дружат с HTML сделают это сами без труда,
кто не дружит - могут сделать например вот так:
	<td class="row3"><input type="radio" name="rep_neg_to_give" value="0" checked><img src="images/reputation_pos.gif" alt="" border="0" align="middle">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio" name="rep_neg_to_give" value="1"><img src="images/reputation_neg.gif" alt="" border="0" align="middle"></td>

заменить на
	<td class="row3"><input type="radio" name="rep_neg_to_give" value="0" checked><img src="images/reputation_pos.gif" alt="" border="0" align="middle"></td>



модераторам: объедините темы 9137 и 15917, ведь судя по названиям - это одно и тоже

Zlodey12
phpBB 2.0.2
 
Сообщения: 172
Зарегистрирован: 10.02.2007 11:09
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение Mac » 27.10.2007 17:15

А.Г.А. писал(а):тогда, возможно дело в том, что у меня раскомментирована строка
setlocale(LC_ALL, 'ru_RU.CP1251');
в lang_main.php...

Добавлено спустя 3 минуты 39 секунд:

Ну вы представляете!
Дело именно в этой раскомментированной строке)
Я вернул, как было в самом начале - и все вернулось на свои места))

Большое спасибо за помощь, rxu :)
У меня подобная проблема, но я не могу просто закомментировать эту строку
setlocale(LC_ALL, "ru_RU.cp1251");
потому что без нее у меня не работает поиск по русским словам. Очень прошу помочь советом.

Mac
phpBB 1.4.2
 
Сообщения: 58
Зарегистрирован: 14.08.2007 19:07
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

След.

Вернуться в Поддержка модов для phpBB 2.0.x

 

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

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

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

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