Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

BlackMix

[Função demorando um pouco]

Recommended Posts

Olá galera. vou mostrar as vocês uma função que eu faço umas comparações de votos que meus usuários

fazem no site.. quando um user entra numa página do perfil de outro a função pega todos os votos

que eles dois fazem no site e daí ela faz um calculo mostrando a compatibilidades entre eles dois..

 

A função funciona mas esses dias está demorando uns segundos.. tentei modificar ela mas não consegui lol

 

Talvez se modificar para apenas uma consulta no banco der certo mas tentei fazer com outra classe e não deu certo

 

Se alguém souber uma maneira melhor e eficiente de fazer esse calculo eu agradeço muito :(

function comparar_lista($uid,$amigo){
        $soma =false; 
	$uida = check($uid);
	$u    = check($amigo);
	
	$v1 = MiXDB::table('rating_ip_users')->select(array('u','item','voto'))->where('u',$uida);
				  $resul = $v1->get();
	
	foreach ($resul as $row) {

	$item     = check($row->item);
	$o2   = check($row->voto);

	$v2 = MiXDB::table('rating_ip_users')->select(array('u','item','voto'))->where('u','=',$u.' AND item ='.$item);
	$resu2 = $v2->get();
	foreach ($resu2 as $row2) {	
	  			  
	$item2     = check($row2->item);
	$o   = check($row2->voto);  
		
	if (!empty($v2)) {

	if ($item == $item2 && $v2->count()>5){
	
	$soma = ((10-($o - $o2))*10 + $soma);
   }
  }
				  
 }			  
}
		if (!empty($v2)) {
		if ($v2->count()>5){
		echo '<div class="graph">
		<strong class="bar" style="width:'.round($soma/$v1->count()).'%;">'.round($soma/$v1->count()).'%</strong></div><div class="clear"></div>  ';
		echo '<div class="clear"></div>';
		}
		else{
			echo '<div class="graph"><strong class="bar" style="width:0%;">0%</strong></div><div class="clear"></div>  ';
		}
		}
		else{
			echo '<div class="graph"><strong class="bar" style="width:0%;">0%</strong></div><div class="clear"></div>  ';
		}


}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvi ;)

function comparar_lista($uid,$amigo){
    global  $dbss;
    $soma = false; 
    $uida = check($uid);
    $u    = check($amigo);
	
	$v1 = MiXDB::query('SELECT a.u,a.item,a.voto as a,b.u,b.item,b.voto as b FROM 
	'.$dbss['prfx']."_rating_ip_users a INNER JOIN ".$dbss['prfx']."_rating_ip_users b  
	WHERE a.item = b.item AND (a.u = ?) AND (b.u = ?)", array($u, $uida));   
	   
	$resu = $v1->get();
	$i = 0;
	foreach ($resu as $row ) {$i++;	
	$soma = (((round(10 - check($row->b) + 10 - check($row->a), 1)))*20 + $soma); 		  
    }
	if ($i>5){
	echo '<div class="graph">
	<strong class="bar" style="width:'.round($soma/$i).'%;">'.round($soma/$i).'%</strong></div><div class="clear"></div>';
	echo '<div class="clear"></div>';
	}else{
	echo '<div class="graph"><strong class="bar" style="width:0%;">0%</strong></div><div class="clear"></div>';
   }
}

Falta só arrumar a maneira de somar correto mas vou tentar aqui..

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.