D
D
Den Belzarayn2016-01-29 08:10:18
PHP
Den Belzarayn, 2016-01-29 08:10:18

How to remove a variable from a function?

Hello, I already created a similar topic, but the question was not very clear, now I decided to describe the problem more meaningfully, since I can’t solve it myself.
Such a task. There is a star rating script. Asterisks and a numeric rating value are displayed. I have a variable that holds a value. The task such needs to be deduced, only this variable. An example picture, there is a text line where information is displayed: Rating: 3.4, you need to display only the number "3.4". Presumably the value of the number is stored in the $count variable.
16.png
To display the rating, the _drawrating.php file is connected, and the line <?php echo rating_bar('id1',''); ?> ,id1 is the vote id stored in the database,
The script was taken from here: coderhs.com/archive/unratajax
What should be written in this line <?php echo rating_bar('id1',''); ?> to display not the entire rating, but only the number?
The _drawrating.php file code itself:

<?php
/*
Page:           _drawrating.php
Created:        Aug 2006
Last Mod:       Mar 18 2007
The function that draws the rating bar.
--------------------------------------------------------- 
ryan masuga, masugadesign.com
[email protected] 
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;
 }
}
?>

I will add: - It is necessary that the star rating be in one place, and the numerical value should still display the rating in another place.

Answer the question

In order to leave comments, you need to log in

2 answer(s)
D
Dmitry, 2016-01-29
@Astatroth

Remove everything you don't need except $rating1 from this line. HTML formatting can be left for beauty if you wish.

$static_rater[] .= '<p class="voted">'.$id.'. Rating: <strong> '.$rating1.'</strong>/'.$units.' ('.$count.' '.$tense.' cast) <em>This is \'static\'.</em></p>';

D
Den Belzarayn, 2016-01-30
@RockerOne

The solution to my problem:
After the rating_bar function, you need to insert the function below, in the _drawrating.php file, this code:

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;
}

And where you need only a number, call like this:
And where is the main rating:
<?php echo rating_bar('id1',''); ?>

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question