Помогите решить проблему с рейтингом DLE

123
KM
На сайте с 29.04.2013
Offline
7
#11
siv1987:
Потому что максимальный width для этих 5 звездочек это 80px (в стандартном шаблоне 85px). А у вас сколько ? 170px.

И где править эти 170? Стили я уже скидывал, там 85....

siv1987
На сайте с 02.04.2009
Offline
427
#12

В генерации рейтинга. Исходный код генерируеться в функции ShowRating

KM
На сайте с 29.04.2013
Offline
7
#13
siv1987:
В генерации рейтинга. Исходный код генерируеться в функции ShowRating

Файл functions стандартный, из дестрибутива:

function ShowRating($id, $rating, $vote_num, $allow = true) {
global $lang;

if( $rating AND $vote_num ) $rating = round( ($rating / $vote_num), 0 );
else $rating = 0;
$rating = $rating * 17;

if( !$allow ) {

$rated = <<<HTML
<div class="rating" style="float:left;">
<ul class="unit-rating">
<li class="current-rating" style="width:{$rating}px;">{$rating}</li>
</ul>
</div>
HTML;

return $rated;
}

$rated = <<<HTML
<div id='ratig-layer'><div class="rating" style="float:left;">
<ul class="unit-rating">
<li class="current-rating" style="width:{$rating}px;">{$rating}</li>
<li><a href="#" title="{$lang['useless']}" class="r1-unit" onclick="doRate('1', '{$id}'); return false;">1</a></li>
<li><a href="#" title="{$lang['poor']}" class="r2-unit" onclick="doRate('2', '{$id}'); return false;">2</a></li>
<li><a href="#" title="{$lang['fair']}" class="r3-unit" onclick="doRate('3', '{$id}'); return false;">3</a></li>
<li><a href="#" title="{$lang['good']}" class="r4-unit" onclick="doRate('4', '{$id}'); return false;">4</a></li>
<li><a href="#" title="{$lang['excellent']}" class="r5-unit" onclick="doRate('5', '{$id}'); return false;">5</a></li>
</ul>
</div></div>
HTML;

return $rated;
}

function ShortRating($id, $rating, $vote_num, $allow = true) {
global $lang;

if( $rating AND $vote_num ) $rating = round( ($rating / $vote_num), 0 );
else $rating = 0;
$rating = $rating * 17;

if( ! $allow ) {

$rated = <<<HTML
<div class="rating" style="float:left;">
<ul class="unit-rating">
<li class="current-rating" style="width:{$rating}px;">{$rating}</li>
</ul>
</div>
HTML;

return $rated;
}

$rated = "<div id='ratig-layer-" . $id . "'>";

$rated .= <<<HTML
<div class="rating" style="float:left;">
<ul class="unit-rating">
<li class="current-rating" style="width:{$rating}px;">{$rating}</li>
<li><a href="#" title="{$lang['useless']}" class="r1-unit" onclick="dleRate('1', '{$id}'); return false;">1</a></li>
<li><a href="#" title="{$lang['poor']}" class="r2-unit" onclick="dleRate('2', '{$id}'); return false;">2</a></li>
<li><a href="#" title="{$lang['fair']}" class="r3-unit" onclick="dleRate('3', '{$id}'); return false;">3</a></li>
<li><a href="#" title="{$lang['good']}" class="r4-unit" onclick="dleRate('4', '{$id}'); return false;">4</a></li>
<li><a href="#" title="{$lang['excellent']}" class="r5-unit" onclick="dleRate('5', '{$id}'); return false;">5</a></li>
</ul>
</div>
HTML;

$rated .= "</div>";

return $rated;
}
function userrating($id) {
global $db;

$row = $db->super_query( "SELECT SUM(rating) as rating, SUM(vote_num) as num FROM " . PREFIX . "_post_extras WHERE user_id ='{$id}'" );

if( $row['num'] ) $rating = round( ($row['rating'] / $row['num']), 0 );
else $rating = 0;
$rating = $rating * 17;

$rated = <<<HTML
<div class="rating" style="display:inline;">
<ul class="unit-rating">
<li class="current-rating" style="width:{$rating}px;">{$rating}</li>
</ul>
</div>
HTML;

return $rated;

}
siv1987
На сайте с 02.04.2009
Offline
427
#14
KillMa:
Файл functions стандартный, из дестрибутива:

угу, стандартный из дистрибутива.

Мне вот кстати интересно откуда здесь 170px если голосов 1? При одном голосе чтобы получить 170, рейтинг должен быть 10 (10/1*17=170). А должно быть 85, так как система пятибалльная 5/1*17 = 85. Вы бд или rating.php случаем не трогали?

KM
На сайте с 29.04.2013
Offline
7
#15
siv1987:
угу, стандартный из дистрибутива.
Мне вот кстати интересно откуда здесь 170px если голосов 1? При одном голосе чтобы получить 170, рейтинг должен быть 10 (10/1*17=170). А должно быть 85, так как система пятибалльная 5/1*17 = 85. Вы бд или rating.php случаем не трогали?

ajax rating.php ? он тоже стандартный. Хм, думаете проблема в БД? Не помню что бы я вносил туда какие нибудь изменения, хотя все возможно. Какие таблицы нужно править и какие строки? Какие в них должны быть значения?

Q8
На сайте с 02.08.2012
Offline
31
#16

мне кажется в БД неверно записаны значения общего рейтинга статьи и количества проголосовавших.

гляньте для любой проблемной новости в таблице *_post значения для rating и vote_num.

кстати, помнится Вы экспериментировали с отключением AJAX. не на этом сайте, случайно?

KM
На сайте с 29.04.2013
Offline
7
#17
q8888:
мне кажется в БД неверно записаны значения общего рейтинга статьи и количества проголосовавших.

гляньте для любой проблемной новости в таблице *_post значения для rating и vote_num.

кстати, помнится Вы экспериментировали с отключением AJAX. не на этом сайте, случайно?

Ajax я так и не стал отключать)

Вот таблица, и правда там проблема.

Отображает строки 0 - 3 ( 4 всего, Запрос занял 0.0001 сек.) [rating: 33 - 17]

Как править посоветуете? Я с мускулом не очень знаком...

Q8
На сайте с 02.08.2012
Offline
31
#18

Обнулить для каждой строки поля rating и vote_num. Просто заменив значения на 0. Потом пробуйте ставить рейтинги новостям и смотрите, что пишется в базу.

rating - сумма баллов оценки

vote_num - количество голосов

rating не должен превышать vote_num более, чем в 5 раз

KM
На сайте с 29.04.2013
Offline
7
#19
q8888:
Обнулить для каждой строки поля rating и vote_num. Просто заменив значения на 0. Потом пробуйте ставить рейтинги новостям и смотрите, что пишется в базу.
rating - сумма баллов оценки
vote_num - количество голосов
rating не должен превышать vote_num более, чем в 5 раз

У меня около 500 новостей...

KM
На сайте с 29.04.2013
Offline
7
#20

А можно ли, как то вырвать из БД только сами новости (без рейтинга), категории и вклеить их в чистую, стандартную БД? Если да, то как?

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

123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий