0 Пользователей и 1 Гость просматривают эту тему.
  • 5 Ответов
  • 281 Просмотров
*

smls

  • Осваиваюсь на форуме
  • 117
  • 7
Сам скрипт
Код
function rating_bar($id,$units='',$static='') { 

require('_config-rating.php'); // get the db connection info

//set some variables
$ip = $_SERVER['REMOTE_ADDR'];
if (!$units) {$units = 10;}
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_dbname.$rating_tableName WHERE id='$id' ")or die(" Error: ".mysql_error());

// insert the id in the DB if it doesn't exist already
if (mysql_num_rows($query) == 0) {
$sql = "INSERT INTO $rating_dbname.$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=($count==1)? "vote" : "votes"; //plural form votes/vote

// 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_dbname.$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;">Currently '.$rating2.'/'.$units.'</li>';
$static_rater[] .= '</ul>';
$static_rater[] .= '<p class="static">'.$id.'. Rating: <strong> '.$rating1.'</strong>/'.$units.' ('.$count.' '.$tense.' cast) <em>This is \'static\'.</em></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;">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="db.php?j='.$ncount.'&amp;q='.$id.'&amp;t='.$ip.'&amp;c='.$units.'" title="'.$ncount.' out of '.$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.='>'.$id.' Rating: <strong> '.$rating1.'</strong>/'.$units.' ('.$count.' '.$tense.' cast)';
      $rater.='  </p>';
      $rater.='</div>';
      $rater.='</div>';
      return $rater;
 }
}
Подключаю его в шаблоне компонента (joomla 2.5):
Код
<?php require('/rating/_drawrating.php'); ?>
<?php echo rating_bar('2id',5); ?>
Сам файл подключается, но то что внутри "function rating_bar" недоступно. Если вставить этот-же код в простой php файл, там всё работает, а в компоненте (в любом) не работает. Проблема я так понимаю в
Код
<?php echo rating_bar('2id',5); ?>
Как-то по другому для Joomla писать нужно. Как?
*

beliyadm

  • Профи
  • 8368
  • 1527
  • Севастополь == Россия
Проблема в require('_config-rating.php');
В подключаемой функции подключается еще один файл, и вот тут пути расходятся (пишите правильный путь из функции rating_bar до файла _config-rating.php)

P.S. использовать в движке стандартные mysql_query не стоит, перепишите функцию согласно стандартным API движка, там решены все базовые вопросы безопасности)
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb
*

smls

  • Осваиваюсь на форуме
  • 117
  • 7
_drawrating.php и _config-rating.php в одной папке лежат, но я пробовал и путь менять и вместо require('_config-rating.php'); содержимое этого скрипта вставлять. Не работает и ошибки не пишет.
*

beliyadm

  • Профи
  • 8368
  • 1527
  • Севастополь == Россия
Ошибок мы не видим, вы их не указали, путь подключения скрипта\файла нужно указывать от корня сервера.
Ошибки в админке нужно включить максимальные (общие настройки)
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb
*

smls

  • Осваиваюсь на форуме
  • 117
  • 7
в _config-rating.php указаны данные для подключения к БД, если закомментировать require('_config-rating.php'); тогда ошибка появляется "Error: Access denied for user ''@'localhost' (using password: NO)" видимо подключается к _config-rating.php когда не закомментировано.
Цитировать
использовать в движке стандартные mysql_query не стоит, перепишите функцию согласно стандартным API движка, там решены все базовые вопросы безопасности)
Не стоит только из соображений безопасности или может вообще не работать?
Цитировать
Ошибки в админке нужно включить максимальные (общие настройки)
Они включены, но Консоль отладки Joomla! не видна, всё обрывается после echo rating_bar('2id',5);
*

smls

  • Осваиваюсь на форуме
  • 117
  • 7
Проблема была в _config-rating.php
Код
$joomla_config = 'configuration.php';
require($joomla_config);
$jconfig = new JConfig();
Убрал первые  2 строчки и заработало в компоненте ...правда перестало работать в просто PHP скрипте.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Функция из модели в публичной части компонента в админке

Автор denism300

Ответов: 2
Просмотров: 153
Последний ответ 23.11.2016, 14:01:39
от denism300
Одна функция для изменения состояний нескольких параметров элемента

Автор denism300

Ответов: 7
Просмотров: 291
Последний ответ 22.10.2016, 16:49:46
от denism300
Функция округления вниз или отсечения дробных в less или чистом js

Автор AlekVolsk

Ответов: 7
Просмотров: 359
Последний ответ 21.02.2016, 12:00:29
от AlekVolsk
Функция mail() не работает

Автор Old_skorpin

Ответов: 6
Просмотров: 932
Последний ответ 08.08.2013, 21:13:33
от Aleks.Denezh