Código PHP:
Ver original
//Buscamos toda la data relacionada con los avances del usuario para su posterior uso $user_progress=$conexion->prepare("SELECT u.points AS puntos, u.level AS reputacion, FROM usuarios u WHERE u.id=? LIMIT 1"); $user_progress->bind_param('i',$user_id); $user_progress->execute(); $user_progress->store_result(); $user_progress->bind_result($points,$level); $user_progress->fetch(); //variables a usar $actual_value=$points; $max_value= 1000; //calculo del porcentaje de avance para alcanzar el siguiente nivel //Calculamos el nivel de reputacion del usuario y su avance basandonos en sus puntos actuales if ($actual_value>=1000 and $actual_value<3000) { $max_value= 3000; $percent = floor($actual_value*100/$max_value); $levelup=1; } elseif ($actual_value>=3000 and $actual_value<6000) { $max_value= 6000; $percent = floor($actual_value*100/$max_value); $levelup=2; } elseif ($actual_value>=6000 and $actual_value<9000) { $max_value= 9000; $percent = floor($actual_value*100/$max_value); $levelup=3; } elseif ($actual_value>=9000 and $actual_value<14000) { $max_value= 14000; $percent = floor($actual_value*100/$max_value); $levelup=4; } elseif ($actual_value>=14000 and $actual_value<18000) { $max_value= 18000; $percent = floor($actual_value*100/$max_value); $levelup=5; } elseif ($actual_value>=18000 and $actual_value<23000) { $max_value= 23000; $percent = floor($actual_value*100/$max_value); $levelup=6; } elseif ($actual_value>=23000 and $actual_value<28000) { $max_value= 28000; $percent = floor($actual_value*100/$max_value); $levelup=7; } elseif ($actual_value>=28000 and $actual_value<36000) { $max_value= 36000; $percent = floor($actual_value*100/$max_value); $levelup=8; } elseif ($actual_value>=36000 and $actual_value<50000) { $max_value= 50000; $percent = floor($actual_value*100/$max_value); $levelup=9; } elseif ($actual_value>=50000 and $actual_value<60000) { $max_value= 60000; $percent = floor($actual_value*100/$max_value); $levelup=10;} if ($level!=0) { //Subimos el nivel del usuario $update_level=$conexion->prepare("UPDATE usuarios SET level=? WHERE user=?"); $update_level->bind_param('is', $levelup, $username); $update_level->execute(); $update_level->close(); }
estoy implementando el siguiente codigo para lo que es llevar el control del nivel de reputacion que tienen los usuarios de mi web y sus avances en forma de porcentaje... (todo esto, es calculado en base a los puntos que posean)
el codigo funciona perfectamente, sin embargo... lo he hecho bajo lo que se, y lo considero un tanto manual y rustico si se quiere... hay alguna forma de simplificar lo que alli hice mediante el uso de ciclos?
y otra duda.... al subir de nivel me gustaria guardar dicho avance en una tabla llamada 'actividad' la cual ya he creado, el detalle esta en que no se como hacer la consulta de insercion SOLO y unicamente cuando un usuario avance de nivel...