Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Рейтинг
 
 автор: uvajs   (27.07.2010 в 17:25)   письмо автору
 
 

Здравствуйте! Реализовал рейтинг, вот такая задача: подскажите пожалуйста, как сделать так, чтобы когда зарегистрированный пользователь оценил урок, чтобы для него форма исчезла? как сделать проверку?

  Ответить  
 
 автор: Гавриленко Дмитрий   (27.07.2010 в 17:38)   письмо автору
 
   для: uvajs   (27.07.2010 в 17:25)
 

В таблице с оценками какие поля?

  Ответить  
 
 автор: uvajs   (27.07.2010 в 18:21)   письмо автору
 
   для: Гавриленко Дмитрий   (27.07.2010 в 17:38)
 

>В таблице с оценками какие поля?

q_vote

rating

  Ответить  
 
 автор: oliss   (27.07.2010 в 19:00)   письмо автору
 
   для: uvajs   (27.07.2010 в 17:25)
 

Для данного урока (его id) + для данного юзера( его логин [ или его id ] в таблице поставить метку
после голосования перезагрузить страницу (обновить) или использовать аякс (чтоб не перегружать страницу)
проверить есть ли метка в таблице у данного юзера+данного урока
если есть ---скрыть форму

  Ответить  
 
 автор: uvajs   (16.08.2010 в 14:50)   письмо автору
 
   для: oliss   (27.07.2010 в 19:00)
 

При голосовании рейтинг выводит и лишние цифры : Рейтинг: 2.66666666667

подскажите пожалуйста, как убрать Рейтинг: 2.6 (6666666667) эту кучу?

  Ответить  
 
 автор: serenya1983   (16.08.2010 в 15:06)   письмо автору
 
   для: uvajs   (16.08.2010 в 14:50)
 


echo round(2.66666666,1);

  Ответить  
 
 автор: lElectroHardl   (16.08.2010 в 15:40)   письмо автору
 
   для: serenya1983   (16.08.2010 в 15:06)
 

Попросили убрать, а округлить.
Автор, для целей отсоединения есть
explode();

  Ответить  
 
 автор: uvajs   (16.08.2010 в 15:51)   письмо автору
 
   для: lElectroHardl   (16.08.2010 в 15:40)
 

>Попросили убрать, а округлить.
>Автор, для целей отсоединения есть
explode();


ничего не выводит...

  Ответить  
 
 автор: uvajs   (16.08.2010 в 15:47)   письмо автору
 
   для: serenya1983   (16.08.2010 в 15:06)
 

Спасибо конечно за подсказку, но мне нужно оставить 2 цифры к примеру 2,3 или 4,5 и тд. чтобы больше 2-х цифр не выводилось

  Ответить  
 
 автор: serenya1983   (16.08.2010 в 16:01)   письмо автору
 
   для: uvajs   (16.08.2010 в 15:47)
 

$st=2.666666;
echo substr($st,0,strpos($st,".")+3);

  Ответить  
 
 автор: uvajs   (16.08.2010 в 16:18)   письмо автору
 
   для: serenya1983   (16.08.2010 в 16:01)
 

>$st=2.666666;
>echo substr($st,0,strpos($st,".")+3);

Спасибо Вам огромное, помогло!

  Ответить  
 
 автор: uvajs   (16.08.2010 в 17:51)   письмо автору
 
   для: uvajs   (16.08.2010 в 16:18)
 

еще один вопрос, подскажи как выводить результат рейтинга в цикле? как здесь: http://ruseller.com/lessons.php?rub=32 выводятся уроки и соответственно звезды тоже, т.е. рейтинг

  Ответить  
 
 автор: serenya1983   (16.08.2010 в 17:54)   письмо автору
 
   для: uvajs   (16.08.2010 в 17:51)
 

а чём сложность вывода таких звёзд!?

  Ответить  
 
 автор: uvajs   (16.08.2010 в 18:05)   письмо автору
 
   для: serenya1983   (16.08.2010 в 17:54)
 

>а чём сложность вывода таких звёзд!?

этот скрипт я реализовал на сайте, и работает нормально. вот тока не могу никак выводит результат в цикле.

  Ответить  
 
 автор: serenya1983   (16.08.2010 в 18:16)   письмо автору
 
   для: uvajs   (16.08.2010 в 18:05)
 

А где хранится рейтинг?

  Ответить  
 
 автор: uvajs   (16.08.2010 в 18:20)   письмо автору
 
   для: serenya1983   (16.08.2010 в 18:16)
 

>А где хранится рейтинг?

в таблице data рейтинг (user_votez) и количество проголосовавших (user_num)

  Ответить  
 
 автор: uvajs   (16.08.2010 в 18:24)   письмо автору
 
   для: 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'>Рейтинг:&nbsp;</r>

  Ответить  
 
 автор: serenya1983   (16.08.2010 в 18:25)   письмо автору
 
   для: uvajs   (16.08.2010 в 18:20)
 

...вот тока не могу никак выводит результат в цикле
и где тут цикл?

  Ответить  
 
 автор: uvajs   (16.08.2010 в 18:45)   письмо автору
 
   для: 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'>Рейтинг:&nbsp;</r>&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;<span class='comment1'>Создан:  %s</span>&nbsp;&nbsp;|&nbsp;&nbsp;<span class='comment1'>Просмотров: %s</span>&nbsp;&nbsp;</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));
}

  Ответить  
 
 автор: serenya1983   (16.08.2010 в 19:04)   письмо автору
 
   для: 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] ... ";

Значение итогового рейтинга можно подсчитать в цикле (если вывод не постраничный), что избавит от лишнего запроса к БД!

  Ответить  
 
 автор: uvajs   (16.08.2010 в 19:13)   письмо автору
 
   для: serenya1983   (16.08.2010 в 19:04)
 

такой вариант не совсем подходит. посмотри как реализован этот скрипт и надеюсь, поймете!
http://ruseller.com/lessons.php?rub=32&id=467

  Ответить  
 
 автор: serenya1983   (16.08.2010 в 19:45)   письмо автору
 
   для: 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

  Ответить  
 
 автор: uvajs   (16.08.2010 в 20:34)   письмо автору
 
   для: 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'>Рейтинг:&nbsp;</r>&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;<span class='comment1'>Создан:  %s</span>&nbsp;&nbsp;|&nbsp;&nbsp;<span class='comment1'>Просмотров: %s</span>&nbsp;&nbsp;</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 заметки там уже выводится одинаковые результаты. подскажите как исправить? возможно дело в запросе но писать правильно его я не умею.

  Ответить  
 
 автор: serenya1983   (16.08.2010 в 20:45)   письмо автору
 
   для: uvajs   (16.08.2010 в 20:34)
 

Тот пример по которому делаете на сколько я понял сделан под один вывод!
с кодом где есть с JQuery помочь не могу, в него даже не хочу вникать!
Если Вы в цикле выводите несколько раз id='raiting_info' то у Вас получится несколько div с таким именем, может здесь ошибка!

  Ответить  
 
 автор: uvajs   (16.08.2010 в 20:53)   письмо автору
 
   для: serenya1983   (16.08.2010 в 20:45)
 

товарищи, прошу идеи на счет моего вопроса?

  Ответить  
 
 автор: uvajs   (17.08.2010 в 16:31)   письмо автору
 
   для: uvajs   (16.08.2010 в 20:53)
 

????

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования