système de classement à partir de points
Posté : 29 août 2016, 09:34
Salut,
Sur mon site on peut s'inscrire et donc enregistrer dans la bdd sur une table membre. Dans cette table il y a une ligne points. Cette ligne correspond à une valeur int qui donne le nombre de points que l'utilisateur à gagner en participant à la vie du site.
Voilà la fonction qui attribut les point :
Comment faire pour donner un rang (classement) à l'utilisateur sachant que celui-ci vari tout le temps. Si je clique sur une page "classement" comment faire pour obtenir son rang à ce moment précis ainsi que les utilisateurs (mettons les 5) qui ont plus de points et qui en ont moins. Je suppose qu'il doit exister une méthode avec un peut de bon sql et de php, mais je ne voit pas comment faire quelque chose d'optimisé si il y a beaucoup d’utilisateur.
Sur mon site on peut s'inscrire et donc enregistrer dans la bdd sur une table membre. Dans cette table il y a une ligne points. Cette ligne correspond à une valeur int qui donne le nombre de points que l'utilisateur à gagner en participant à la vie du site.
Voilà la fonction qui attribut les point :
Code : Tout sélectionner
function point($pseudo, $pt)
{
include('modele/connexion_sql.php');
//on cherche si le pseudo existe
$sql = $bdd->prepare('SELECT pseudo FROM membre WHERE pseudo = ?');
$sql->execute(array($pseudo));
$req = $sql->fetch();
if ($req['pseudo']) {
//on selectionne le nombre de point
$sql = $bdd->prepare('SELECT points FROM membre WHERE pseudo = ?');
$sql->execute(array($pseudo));
$req = $sql->fetch();
//on met tout sous forme de nombre entier
$point = (int) $req['points'];
$pt = (int) $pt;
//on ajoute les points gagner
$point += $pt;
//on sauve le tout dans la bdd
$sql = $bdd->prepare('UPDATE membre SET points = ? WHERE id = ?');
$sql->execute(array($point, $pseudo));
}
}