par
VaN » 14 févr. 2006, 12:20
Bonjour à tous,
Je viens de finir ma fonction me permettant d'attribuer à chaque utilisateur un rank, lors de l'affichage d'un topic :
function define_rank($user_id)
{
// on selectionne la date d'inscription, et on calcule le nombre de jours inscrits : $nbj
$sql = "SELECT user_date
FROM frm_users
WHERE frm_users.user_id = '".$user_id."'";
$query = mysql_query($sql) OR die("Erreur : ".mysql_error());
$result = mysql_fetch_array($query);
$date_cut = explode(' ', $result['user_date']);
$date_cut = explode('-', $date_cut[0]);
$current_date = time();
$date_in_sec = mktime(0, 0, 0, $date_cut['2'], $date_cut['1'], $date_cut['0']);
$ecart = $current_date - $date_in_sec;
$nbj = floor($ecart / 3600 / 24);
// on fait une moyenne du nombre de posts par jour : $mpj
$sql_2 = "SELECT COUNT(post_id) AS posts_nb
FROM frm_posts
WHERE frm_posts.post_user_id = '".$user_id."'";
$query_2 = mysql_query($sql_2) OR die("Erreur : ".mysql_error());
$result_2 = mysql_fetch_array($query_2);
$mpj = round(($result_2['posts_nb'] / $nbj),2);
if($mpj > 3)
$mpj = 3;
$rank = $mpj * $nbj;
$sql = "SELECT rank_title
FROM frm_ranks
WHERE rank_score < '".$rank."'";
$query = mysql_query($sql);
$result = mysql_fetch_array($query);
$rank = $result['rank_title'];
return $rank;
}
Le petit probleme que je rencontre se trouve dans la dernière requete, je ne sais pas comment la formuler pour aller chercher le rank maximum, mais qui soit inférieur au nombre de points requis pour l'avoir.
en gros j'ai :
Rank 01 -> 10 points
Rank 02 -> 20 points
Rank 03 -> 40 points
Un utilisateur qui possède 25 points devrait etre Rank 2, or avec ma syntaxe, il se retrouve avec le rank 01. Comment dois-je formuler ma requete ?
Bonjour à tous,
Je viens de finir ma fonction me permettant d'attribuer à chaque utilisateur un rank, lors de l'affichage d'un topic :
[php]function define_rank($user_id)
{
// on selectionne la date d'inscription, et on calcule le nombre de jours inscrits : $nbj
$sql = "SELECT user_date
FROM frm_users
WHERE frm_users.user_id = '".$user_id."'";
$query = mysql_query($sql) OR die("Erreur : ".mysql_error());
$result = mysql_fetch_array($query);
$date_cut = explode(' ', $result['user_date']);
$date_cut = explode('-', $date_cut[0]);
$current_date = time();
$date_in_sec = mktime(0, 0, 0, $date_cut['2'], $date_cut['1'], $date_cut['0']);
$ecart = $current_date - $date_in_sec;
$nbj = floor($ecart / 3600 / 24);
// on fait une moyenne du nombre de posts par jour : $mpj
$sql_2 = "SELECT COUNT(post_id) AS posts_nb
FROM frm_posts
WHERE frm_posts.post_user_id = '".$user_id."'";
$query_2 = mysql_query($sql_2) OR die("Erreur : ".mysql_error());
$result_2 = mysql_fetch_array($query_2);
$mpj = round(($result_2['posts_nb'] / $nbj),2);
if($mpj > 3)
$mpj = 3;
$rank = $mpj * $nbj;
$sql = "SELECT rank_title
FROM frm_ranks
WHERE rank_score < '".$rank."'";
$query = mysql_query($sql);
$result = mysql_fetch_array($query);
$rank = $result['rank_title'];
return $rank;
}[/php]
Le petit probleme que je rencontre se trouve dans la dernière requete, je ne sais pas comment la formuler pour aller chercher le rank maximum, mais qui soit inférieur au nombre de points requis pour l'avoir.
en gros j'ai :
Rank 01 -> 10 points
Rank 02 -> 20 points
Rank 03 -> 40 points
Un utilisateur qui possède 25 points devrait etre Rank 2, or avec ma syntaxe, il se retrouve avec le rank 01. Comment dois-je formuler ma requete ?