BlackMix 15 Denunciar post Postado Dezembro 5, 2015 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
BlackMix 15 Denunciar post Postado Dezembro 5, 2015 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