Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
904 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Système d'achievements/badges et statistiques

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Système d'achievements/badges et statistiques

n°2330365
Hig2
Posté le 12-03-2019 à 18:34:35  profilanswer
 

Salut!
 
Je suis en ce moment sur un projet de site web pour mes élèves. Un site qui propose des exercices de français, math, ... Le projet avance bien mais là je bloque. Pour motiver les troupes, je souhaite créer un système d'achievements ou de badges à débloquer (par exemple lorsque l'on fait tel score avec tel temps à tel exercice, ou que l'on s'est connecté plus de 50, ou encore que l'on a obtenu plus de 10 badges, etc.).
 
Pour cela, je compte créer deux tables:
 
* tbl_badges * --> Cette table contiendra tous les badges et comment les obtenir en gros.
  -id
  -name
  -description
  -condition_type (par exemple l'id d'un exercice, ou des mots-clés comme "connexion" ou autre)
  -condition_nb (le score à faire pour débloquer le badge ou le nombre de connexions nécessaire par exemple)
  -condition_time (le temps minimum pour débloquer le badge)
 
* tbl_badges_users * --> Une ligne signifie que le badge n°x a été débloqué par l'utilisateur n°y
  -id_badge
  -id_user
 
Mon problème est donc le suivant: comment garder en mémoire chaque action des utilisateurs? Il faut que je stocke tout un tas de statistiques pour chaque utilisateur: quels exercices ont été faits, avec quel score, avec quel temps, le nombre de connexions, etc. Et je ne vois pas comment créer cette table (que je pourrais appeler tbl_stats). D'ailleurs, une seule table suffit-elle? Cette table me servira aussi pour remplir une page de données statistiques que l'utilisateur pourra consulter.
Elle devra peut-être être dynamique car je vais ajouter des exercices au fur à mesure du temps.
 
Des idées? Merci!


---------------
----** Mon feed-back **----
mood
Publicité
Posté le 12-03-2019 à 18:34:35  profilanswer
 

n°2330378
rufo
Pas me confondre avec Lycos!
Posté le 13-03-2019 à 10:10:32  profilanswer
 

tbl_stats {
id_stat
id_user
type_stat (entier)
score
temps
id_lié
}
 
type_stat va te permettre de typer une statistique : est-ce qu'elle porte sur un nb de connexions à l'outil, sur un exo fait, sur un projet... Dans ces 2 derniers cas, le champ "id_lié" sera rempli avec l'ID de l'exo ou du projet (mais pas dans le cas de connexion à l'outil, pas d'objet à lier à la stat a priori).
Donc, avec la combinaison type_stat et id_lié, tu seras capable de lier ta stat à un objet (en plus de la lier à un utilisateur).
Le champ score et temps seront interprétés différemment en fonction du type de stat : pour un exo, ça sera le temps passé à faire l'exo et la note obtenue, pour les connexions, ça sera le nb de connexions et le temps passé sur le site.
 
L'idée est de faire ta table stats la plus générique possible.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2330382
Hig2
Posté le 13-03-2019 à 11:42:19  profilanswer
 

Merci te ta réponse ;)
Bonne idée, je vois comment faire. Par contre, type_stat serait un entier? Je me demande s'il ne serait pas plus clair pour moi de remplir avec un varchar (genre "connexion", "exercice", etc.) Je ne sais pas si c'est viable après dans le code...


---------------
----** Mon feed-back **----
n°2330385
rufo
Pas me confondre avec Lycos!
Posté le 13-03-2019 à 14:15:03  profilanswer
 

Ca prend plus de place et si à un moment tu veux remplacer le libellé par un autre, faut mettre à jour la BD.
En PHP, tu définis des constantes genre :
define('STAT_TYPE_CONNEXION', 1);
define('STAT_TYPE_EXO', 2);
 
Ainsi, dans ton code, ça reste propre et compréhensible puisque tu vas faire des comparaisons avec ces constantes genre :
if ($maVar == STAT_TYPE_EXO) {
...
}
 
Faire des comparaisons avec des chaînes, c'est plus hasardeux...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Système d'achievements/badges et statistiques

 

Sujets relatifs
Système de log de champs de BD mis à jourphp - script de récupération infos système
Programme simple pour récupérer informations système d'une machine linSystème de recommandation sur hébergeur mutualisé
Table ou achievements/succèsProjet de système à développer
Systeme de sessionsystème référentiel / masse vitesse et position relative.
[DM Code]en fait un système permettant de définir des nombres premiersModéliser notre système de fonctionnnement ou pas.
Plus de sujets relatifs à : Système d'achievements/badges et statistiques


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR