Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Рейтинг
цитата
03/01/15 в 00:34
 Wicher
Есть простой скрипт рейтинга со звездочками. Вставляется на страницу так:
<?require ($_SERVER['DOCUMENT_ROOT'].'/Путь_до_папки_со_скриптом/ratings.php');?>
В шаблон смарти я вставляю его через тег {php}
{php}
require ($_SERVER['DOCUMENT_ROOT'].'/Путь_до_папки_со_скриптом/ratings.php');
{/php}
Но вместо звездочек рейтинга на странице лезет такая ошибка:
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id='/view/nazvanie_rolika' at line 1
С чем это связано? Что за проблема?
P.S. Все пути в конфигах скрипта правильные , таблица в базе создана.
Всем рейтинг за помощь!
цитата
03/01/15 в 00:58
 Дартаньян
Wicher: id='/view/nazvanie_rolika' там точно должны быть / ?
цитата
03/01/15 в 01:06
 dizziness
ratings.php использует синтаксис mysql, который не подходит к твоей версии mysql, посмотри руководство своей версии мускуля и поправь синтаксис запроса в скрипте в соответствии со своей версией мускуля. как то так.
цитата
03/01/15 в 02:14
 Wicher
Дартаньян: да все верно , это ошибка выводит вторую часть урл страницы (без домена)

dizziness: Вот полностью содержимое файла ratings.php
<?php
#This work RatingIt 2.1 Ajax
require_once(dirname(__FILE__).'/_config-rating.php');
if ($_SERVER["REQUEST_URI"]=="/".$wwprating."/ratings.php") exit('This work RatingIt 2 Ajax');
require_once(dirname(__FILE__).'/rating.css.php');
require_once(dirname(__FILE__).'/_drawrating.php');
if (!@$zz){
$zz=$_SERVER["REQUEST_URI"];
$zz=str_replace('?','zzzSPECzzz',$zz);
$zz=str_replace('=','zzzSPEC2zzz',$zz);
$zz=str_replace('&','zzzSPEC3zzz',$zz);
}
?>
<script type="text/javascript" language="javascript" src="/<?php echo $wwprating; ?>/behavior.js"></script>
<script type="text/javascript" language="javascript" src="/<?php echo $wwprating; ?>/rating.js.php"></script>
<div id="container<?php echo rand(0,99999); ?>"><?php echo rating_bar($zz,@$sizerating,@$viewrating); ?></div>
Хз че с ним сука не так...
цитата
03/01/15 в 02:29
 dizziness
посмотреть бы это _drawrating.php

тут запись в мускуль скорее всего, в этом файле.

ну и версию mysql на сервере
цитата
03/01/15 в 02:31
 Дартаньян
Wicher: чувак а другие файлики тут ведь нету mysql_query.
цитата
03/01/15 в 09:25
 Wicher
Версия sql 5.1.73
Вот файл _drawrating.php


<?php
/*
Page:           _drawrating.php
Created:        Aug 2006
Last Mod:       Mar 18 2007
The function that draws the rating bar.
---------------------------------------------------------
ryan masuga, masugadesign.com
ryan@masugadesign.com
Licensed under a Creative Commons Attribution 3.0 License.
http://creativecommons.org/licenses/by/3.0/
See readme.txt for full credit details.
--------------------------------------------------------- */
require_once(dirname(__FILE__).'/_config-rating.php'); // get the db connection info
@header("Content-type: text/html; charset=$codername");
function rating_bar($id,$units='',$static='') {
global $rating_up,$rating_dbname,$rating_tableName,$rating_unitwidth,$wwprating,$rating_filestar,$rating_up,$lang,$wwprating;

$id=mysql_real_escape_string($id);
   
//set some variables
$ip = getipz();
if (!$units) {$units = $rating_up;}
if (!$static) {$static = FALSE;}

// get votes, values, ips for the current rating bar
$query=mysql_query("SELECT total_votes, total_value, used_ips FROM $rating_tableName WHERE id='$id' ")or die(" Error: ".mysql_error());


// insert the id in the DB if it doesn't exist already
// see: http://www.masugadesign.com/the-lab/scripts/unobtrusive-ajax-star-r…omment-121
if (mysql_num_rows($query) == 0) {
$sql = "INSERT INTO $rating_tableName (`id`,`total_votes`, `total_value`, `used_ips`) VALUES ('$id', '0', '0', '')";
$result = mysql_query($sql);
}

$numbers=mysql_fetch_assoc($query);


if ($numbers['total_votes'] < 1) {
   $count = 0;
} else {
   $count=$numbers['total_votes']; //how many votes total
}
$current_rating=$numbers['total_value']; //total number of rating added together and stored

$tense=num2word($count, array($lang['up1'], $lang['up2'], $lang['up3']));

// determine whether the user has voted, so we know how to draw the ul/li
$voted=mysql_num_rows(mysql_query("SELECT used_ips FROM $rating_tableName WHERE used_ips LIKE '%".$ip."%' AND id='".$id."' "));

// now draw the rating bar
$rating_width = @number_format($current_rating/$count,2)*$rating_unitwidth;
$rating1 = @number_format($current_rating/$count,1);
$rating2 = @number_format($current_rating/$count,2);


if ($static == 'static') {

      $static_rater = array();
      $static_rater[] .= "\n".'<div class="ratingblock">';
      $static_rater[] .= '<div id="unit_long'.$id.'">';
      $static_rater[] .= '<ul id="unit_ul'.$id.'" class="unit-rating" style="width:'.$rating_unitwidth*$units.'px;">';
      $static_rater[] .= '<li class="current-rating" style="width:'.$rating_width.'px;">'.$lang['currently'].' '.$rating2.'/'.$units.'</li>';
      $static_rater[] .= '</ul>';
      $static_rater[] .= '<p class="static">'.$lang['rating'].': <strong> '.$rating1.'</strong>/'.$units.' ('.$count.' '.$tense.' )</p>';
      $static_rater[] .= '</div>';
      $static_rater[] .= '</div>'."\n\n";

      return join("\n", $static_rater);


} else {

      $rater ='';
      $rater.='<div class="ratingblock">';

      $rater.='<div id="unit_long'.$id.'">';
      $rater.='  <ul id="unit_ul'.$id.'" class="unit-rating" style="width:'.$rating_unitwidth*$units.'px;">';
      $rater.='     <li class="current-rating" style="width:'.$rating_width.'px;">'.$lang['currently'].' '.$rating2.'/'.$units.'</li>';

      for ($ncount = 1; $ncount <= $units; $ncount++) { // loop from 1 to the number of units
           if(!$voted) { // if the user hasn't yet voted, draw the voting stars
              $rater.='<li><a href="/'.$wwprating.'/db.php?j='.$ncount.'&amp;q='.$id.'&amp;t='.$ip.'&amp;c='.$units.'" title="'.$ncount.' '.$lang['iz'].' '.$units.'" class="r'.$ncount.'-unit rater" rel="nofollow">'.$ncount.'</a></li>';
           }
      }
      $ncount=0; // resets the count

      $rater.='  </ul>';
      $rater.='  <p';
      if($voted){ $rater.=' class="voted"'; }
      $rater.='> '.$lang['rating'].': <strong> '.$rating1.'</strong>/'.$units.' ('.$count.' '.$tense.')';
      $rater.='  </p>';
      $rater.='</div>';
      $rater.='</div>';
      return $rater;
}
}
?>

