RockerOne
@RockerOne
Учусь верстать сайты

Как вывести переменную из функции?

Здравствуйте, уже создавал похожую тему, но вопрос задал не особо понятно, сейчас более осмысленно решил описать проблему, так как самостоятельно решить её не получается.

Такая задача. Есть скрипт звездного рейтинга. Выводятся на экран звездочки и числовое значение рейтинга. Есть переменная в которой хранится значение. Задача такая нужно вывести, только эту переменную. Картинка для примера, есть текстовая строчка, где выводится информация: Rating: 3.4, нужно вывести только число "3.4". Предположительно значение числа хранится в переменной $count.

16.png

Для вывода рейтинга подключается файл _drawrating.php , а за сам вывод отвечает строчка <?php echo rating_bar('id1',''); ?> ,id1 - это идентификатор голосования, который хранится в БД , которую можно вставить в то месте где нужно что бы отображался рейтинг.

Скрипт взял здесь: coderhs.com/archive/unratajax

Что нужно написать в этой строчке <?php echo rating_bar('id1',''); ?> что бы выводить не весь рейтинг, а только число?

Сам код файла _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.
--------------------------------------------------------- */
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
// see: http://www.masugadesign.com/the-lab/scripts/unobtrusive-ajax-star-rating-bar/#comment-121
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="voted">'.$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.='>Рейтинг машины: '.$rating1.' <strong class="rate-cifre">('.$count.'<strong class="ratelike"></strong>)</strong>';
      $rater.='  </p>';
      $rater.='</div>';
      $rater.='</div>';
      return $rater;
 }
}
?>


Добавлю: - Нужно что бы звездный рейтинг был в одном месте, а числовое значение еще выводить рейтинга в другом месте.
  • Вопрос задан
  • 600 просмотров
Пригласить эксперта
Ответы на вопрос 2
Astatroth
@Astatroth
Я тут случайно
Уберите все, что не нужно, кроме $rating1 из этой строки. html-форматирование можно оставить для красоты, если пожелаете.
$static_rater[] .= '<p class="voted">'.$id.'. Rating: <strong> '.$rating1.'</strong>/'.$units.' ('.$count.' '.$tense.' cast) <em>This is \'static\'.</em></p>';
Ответ написан
RockerOne
@RockerOne Автор вопроса
Учусь верстать сайты
Решение моей задачи:

После функции rating_bar, нужно вставить функцию приведенную ниже, в файле _drawrating.php вот этот код:

function rating_bar_number($id,$units='',$static='') { 
 
  require_once('_config-rating.php'); // get the db connection info
 
  // 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
  // see: http://www.masugadesign.com/the-lab/scripts/unobtrusive-ajax-star-rating-bar/#comment-121
  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
 
  $rating1 = @number_format($current_rating/$count,1);
  return $rating1;
}


И там где нужно только число вызываете так:

<?php echo rating_bar_number('id1',''); ?>

А где основной рейтинг:
<?php echo rating_bar('id1',''); ?>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы