Форум русской поддержки Joomla!® CMS
03.12.2016, 00:09:57 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Не подключается функция из php скрипта

 (Прочитано 108 раз)
0 Пользователей и 1 Гость смотрят эту тему.
smls
Осваиваюсь на форуме
***

Репутация: +8/-1
Offline Offline

Сообщений: 109


« : 19.08.2016, 20:52:05 »

Сам скрипт
Код:
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
Профи
********

Репутация: +1566/-61
Offline Offline

Пол: Мужской
Сообщений: 8110


Севастополь == Россия


« Ответ #1 : 19.08.2016, 20:54:18 »

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

P.S. использовать в движке стандартные mysql_query не стоит, перепишите функцию согласно стандартным API движка, там решены все базовые вопросы безопасности)
Записан
smls
Осваиваюсь на форуме
***

Репутация: +8/-1
Offline Offline

Сообщений: 109


« Ответ #2 : 19.08.2016, 21:06:19 »

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

Репутация: +1566/-61
Offline Offline

Пол: Мужской
Сообщений: 8110


Севастополь == Россия


« Ответ #3 : 19.08.2016, 21:11:38 »

Ошибок мы не видим, вы их не указали, путь подключения скрипта\файла нужно указывать от корня сервера.
Ошибки в админке нужно включить максимальные (общие настройки)
Записан
smls
Осваиваюсь на форуме
***

Репутация: +8/-1
Offline Offline

Сообщений: 109


« Ответ #4 : 19.08.2016, 22:42:13 »

в _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
Осваиваюсь на форуме
***

Репутация: +8/-1
Offline Offline

Сообщений: 109


« Ответ #5 : 19.08.2016, 22:55:27 »

Проблема была в _config-rating.php
Код:
$joomla_config = 'configuration.php';
require($joomla_config);
$jconfig = new JConfig();
Убрал первые  2 строчки и заработало в компоненте ...правда перестало работать в просто PHP скрипте.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet