El problema viene cuando intento mostrar la lista ordenada por votos, mientras que si está ordenada por nombre o fecha no hay problema.
Aquí dejo una captura de la BD:

rate_id, rate_table y rate_itemid definen el item que se votó (rate_id es el ID en esta tabla, rate_table es la tabla a la que pertenece el item y rate_itemid el ID que tiene en la tabla a la que pertenece).
rate_rating es el total de la suma de los votos (se vota del 1 al 10)
rate_votes es el total de votos (en este caso 2 personas han votado este item)
rate_voters son los ID de los usuarios que han votado (para que sólo puedan votar 1 vez)
No sé porque da problemas cuando lo único que tiene que hacer es dividir el campo "rate_rating" entre "rate_votes" y ordenarlo descendente.
Alguna idea?
EDITO: El CMS es e107. Si no me equivoco, este es el código que maneja los votos:
Código:
function getrating($table, $id, $userid=FALSE) {
//userid : boolean, get rating for a single user, or get general total rating of the item
$table = preg_replace('/\W/', '', $table);
$id = intval($id);
$sql = new db;
if (!$sql->db_Select("rate", "*", "rate_table = '{$table}' AND rate_itemid = '{$id}' ")) {
return FALSE;
} else {
$rowgr = $sql->db_Fetch();
if($userid==TRUE){
$rating = "";
$rateusers = explode(".", $rowgr['rate_voters']);
for($i=0;$i<count($rateusers);$i++){
if(strpos($rateusers[$i], chr(1))){
$rateuserinfo[$i] = explode(chr(1), $rateusers[$i]);
if($userid == $rateuserinfo[$i][0]){
$rating[0] = 0; //number of votes, not relevant in users rating
$rating[1] = $rateuserinfo[$i][1]; //the rating by this user
$rating[2] = 0; //no remainder is present, because we have a single users rating
break;
}
}else{
$rating[0] = 0; //number of votes, not relevant in users rating
$rating[1] = 0; //the rating by this user
$rating[2] = 0; //no remainder is present, because we have a single users rating
}
}
}else{
$rating[0] = $rowgr['rate_votes']; // $rating[0] == number of votes
$tmp = $rowgr['rate_rating'] / $rowgr['rate_votes'];
$tmp = (strpos($tmp,",")) ? explode(",", $tmp) : explode(".", $tmp);
$rating[1] = $tmp[0];
if(isset($tmp[1])){
$rating[2] = substr($tmp[1], 0, 1);
}else{
$rating[2] = "0";
}
}
return $rating;
}
}