Я на свой делитанский взгляд ниче особенного не вижу вроде...
цитата
03/01/15 в 13:13
 dizziness
Код:
// get votes, values, ips for the current rating bar
$query=mysql_query("SELECT total_votes, total_value, used_ips FROM $rating_tableName WHERE id='$id' ")or die(" Error: ".mysql_error());


id='$id' -> id=$id


попробуй так изменить
цитата
03/01/15 в 17:33
 Ailk
может в базе ид выставлен как интовое значение,а ты туда суешь тексты. Посмотри внимательно. Эта раз.
И скрипт 2006 года, староват однако. нагуглить щас свеженький скрипт думаю не проблема.

И ваще, отпиши лемону, он вроде делал эти звездочки для смарта, но в платной версии.
цитата
03/01/15 в 19:36
 Wicher
Ailk писал:
может в базе ид выставлен как интовое значение,а ты туда суешь тексты. Посмотри внимательно. Эта раз.

Да там явно непонятка вокруг этого id. Я нагуглил этот же скрипт но более ранний и сырой. Его удалось заставит звезды выводить на страницу , но работает всеравно криво. На нажатие по звезде рефрешит страницу и не записывает в бвзу ((
Цитата:

И скрипт 2006 года, староват однако. нагуглить щас свеженький скрипт думаю не проблема.

Вериш нет - заипался искать. Нормального решения нет даже за деньги..
Цитата:

И ваще, отпиши лемону, он вроде делал эти звездочки для смарта, но в платной версии.

Дак я готов и оплатить работу. Незнаю про кого ты говоришь только..
цитата
03/01/15 в 19:55
 Yacc
Wicher писал:
я готов и оплатить работу.

Так и дай объявление в соответствующем разделе, мол так и так, хочу звездочки, плачу столько-то. И будет тебе нормальное решение. Тем более, что там работы на пару часов.

Вообще не понял зачем тебе на сидже рейтинг? И еще странно видеть как люди спокойно запускают на рабочих сайтах непонятный код. Не боишься что у тебя там уже пара троянов на серваке живет? icon_smile.gif
цитата
03/01/15 в 20:08
 Wicher
Yacc: рейтинг чисто для красоты и соответствия. Даже выборки видео не надо для рейтинга. Едиственное что нужно что бы по ip не давал голосовать повторно. И вот такого то решения не могу найти.. (
Ну на счет запускать не запускать что то на серваке - дело такое - че только не бывало за долгие годы работы smail101.gif
цитата
03/01/15 в 20:18
 Yacc
Я так сразу и понял, что рейтинг фэйковый. Тогда тебе пхп, база и прочее вообще не нужно. Делать все скриптом на клиенте, факт голосования отмечать в куках.
цитата
03/01/15 в 20:28
 Wicher
Yacc писал:
отмечать в куках.

Тоже не могу найти. Куча вариантов под конкретные двиги , а вот универсального не вижу. То ли не интересно это никому толи плохо ищу...
цитата
03/01/15 в 21:18
 Дартаньян
Wicher: как минимум тебе стоит написать сюда
цитата
04/01/15 в 09:34
 Yacc
https://github.com/search?l=JavaScript&q=rating&s=stars

Выбирай любой, куки прикрутить 15 минут.
цитата
05/01/15 в 18:54
 SixFingers
Wicher писал:
Вериш нет - заипался искать. Нормального решения нет даже за деньги..
Тут посмотри


Эта страница в полной версии