Неправильный вывод значения

Ответить
x00peR
Сообщения: 141
Зарегистрирован: 05.03.2011
Есть скрипт, точнее его часть, остальное не важно я думаю. Он выводит значения "money" в теме - все нормально работает (картинка 1),
1.jpg
потом я решил добавить еще и значения "POSTER_TOPICS" - чтобы за созданные темы начислялся тоже бонус:

Код: Выделить всё

<script>
p_p = (('{postrow.POSTER_POSTS}'/1.5).toFixed(1));
money = p_p-bans-minus+parseInt(bonus);
document.write('<br /> <b>Заработано: '+p_p+' р.</b>');
document.write('<br /> <b>Выплачено: '+minus+' р.</b>');
document.write('<br /> <b>Бонус: <font color="#0040FF">'+bonus+' р.</font></b>');
document.write('<br /> <b>Штраф: <font color="#FF0000">'+bans+' р.</font></b>');
document.write('<br /> <b>К выплате: <font color="#008000">'+money+' р.</font></b>');
</script>
переделал вот так скрипт:

Код: Выделить всё

<script>
p_p = (('{postrow.POSTER_POSTS}'/1.5).toFixed(1));
p_t = (('{postrow.POSTER_TOPICS}'/1.5).toFixed(1));
money = p_p-bans-minus+p_t+parseInt(bonus);
document.write('<br /> <b>Заработано: '+p_p+' р.</b>');
document.write('<br /> <b>Выплачено: '+minus+' р.</b>');
document.write('<br /> <b>Бонус: <font color="#0040FF">'+bonus+' р.</font></b>');
document.write('<br /> <b>Штраф: <font color="#FF0000">'+bans+' р.</font></b>');
document.write('<br /> <b>К выплате: <font color="#008000">'+money+' р.</font></b>');
</script>
сделал по аналогии как говорится и результат получился как на картинке 2:
2.jpg
Значение p_t почему то не плюсуется к значению money, а приписывается к десятичной части.
Как я задумал значение money должно быть равно 14(сообщений)/1,5 (к-т)=9,3; 7(тем)/1,5(к-т)=4,6; 9,/+4,6=13,9 рублей - ИТОГ, но получается значение вот такое: 9.34.70 р.

Я так понимаю ошибка в этой строке или этой:

Код: Выделить всё

p_t = (('{postrow.POSTER_TOPICS}'/1.5).toFixed(1));
money = p_p-bans-minus+p_t+parseInt(bonus);
Помогите подправить пожалуйста.

Аватара пользователя
Distructor
Администратор
Сообщения: 1607
Зарегистрирован: 28.12.2009
у тебя цены передаются не как числа, а как строки, потому javaScript их и склеивает а не складывает

Код: Выделить всё

p_p = ('{postrow.POSTER_POSTS}'/1.5);
p_t = ('{postrow.POSTER_TOPICS}'/1.5);
money = (p_p-parseFloat(bans)-parseFloat(minus)+p_t+parseFloat(bonus)).toFixed(1);
all_money = (p_p-parseFloat(bans)+p_t+parseFloat(bonus)).toFixed(1);
document.write('<br /> <b>Заработано: '+all_money+' р.</b>');

x00peR
Сообщения: 141
Зарегистрирован: 05.03.2011
Понял ошибку. Спасибо за код. Я еще кое что подредактировал тут и получилось вот так :)

Код: Выделить всё

<script>
p_p = ('{postrow.POSTER_POSTS}'/1.5); // Счетчик сообщений
p_t = ('{postrow.POSTER_TOPICS}'/1.1); // Счетчик тем
money = (p_p-parseFloat(bans)-parseFloat(minus)+p_t+parseFloat(bonus)).toFixed(1); // Все в сумме к выплате
m_p_t = (p_p+p_t).toFixed(1); // Сообщения + темы
document.write('<br /> <b>Заработано: '+m_p_t+' р.</b>'); // Средства за сообщения и темы
document.write('<br /> <b>Выплачено: '+minus+' р.</b>'); // Выплаченные средства
document.write('<br /> <b>Бонус: <font color="#0040FF">'+bonus+' р.</font></b>'); // Бонусные средства
document.write('<br /> <b>Штраф: <font color="#FF0000">'+bans+' р.</font></b>'); // Штрафные средства
document.write('<br /> <b>К выплате: <font color="#008000">'+money+' р.</font></b>'); // Средства подлежащие выплате
</script>
Это я сделал вывод в теме. Вот код который должен выводить тоже самое, только при просмотре профиля:

Код: Выделить всё

	<script>money = (('{POSTS}'/1.5).toFixed(1));</script>
