Greenguy's Board


Go Back   Greenguy's Board > Programming & Scripting
Register FAQ Calendar Today's Posts

Reply
 
Thread Tools Search this Thread Rate Thread Display Modes
Old 2009-07-11, 11:46 PM   #1
A.J. Angel
And Lord, we are especially thankful for nuclear power, the cleanest, safest
energy source there is. Except for solar, which is just a pipe dream
 
Join Date: Sep 2008
Posts: 229
Arrow Need help from PHP gurus

Hopefully, one on this board may help me! It shouldn't be too complicated. Anyway, I'm trying to edit a rating script file to display the stars only and instead of having the total rating under it, I would like it to be in the TITLE tags. So far, it only works when the user hasn't rated yet. Once the user has rated, the rating stats doesn't appear anymore. The script is from this site. Any help would be much appreciated. Thank you!

Here is the full code:

PHP Code:
<?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="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="Rating: '.$current_rating.'/'.$units.' ('.$count.' '.$tense.' cast)" 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: '.$rating1.'/'.$units.' ('.$count.' '.$tense.' cast)';
      
$rater.='  </p>';
      
$rater.='</div>';
      
$rater.='</div>';
      return 
$rater;
 }
}
?>
And here is the code where the TITLE tags are located and that should be edited:

PHP Code:
           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="Rating: '.$current_rating.'/'.$units.' ('.$count.' '.$tense.' cast)" class="r'.$ncount.'-unit rater" rel="nofollow">'.$ncount.'</a></li>';
           } 
A.J. Angel is offline   Reply With Quote
Old 2009-07-12, 12:25 AM   #2
nate
I can now put whatever you want in this space :)
 
nate's Avatar
 
Join Date: Mar 2009
Location: Merica!
Posts: 543
I might try this hack first:

if(!$voted) { // if the user hasn't yet voted, draw the voting stars
$rater.='<li><a href="db.php?j='.$ncount.'&q='.$id.'&t='.$ip.'&c='.$units.'" title="Rating: '.$current_rating.'/'.$units.' ('.$count.' '.$tense.' cast)" class="r'.$ncount.'-unit rater" rel="nofollow">'.$ncount.'</a></li>';
}
else {
include ("db.php");
}


If my guess is right, after a person votes, they'll only see the stars.
__________________
Its just a jump to the left.

Last edited by nate; 2009-07-12 at 12:29 AM..
nate is offline   Reply With Quote
Old 2009-07-12, 04:41 PM   #3
A.J. Angel
And Lord, we are especially thankful for nuclear power, the cleanest, safest
energy source there is. Except for solar, which is just a pipe dream
 
Join Date: Sep 2008
Posts: 229
Quote:
Originally Posted by nate View Post
If my guess is right, after a person votes, they'll only see the stars.
Yeah, that's the case. I actually have a page set up here:

http://www.exquisiteangelz.com/ratings/

What I would like is that for both users who have rated and who have not rated, they only see the total ratings stats. This is because I would like to have the stars displayed alone with the stats appearing in the TITLE tags so it is displayed when the surfer hovers over the stars.

I have modified it with the following but once the surfer have voted, the stats don't appear when they hover over the stars.

PHP Code:
      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="Rating: '.$current_rating.'/'.$units.' ('.$count.' '.$tense.' cast)" class="r'.$ncount.'-unit rater" rel="nofollow">'.$ncount.'</a></li>';
           } 
A.J. Angel is offline   Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 03:56 AM.


Mark Read
Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
© Greenguy Marketing Inc