sobachnik а что там в аяксовом звездочном рейтинге вобще делает цикл с ПОЛНОЙ выборкой из базы? я вот к чему
итак, вчера пропал у меня интернет и включили только сегодня. Чего я добилась: Сделала все-же рейтинг именно так как хотела, вот код: PHP: <? $result = mysql_query("SELECT * FROM video") or die(mysql_error()); while($row = mysql_fetch_array( $result )) { if ($row['video_count'] > 0) {$res_rate = $row['video_rate'] / $row['video_count'];} echo "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\"> <tr> <td width=\"30\" align=\"right\">".$row['video_id']."</td> <td align=\"center\">Проголосовали ".$row['video_count']." и фильм имеет ".$row['video_rate']." баллов</td> <td width=\"30\" align=\"right\"> </td> </tr> <tr> <td colspan=\"3\"><div class=\"basic\" data=\"".$res_rate."_".$row['video_id']."\"></div></td> </tr> </table>"; } ?> пояснение: условие if ($row['video_count'] > 0) {$res_rate = $row['video_rate'] / $row['video_count'];} вынуждена была создать, так как 0 на 0 не делится. обработчиком является файл jRating.php в котором я вставила следующий код: PHP: <? $sql = "update video set video_rate=video_rate+".$rate." where video_id=".$id.""; mysql_query( $sql); $sql = "update video set video_count=video_count+1 where video_id=".$id.""; mysql_query( $sql); ?> где $rate это балл а $id это уникальный код соответственно, ну и в video_count добавление +1 колличество голосов. Теперь чтоб доделать звездочный реетинг, осталось реализовать еще 2 задачи: 1. Разобраться чтоб голосовали всего 1 раз (я выбрала метод по IP так как с кукисами я не справлюсь точно) 2. Все-же победить чтоб звездочный реетинг можно было устанавливать по центру, что самое сложное для меня, так как это правится именно в аяксе: Реетинг имеет класс basic, который в свою очередь выглядит так: [js]<script type="text/javascript"> $(document).ready(function(){ $('.basic').jRating(); }); </script>[/js] и находится в jRating.jquery.js в котором очень много ненужного кода... разбиралась пол ночи, но не разобралась, листаю книжку. Содержимое jRating.jquery.js: [js]/************************************************************************ ************************************************************************* @Name : jRating - jQuery Plugin @Revison : 2.1 @Date : 26/01/2011 @Author: Surrel Mickael (www.myjqueryplugins.com - www.msconcept.fr) @License : Open Source - MIT License : http://www.opensource.org/licenses/mit-license.php ************************************************************************** *************************************************************************/ (function($) { $.fn.jRating = function(op) { var defaults = { /** String vars **/ bigStarsPath : 'jquery/icons/stars.png', // path of the icon stars.png smallStarsPath : 'jquery/icons/small.png', // path of the icon small.png phpPath : 'php/jRating.php', // path of the php file jRating.php type : 'big', // can be set to 'small' or 'big' /** Boolean vars **/ step:false, // if true, mouseover binded star by star, isDisabled:false, showRateInfo: true, /** Integer vars **/ length:5, // number of star to display decimalLength : 0, // number of decimals.. Max 3, but you can complete the function 'getNote' rateMax : 20, // maximal rate - integer from 0 to 9999 (or more) rateInfosX : -45, // relative position in X axis of the info box when mouseover rateInfosY : 5, // relative position in Y axis of the info box when mouseover /** Functions **/ onSuccess : null, onError : null }; if(this.length>0) return this.each(function() { var opts = $.extend(defaults, op), newWidth = 0, starWidth = 0, starHeight = 0, bgPath = ''; if($(this).hasClass('jDisabled') || opts.isDisabled) var jDisabled = true; else var jDisabled = false; getStarWidth(); $(this).height(starHeight); var average = parseFloat($(this).attr('data').split('_')[0]), idBox = parseInt($(this).attr('data').split('_')[1]), // get the id of the box widthRatingContainer = starWidth*opts.length, // Width of the Container widthColor = average/opts.rateMax*widthRatingContainer, // Width of the color Container quotient = $('<div>', { 'class' : 'jRatingColor', css:{ width:widthColor } }).appendTo($(this)), average = $('<div>', { 'class' : 'jRatingAverage', css:{ width:0, top:- starHeight } }).appendTo($(this)), jstar = $('<div>', { 'class' : 'jStar', css:{ width:widthRatingContainer, height:starHeight, top:- (starHeight*2), background: 'url('+bgPath+') repeat-x' } }).appendTo($(this)); $(this).css({width: widthRatingContainer,overflow:'hidden',zIndex:1,position:'relative'}); if(!jDisabled) $(this).bind({ mouseenter : function(e){ var realOffsetLeft = findRealLeft(this); var relativeX = e.pageX - realOffsetLeft; if (opts.showRateInfo) var tooltip = $('<p>',{ 'class' : 'jRatingInfos', html : getNote(relativeX)+' <span class="maxRate">/ '+opts.rateMax+'</span>', css : { top: (e.pageY + opts.rateInfosY), left: (e.pageX + opts.rateInfosX) } }).appendTo('body').show(); }, mouseover : function(e){ $(this).css('cursor','pointer'); }, mouseout : function(){ $(this).css('cursor','default'); average.width(0); }, mousemove : function(e){ var realOffsetLeft = findRealLeft(this); var relativeX = e.pageX - realOffsetLeft; if(opts.step) newWidth = Math.floor(relativeX/starWidth)*starWidth + starWidth; else newWidth = relativeX; average.width(newWidth); if (opts.showRateInfo) $("p.jRatingInfos") .css({ left: (e.pageX + opts.rateInfosX) }) .html(getNote(newWidth) +' <span class="maxRate">/ '+opts.rateMax+'</span>'); }, mouseleave : function(){ $("p.jRatingInfos").remove(); }, click : function(e){ $(this).unbind().css('cursor','default').addClass('jDisabled'); if (opts.showRateInfo) $("p.jRatingInfos").fadeOut('fast',function(){$(this).remove();}); e.preventDefault(); var rate = getNote(newWidth); average.width(newWidth); /** ONLY FOR THE DEMO, YOU CAN REMOVE THIS CODE **/ $('.datasSent p').html('<strong>idBox : </strong>'+idBox+'<br /><strong>rate : </strong>'+rate+'<br /><strong>action :</strong> rating'); $('.serverResponse p').html('<strong>Loading...</strong>'); /** END ONLY FOR THE DEMO **/ $.post(opts.phpPath,{ idBox : idBox, rate : rate, action : 'rating' }, function(data) { if(!data.error) { /** ONLY FOR THE DEMO, YOU CAN REMOVE THIS CODE **/ $('.serverResponse p').html(data.server); /** END ONLY FOR THE DEMO **/ /** Here you can display an alert box, or use the jNotify Plugin http://www.myqjqueryplugins.com/jNotify exemple : */ if(opts.onSuccess) opts.onSuccess(); } else { /** ONLY FOR THE DEMO, YOU CAN REMOVE THIS CODE **/ $('.serverResponse p').html(data.server); /** END ONLY FOR THE DEMO **/ /** Here you can display an alert box, or use the jNotify Plugin http://www.myqjqueryplugins.com/jNotify exemple : */ if(opts.onError) opts.onError(); } }, 'json' ); } }); function getNote(relativeX) { var noteBrut = parseFloat((relativeX*100/widthRatingContainer)*opts.rateMax/100); switch(opts.decimalLength) { case 1 : var note = Math.round(noteBrut*10)/10; break; case 2 : var note = Math.round(noteBrut*100)/100; break; case 3 : var note = Math.round(noteBrut*1000)/1000; break; default : var note = Math.round(noteBrut*1)/1; } return note; }; function getStarWidth(){ switch(opts.type) { case 'small' : starWidth = 12; // width of the picture small.png starHeight = 10; // height of the picture small.png bgPath = opts.smallStarsPath; break; default : starWidth = 23; // width of the picture stars.png starHeight = 20; // height of the picture stars.png bgPath = opts.bigStarsPath; } }; function findRealLeft(obj) { if( !obj ) return 0; return obj.offsetLeft + findRealLeft( obj.offsetParent ); }; }); } })(jQuery);[/js]
не могу добиться размещения реетинга по центру, сами звездочки смещаются... помогите плз, у меня уже сил нет.
я конешно хотел спросить совсем другое, но <div style="margin: 0 auto;"></div> <div style="text-align: center;"></div> попробуй то и то
уже незнаю что и делать... сохранять в html и показывать тут.... не поможет я даже видео небольшое сняла, вот, посмотрите, может это поможет и я наконец сделаю по центру эти звездочки
у меня мозг взорвался, реально D что за style="test" ? То что я пишу - должно работать, проблема в правильном применении. А хтмл код я уже просил выложить, не ужели это так сложно что проще сделать видео и в нем показать хрен знает чо?