<!-- IF PROFILE_BONUS_VALUE -->
<script>bonus = '{PROFILE_BONUS_VALUE}';</script>
<!-- ELSE -->
<script>bonus = 0;</script>
<!-- ENDIF -->
<!-- IF PROFILE_MINUS_VALUE -->
<script>minus = '{PROFILE_MINUS_VALUE}';</script>
<!-- ELSE -->
<script>minus = 0;</script>
<!-- ENDIF -->
<!-- IF PROFILE_BANS_VALUE -->
<script>bans = '{PROFILE_BANS_VALUE}';</script>
<!-- ELSE -->
<script>bans = 0;</script>
<!-- ENDIF -->
         <tr>
            <td class="gen" align="{S_CONTENT_FLOW_END}" valign="top" nowrap="nowrap">Заработано:</td>
            <td><b class="gen"><script>document.write(money);</script></b></td>
         </tr>
		 </br>
         <tr>
            <td class="gen" align="{S_CONTENT_FLOW_END}" valign="top" nowrap="nowrap">Бонус:</td>
            <td><b class="gen"><script>document.write(bonus);</script></b></td>
         </tr>
		 </br>
         <tr>
            <td class="gen" align="{S_CONTENT_FLOW_END}" valign="top" nowrap="nowrap">Потрачено:</td>
            <td><b class="gen"><script>document.write(minus);</script></b></td>
         </tr>
		 </br>
         <tr>
            <td class="gen" align="{S_CONTENT_FLOW_END}" valign="top" nowrap="nowrap">Штраф:</td>
            <td><b class="gen"><script>document.write(bans);</script></b></td>
         </tr>
		 </br>
         <tr>
            <td class="gen" align="{S_CONTENT_FLOW_END}" valign="top" nowrap="nowrap">На счету:</td>
			<td><b class="gen"><script>document.write(money-minus-bans+parseInt(bonus));</script></b></td>
         </tr>
</br>
Я попытался его изменить на то, что мне нужно, на аналогичный как в теме.И вот что получилось:

Код: Выделить всё

<script>p_p = ('{postrow.POSTER_POSTS}'/1.5);</script>
		<script>p_t = ('{postrow.POSTER_TOPICS}'/1.1);</script>
		<script>money = (p_p-parseFloat(bans)-parseFloat(minus)+p_t+parseFloat(bonus)).toFixed(1);</script>
		<script>m_p_t = (p_p+p_t).toFixed(1);</script>
		
<!-- IF PROFILE_BONUS_VALUE -->
<script>bonus = '{PROFILE_BONUS_VALUE}';</script>
<!-- ELSE -->
<script>bonus = 0;</script>
<!-- ENDIF -->
<!-- IF PROFILE_MINUS_VALUE -->
<script>minus = '{PROFILE_MINUS_VALUE}';</script>
<!-- ELSE -->
<script>minus = 0;</script>
<!-- ENDIF -->
<!-- IF PROFILE_BANS_VALUE -->
<script>bans = '{PROFILE_BANS_VALUE}';</script>
<!-- ELSE -->
<script>bans = 0;</script>
<!-- ENDIF -->
         <tr>
            <td class="gen" align="{S_CONTENT_FLOW_END}" valign="top" nowrap="nowrap">Заработано:</td>
            <td><b class="gen"><script>document.write(m_p_t);</script></b></td>
         </tr>
		 </br>
         <tr>
            <td class="gen" align="{S_CONTENT_FLOW_END}" valign="top" nowrap="nowrap">Бонус:</td>
            <td><b class="gen"><script>document.write(bonus);</script></b></td>
         </tr>
		 </br>
         <tr>
            <td class="gen" align="{S_CONTENT_FLOW_END}" valign="top" nowrap="nowrap">Потрачено:</td>
            <td><b class="gen"><script>document.write(minus);</script></b></td>
         </tr>
		 </br>
         <tr>
            <td class="gen" align="{S_CONTENT_FLOW_END}" valign="top" nowrap="nowrap">Штраф:</td>
            <td><b class="gen"><script>document.write(bans);</script></b></td>
         </tr>
		 </br>
         <tr>
            <td class="gen" align="{S_CONTENT_FLOW_END}" valign="top" nowrap="nowrap">На счету:</td>
			<td><b class="gen"><script>document.write(money);</script></b></td>
         </tr>
</br>
И вывод значений не получается:
Вот что в результате я вижу в профиле:
Заработано: 0.0 - не верно
Бонус: 0 - верно (значение не задавал)
Потрачено: 0 - верно (значение не задавал)
Штраф: 0 - верно (значение не задавал)
На счету: - не верно

Что неправильного в коде?

Аватара пользователя
Distructor
Администратор
Сообщения: 1607
Зарегистрирован: 28.12.2009
<script>money = (('{POSTS}'/1.5).toFixed(1));</script>
не тоже самое что твое
<script>p_p = ('{postrow.POSTER_POSTS}'/1.5);</script>
т.е. при просмотре профиля переменной postrow нет. и тебе надо в коде добавить сначала передачу значения в шаблон а потом уже его обрабатывать

x00peR
Сообщения: 141
Зарегистрирован: 05.03.2011
Сделал так:

Код: Выделить всё

<script>p_p = ('{POSTS}'/1.5);</script>
		<script>p_t = ('{TOPICS}'/1.1);</script>
		<script>money = (p_p-parseFloat(bans)-parseFloat(minus)+p_t+parseFloat(bonus)).toFixed(1);</script>
		<script>m_p_t = (p_p+p_t).toFixed(1);</script>
и так:

Код: Выделить всё

<tr>
            <td class="gen" align="{S_CONTENT_FLOW_END}" valign="top" nowrap="nowrap">На счету:</td>
			<td><b class="gen"><script>document.write(money);</script></b></td>
         </tr>
И так не работает, значение money почему то не выводится.
А если сделать так,

Код: Выделить всё

<tr>
<td class="gen" align="{S_CONTENT_FLOW_END}" valign="top" nowrap="nowrap">На счету:</td>
<td><b class="gen"><script>document.write((p_p-parseFloat(bans)-parseFloat(minus)+p_t+parseFloat(bonus)).toFixed(1));</script></b></td>
 </tr>
То все работает, тогда нет смысла в переменной money
<script>p_p = ('{POSTS}'/1.5);</script>
<script>p_t = ('{TOPICS}'/1.1);</script>
<script>money = (p_p-parseFloat(bans)-parseFloat(minus)+p_t+parseFloat(bonus)).toFixed(1);</script>
<script>m_p_t = (p_p+p_t).toFixed(1);</script>
А как сделать чтобы значение money выводилось? И вообще как будет правильнее: выводить money или вместо переменной указать (p_p-parseFloat(bans)-parseFloat(minus)+p_t+parseFloat(bonus)).toFixed(1)?

-- добавлено 23 янв 2012, 19:51 --

Подскажите что сделать правильно?:)

Аватара пользователя
Distructor
Администратор
Сообщения: 1607
Зарегистрирован: 28.12.2009
правильнее использовать переменную.
но из за чего не выводится по приведенному коду не понятно - нужна ссылка на страницу (и логин+пасс если не видно гостям)

x00peR
Сообщения: 141
Зарегистрирован: 05.03.2011
Мммм.. На денвере стоит это, пока что не могу показать. На днях постараюсь перенести на хостинг. Постараюсь в среду выложить данные для входа.

-- добавлено 03 июн 2012, 13:26 --

Код:

Код: Выделить всё

<script>
p_p = (('{postrow.POSTER_POSTS}'/1.5).toFixed(1));
money = (p_p-bans-minus+parseInt(bonus)).toFixed(1);
document.write('<br /> <strong>Заработано:</strong>  '+p_p+' р.');
document.write('<br /> <strong>Выплачено:</strong> '+minus+' р.');
document.write('<br /> <strong>Бонус:</strong> <font color="#0040FF"><b>'+bonus+' р.</font></b>');
document.write('<br /> <strong>Штраф:</strong><font color="#FF0000"><b>'+bans+' р.</font></b>');
document.write('<br /> <strong>К выплате:</strong> <font color="#008000"><b>'+money+' р.</font></b>');
</script>
Вывод такой:

Код: Выделить всё

Заработано: 1168.7 р.
Выплачено: 0 р.
Бонус: 0 р.
Штраф:0 р.
К выплате: 1168.7 р.
Сделал так:

Код: Выделить всё

p_p = ((('{postrow.POSTER_POSTS}'+'{postrow.POSTER_TOPICS}')/1.5).toFixed(1));
Вывод стал такой:

Код: Выделить всё

Заработано: 1168821.3 р.
Выплачено: 0 р.
Бонус: 0 р.
Штраф:0 р.
К выплате: 1168821.3 р.
Количество созданных тем у меня 232. Вывод должен был быть такой: 1323 А вместо этого выводится: 1168821.3 р.
В чем ошибка?

-- добавлено 03 июн 2012, 13:27 --

Тьфу ёмоё...
Вот так надо было :)
p_p = ((({postrow.POSTER_POSTS}+{postrow.POSTER_TOPICS})/1.5).toFixed(1));

Ответить