|
|
|
| Здравствуйте! Реализовал рейтинг, вот такая задача: подскажите пожалуйста, как сделать так, чтобы когда зарегистрированный пользователь оценил урок, чтобы для него форма исчезла? как сделать проверку? | |
|
|
|
|
|
|
|
для: uvajs
(27.07.2010 в 17:25)
| | В таблице с оценками какие поля? | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(27.07.2010 в 17:38)
| | >В таблице с оценками какие поля?
q_vote
rating | |
|
|
|
|
|
|
|
для: uvajs
(27.07.2010 в 17:25)
| | Для данного урока (его id) + для данного юзера( его логин [ или его id ] в таблице поставить метку
после голосования перезагрузить страницу (обновить) или использовать аякс (чтоб не перегружать страницу)
проверить есть ли метка в таблице у данного юзера+данного урока
если есть ---скрыть форму | |
|
|
|
|
|
|
|
для: oliss
(27.07.2010 в 19:00)
| | При голосовании рейтинг выводит и лишние цифры : Рейтинг: 2.66666666667
подскажите пожалуйста, как убрать Рейтинг: 2.6 (6666666667) эту кучу? | |
|
|
|
|
|
|
|
для: uvajs
(16.08.2010 в 14:50)
| |
echo round(2.66666666,1);
|
| |
|
|
|
|
|
|
|
для: serenya1983
(16.08.2010 в 15:06)
| | Попросили убрать, а округлить.
Автор, для целей отсоединения есть | |
|
|
|
|
|
|
|
для: lElectroHardl
(16.08.2010 в 15:40)
| | >Попросили убрать, а округлить.
>Автор, для целей отсоединения есть
ничего не выводит... | |
|
|
|
|
|
|
|
для: serenya1983
(16.08.2010 в 15:06)
| | Спасибо конечно за подсказку, но мне нужно оставить 2 цифры к примеру 2,3 или 4,5 и тд. чтобы больше 2-х цифр не выводилось | |
|
|
|
|
|
|
|
для: uvajs
(16.08.2010 в 15:47)
| | $st=2.666666;
echo substr($st,0,strpos($st,".")+3); | |
|
|
|
|
|
|
|
для: serenya1983
(16.08.2010 в 16:01)
| | >$st=2.666666;
>echo substr($st,0,strpos($st,".")+3);
Спасибо Вам огромное, помогло! | |
|
|
|
|
|
|
|
для: uvajs
(16.08.2010 в 16:18)
| | еще один вопрос, подскажи как выводить результат рейтинга в цикле? как здесь: http://ruseller.com/lessons.php?rub=32 выводятся уроки и соответственно звезды тоже, т.е. рейтинг | |
|
|
|
|
|
|
|
для: uvajs
(16.08.2010 в 17:51)
| | а чём сложность вывода таких звёзд!? | |
|
|
|
|
|
|
|
для: serenya1983
(16.08.2010 в 17:54)
| | >а чём сложность вывода таких звёзд!?
этот скрипт я реализовал на сайте, и работает нормально. вот тока не могу никак выводит результат в цикле. | |
|
|
|
|
|
|
|
для: uvajs
(16.08.2010 в 18:05)
| | А где хранится рейтинг? | |
|
|
|
|
|
|
|
для: serenya1983
(16.08.2010 в 18:16)
| | >А где хранится рейтинг?
в таблице data рейтинг (user_votez) и количество проголосовавших (user_num) | |
|
|
|
|
|
|
|
для: uvajs
(16.08.2010 в 18:20)
| | js код
<?
$result99 = mysql_query("SELECT * FROM data WHERE cat='$cat'");
$myrow99 = mysql_fetch_array($result99);
?>
<script type="text/javascript">
$(document).ready(function(){
total_reiting = <?php $s = $myrow99['user_votez']; $d = $myrow99['user_num']; if($d<1){$s1 = $s;} else {$s1 = $s/$d;} echo substr($s1,0,strpos($s1,".")+2); ?> // итоговый ретинг
id_arc = <?php echo $myrow99['id'];?>; // id статьи
var star_widht = total_reiting*17 ;
$('#raiting_votes').width(star_widht);
$('#raiting_info r').append(total_reiting);
he_voted = $.cookies.get('article'+id_arc); // проверяем есть ли кука?
if(he_voted == null){
$('#raiting').hover(function() {
$('#raiting_votes, #raiting_hover').toggle();
},
function() {
$('#raiting_votes, #raiting_hover').toggle();
});
var margin_doc = $("#raiting").offset();
$("#raiting").mousemove(function(e){
var widht_votes = e.pageX - margin_doc.left;
if (widht_votes == 0) widht_votes =1 ;
user_votes = Math.ceil(widht_votes/17);
$('#raiting_hover').width(user_votes*17);
});
// отправка
$('#raiting').click(function(){
$('#raiting_info r, #raiting_info img').toggle();
$.get(
"raiting.php",
{id_arc: id_arc, user_votes: user_votes},
function(data){
$("#raiting_info r").html(data);
$('#raiting_votes').width((total_reiting + user_votes)*17/2);
$('#raiting_info r, #raiting_info img').toggle();
$.cookies.set('article'+id_arc, 123, {hoursToLive: 999}); // создаем куку
$("#raiting").unbind();
$('#raiting_hover').hide();
}
)
});
}
});
</script>
|
и код вывода:
<div id='raiting_star' class='raiting_star'>
<div id='raiting' class='raiting'>
<div id='raiting_blank' class='raiting_blank'></div>
<div id='raiting_hover' class='raiting_hover'></div>
<div id='raiting_votes' class='raiting_votes' style='width:68px'></div>
</div>
<div id='raiting_info' class='raiting_info'><img src='images/load.gif' width='12' height='12' alt='*'> <r class='rating1'>Рейтинг: </r>
|
| |
|
|
|
|
|
|
|
для: uvajs
(16.08.2010 в 18:20)
| | ...вот тока не могу никак выводит результат в цикле
и где тут цикл? | |
|
|
|
|
|
|
|
для: serenya1983
(16.08.2010 в 18:25)
| | >...вот тока не могу никак выводит результат в цикле
>и где тут цикл?
do
{
printf ("<div class='content3'>
<a href='lessons.php?cat=%s&id=%s'>
<img src='%s' class='mini_img' align='left' alt='*'></a>
<p class='h4'><a href='lessons.php?cat=%s&id=%s'>%s</a></p>
<p>Добавил: %s</p><br clear='left'>
<span>%s</span><br>
<div class='line_f'> </div>
<table class='author'>
<tr>
<td><div id='raiting_star' class='raiting_star'>
<div id='raiting' class='raiting'>
<div id='raiting_blank' class='raiting_blank'></div>
<div id='raiting_hover' class='raiting_hover'></div>
<div id='raiting_votes' class='raiting_votes' style='width:68px'></div>
</div>
<div id='raiting_info' class='raiting_info'><img src='images/load.gif' width='12' height='12' alt='*'> <r class='rating1'>Рейтинг: </r> | <span class='comment1'>Создан: %s</span> | <span class='comment1'>Просмотров: %s</span> </span></div></td>
</tr>
</table>
</div>
</div></div></div></div><br>",$myrow11["id"],$myrow1["id"],$myrow1["mini_img"],$myrow11["id"],$myrow1["id"],$myrow1["title"],$myrow1["author"],$myrow1["description"], $myrow1["date"],$myrow1["view"]);
}
while ($myrow1 = mysql_fetch_array($result1));
}
|
| |
|
|
|
|
|
|
|
для: uvajs
(16.08.2010 в 18:45)
| | Я бы посоветовал printf заменить на echo/print и данные $myrow1["id"],$myrow1... включать прямо в код что б можно было понять где что!
если у Вас в таблице храниться значение рейтинга, то выводится так же как и поле $myrow1["date"]
//допустим в $myrow1["rating"] хранится значение
echo " <div id='raiting_info' class='raiting_info'><img src='images/load.gif' width='12' height='12' alt='*'> <r class='rating1'>Рейтинг:$myrow1[rating] ... ";
|
Значение итогового рейтинга можно подсчитать в цикле (если вывод не постраничный), что избавит от лишнего запроса к БД! | |
|
|
|
|
|
|
|
для: serenya1983
(16.08.2010 в 19:04)
| | такой вариант не совсем подходит. посмотри как реализован этот скрипт и надеюсь, поймете!
http://ruseller.com/lessons.php?rub=32&id=467 | |
|
|
|
|
|
|
|
для: uvajs
(16.08.2010 в 19:13)
| | Понятно!
вот так должно работать!
Добавлено background:url(images/raitings.png); для #raiting
и no-repeat для #raiting_blank
<style type='text/css'>
#raiting { background:url(images/raitings.png);position:relative; height:16px; cursor:pointer; width:83px; float:left} /* Блок рейтинга*/
#raiting_blank, #raiting_votes, #raiting_hover {height:16px; position:absolute}
#raiting_blank { background:url(images/raitings.png) no-repeat; width:83px; } /* "Чистые" звездочки */
#raiting_votes {background:url(images/raitings.png) 0 -16px} /* Закрашенные звездочки */
#raiting_hover {background:url(images/raitings.png) 0 -32px; display:none} /* звездочки при голосовании */
#raiting_info {margin-left:100px}
</style>
<div id="raiting_star">
<div id="raiting">
<div id="raiting_blank" style='background-position:-16px -32px;'></div> <!--блок пустых звезд-->
<div id="raiting_hover"></div> <!--блок звезд при наведении мышью-->
<div id="raiting_votes"></div> <!--блок с итогами голосов -->
</div>
<div id="raiting_info"><h5></h5></div>
</div>
|
обратите внимение на строку: background-position:-16px -32px
-16px соответствует смещению на одну звезду влево (т.е. будет показано рейтинг 4 звезды)
Если хотите лучше разбираться забудте про jquery | |
|
|
|
|
|
|
|
для: serenya1983
(16.08.2010 в 19:45)
| | в таком варианте:
printf ("<div class='content3'>
<a href='lessons.php?cat=%s&id=%s'>
<img src='%s' class='mini_img' align='left' alt='*'></a>
<p class='h4'><a href='lessons.php?cat=%s&id=%s'>%s</a></p>
<p>Добавил: %s</p><br clear='left'>
<span>%s</span><br>
<div class='line_f'> </div>
<table class='author'>
<tr>
<td><div class='raiting_star'>
<div class='raiting'>
<div class='raiting_blank'></div>
<div class='raiting_hover'></div>
<div class='raiting_votes' style='width:68px'></div>
</div>
<div id='raiting_info' class='raiting_info'><img src='images/load.gif' width='12' height='12' alt='*'> <r class='rating1'>Рейтинг: </r> | <span class='comment1'>Создан: %s</span> | <span class='comment1'>Просмотров: %s</span> </span></div></td>
</tr>
</table>
</div>
</div></div></div></div><br>",$myrow11["id"],$myrow1["id"],$myrow1["mini_img"],$myrow11["id"],$myrow1["id"],$myrow1["title"],$myrow1["author"],$myrow1["description"], $myrow1["date"],$myrow1["view"]);
}
while ($myrow1 = mysql_fetch_array($result1));
}
|
и js
<?
$result99 = mysql_query("SELECT * FROM data WHERE cat='$cat'");
$myrow99 = mysql_fetch_array($result99);
?>
<script type="text/javascript">
$(document).ready(function(){
total_reiting = <?php $s = $myrow99['user_votez']; $d = $myrow99['user_num']; if($d<1){$s1 = $s;} else {$s1 = $s/$d;} echo substr($s1,0,strpos($s1,".")+2); ?> // итоговый ретинг
id_arc = <?php echo $myrow99['id'];?>; // id статьи
var star_widht = total_reiting*17 ;
$('#raiting_votes').width(star_widht);
$('#raiting_info r').append(total_reiting);
he_voted = $.cookies.get('article'+id_arc); // проверяем есть ли кука?
if(he_voted == null){
$('#raiting').hover(function() {
$('#raiting_votes, #raiting_hover').toggle();
},
function() {
$('#raiting_votes, #raiting_hover').toggle();
});
var margin_doc = $("#raiting").offset();
$("#raiting").mousemove(function(e){
var widht_votes = e.pageX - margin_doc.left;
if (widht_votes == 0) widht_votes =1 ;
user_votes = Math.ceil(widht_votes/17);
// обратите внимание переменная user_votes должна задаваться без var, т.к. в этом случае она будет глобальной и мы сможем к ней обратиться из другой ф-ции (нужна будет при клике на оценке.
$('#raiting_hover').width(user_votes*17);
});
// отправка
$('#raiting').click(function(){
$('#raiting_info r, #raiting_info img').toggle();
$.get(
"raiting.php",
{id_arc: id_arc, user_votes: user_votes},
function(data){
$("#raiting_info r").html(data);
$('#raiting_votes').width((total_reiting + user_votes)*17/2);
$('#raiting_info r, #raiting_info img').toggle();
$.cookies.set('article'+id_arc, 123, {hoursToLive: 999}); // создаем куку
$("#raiting").unbind();
$('#raiting_hover').hide();
}
)
});
}
});
</script>
|
на данный момент если в категории HTML есть 1 заметка то для нее выводится рейтинг нормально. а где в CSS 2 заметки там уже выводится одинаковые результаты. подскажите как исправить? возможно дело в запросе но писать правильно его я не умею. | |
|
|
|
|
|
|
|
для: uvajs
(16.08.2010 в 20:34)
| | Тот пример по которому делаете на сколько я понял сделан под один вывод!
с кодом где есть с JQuery помочь не могу, в него даже не хочу вникать!
Если Вы в цикле выводите несколько раз id='raiting_info' то у Вас получится несколько div с таким именем, может здесь ошибка! | |
|
|
|
|
|
|
|
для: serenya1983
(16.08.2010 в 20:45)
| | товарищи, прошу идеи на счет моего вопроса? | |
|
|
|
|
|
|
|
для: uvajs
(16.08.2010 в 20:53)
| | ???? | |
|
|
|