Foros del Web » Creando para Internet » Sistemas de gestión de contenidos »

Necesito ayuda con el sistema de votación de mi web

Estas en el tema de Necesito ayuda con el sistema de votación de mi web en el foro de Sistemas de gestión de contenidos en Foros del Web. El sistema de votación de mi web provoca el aumento de consumo de CPU de mi hosting. El problema viene cuando intento mostrar la lista ...
  #1 (permalink)  
Antiguo 23/02/2008, 10:06
Avatar de ldp
ldp
 
Fecha de Ingreso: marzo-2005
Ubicación: Por fin, en mi nueva casa!
Mensajes: 617
Antigüedad: 19 años, 8 meses
Puntos: 3
Exclamación Necesito ayuda con el sistema de votación de mi web

El sistema de votación de mi web provoca el aumento de consumo de CPU de mi hosting.

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

Última edición por ldp; 23/02/2008 a las 10:41
  #2 (permalink)  
Antiguo 24/02/2008, 14:37
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 23 años
Puntos: 655
Re: Necesito ayuda con el sistema de votación de mi web

Trasladado de BD a PHP. Favor no poner código de programación en BD.

Función de la sección de Base de Datos
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #3 (permalink)  
Antiguo 25/02/2008, 06:21
Avatar de ldp
ldp
 
Fecha de Ingreso: marzo-2005
Ubicación: Por fin, en mi nueva casa!
Mensajes: 617
Antigüedad: 19 años, 8 meses
Puntos: 3
Re: Necesito ayuda con el sistema de votación de mi web

Cita:
Iniciado por BrujoNic Ver Mensaje
Trasladado de BD a PHP. Favor no poner código de programación en BD.

Función de la sección de Base de Datos
Pensé que el mysql tendrían más idea del problema. Pero tienes razón, la causa no es la BD, sino la forma de sacar la información.
  #4 (permalink)  
Antiguo 25/02/2008, 09:48
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Re: Necesito ayuda con el sistema de votación de mi web

Trasladado a Aplicaciones Prefabricadas.
  #5 (permalink)  
Antiguo 25/02/2008, 16:00
Avatar de ldp
ldp
 
Fecha de Ingreso: marzo-2005
Ubicación: Por fin, en mi nueva casa!
Mensajes: 617
Antigüedad: 19 años, 8 meses
Puntos: 3
Re: Necesito ayuda con el sistema de votación de mi web

La verdad es que preferiría que alguien me ayudara en vez de trasladarme el mensaje sin parar XDDD
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:00.