Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/07/2008, 14:42
dot
 
Fecha de Ingreso: julio-2008
Mensajes: 5
Antigüedad: 16 años, 9 meses
Puntos: 0
Ayuda con Page Rater

Hola! Soy nuevo en foros del web, y la verdad esta comunidad me ha sido de mucha ayuda innumerables veces. Estos dias he estado buscando un script de rating de web (votación por estrellas) y encontré este: Page Rater (http://tpvgames.co.uk/web/page_rater/)

El script en si me funciona perfecto, pero el gran problema es que no puedo conseguir que en el top de los mas votados aparezcan algunos resultados y no todos. Por ejemplo que aparezcan los 5 mas votados en lugar de todos los resultados disponibles...

El codigo del archivo top.php es:

Código PHP:
<?php
//function to generate top rated pages!
function top_rated($style1,$style2)
{
include(
'settings.php');
$novote=1;

$db=mysql_connect($db_host,$db_user,$db_pass);
    
mysql_select_db($db_name,$db);
    
//FIRST LETS GET THE PAGES
    
$sql="select * from ".$db_table."pages ";
    
$res=mysql_query($sql,$db);
    
$count=0;
    
    while (
$row=mysql_fetch_row($res))
        {
        
//page id : $row[0]
        
    //NOW LETS GET DATA INFORMATION!
        
$sql="select * from ".$db_table."rater WHERE PAGEID=".$row[0];
        
$res2=mysql_query($sql,$db);
        
$ratingsum=0;
        
$ratingcount=0;
        
        
        while (
$row2=mysql_fetch_row($res2))
            {
            
//do all the math
            
$ratingsum+=$row2[2];
            
$ratingcount+=1;
            }
        
        
//generate points and place into ARRAY
        
if (($ratingcount==0) || ($ratingsum==0))
        {
        
$score=0;
        }
        else
        {
        
$score=($ratingsum/$ratingcount);
        }
        
//$score=($ratingsum*$scoreb);
        
        
$top_array[]=array('link'=>$row[2],
                           
'name'=>$row[1],
                           
'score'=>$score,
                           
'id'=>$row[0],
                           
'ppl'=>$ratingcount);
        
        }
    
$order_arr =
  array(
   array(
'score','d'), // d means decending - swap for 'a' to see effect
   
array('ppl','d'),
  );

$sortedarray arfsort$top_array$order_arr);

    
    foreach (
$sortedarray as $key=>$value) {
    
$switch=0;
    foreach (
$value as $key=>$value2) {
        
        
        if (
$switch==0)
        {
        
//link
        
echo '<div style="'.$style1.'"><a href='.$value2.'>';
        }
        else if (
$switch==1)
        {
        
//name
        
echo $value2.'</a></div>';
        }
        else if (
$switch==2)
        {
        
//score
        //echo $value2.'<br>';
        
        
}
        else if (
$switch==3)
        {
        
//id
        
echo'<div style="'.$style2.'">';
        
show_rating($value2);
        }
        else
        {
        echo 
$value2.' votos.</div>';
        }
        if (
$switch==5) {$switch=0;} else { $switch+=1;}
        
    }
  }
}
        

function 
arfsort$a$fl ){
  
$GLOBALS['__ARFSORT_LIST__'] = $fl;
  
usort$a'arfsort_func' );
  return 
$a;
}

// extended to allow sort direction per field sorted against
function arfsort_func$a$b ){
  foreach( 
$GLOBALS['__ARFSORT_LIST__'] as $f ) {
   switch (
$f[1]) { // switch on ascending or descending value
     
case "d":
       
$strc strcmpstrtolower($b[$f[0]]), strtolower($a[$f[0]]) );
       if ( 
$strc != ){
         return 
$strc;
       }
     break;
     default:
       
$strc strcmpstrtolower($a[$f[0]]), strtolower($b[$f[0]]) );
       if ( 
$strc != ){
         return 
$strc;
       }
     break;
   }
  }
  return 
0;
}



?>
Si uso la función limit en mysql solo me muestra los primeros resultados de acuerdo al orden en que estan en la tabla y no de acuerdo a la cantidad de votos.

Desde ya gracias por la ayuda... :)