Salut les gens je crée actuellement un blog et je voudrais crée un système de badges via admin on met le nom de l'user et le nom du badge puis sur la page profil de l'user sa affiche le badge mais je sais pas comment débuter.
Une table badge avec id, image ;)

16 réponses


Carouge10
Réponse acceptée

Bonjour,

Je ne vois pas l'intérêt de créer une table spécialement pour les badges si chaque user à un seul et unique badge associer à son profil.
Vous pouvez dans cette optique ajouter un champ dans votre table user puisque vous posséder le nom de l'utilisateur, à savoir :

  • Nom du badge (badge_name en varchar 255)
SwithFr
Réponse acceptée

Une tables badges avec id, url, user_id.
Puis sur la page profil, une petite fonction getBadge($user_id) qui récupère les bages de l'utilisateur et le tour est joué ;)

shinix
Réponse acceptée

Salut, si l'utilisateur peut avoir plusieurs badges je te conseil de créer une table badges avec les champs suivants :
id,
name,
logo.

Ensuite tu peux créer un champs dans ta table user du style "badges". Dedans tu peux y insérer les ids des badges en json du style {1,2,3}
et ensuite les afficher sur le profil.

J'espère t'avoir aider :)

SwithFr
Réponse acceptée

@shinix généralement on évite d'avoir plusieurs infos dans une colonne d'une table, non ? Donc mettre plusieurs id de badge dans une colonne c'est pas idéal. Du moins c'est ce que je pense.

Mon niveau de profesionnalisme étant ce qu'il est, il se peut fortement que je me trompe...

shinix
Réponse acceptée

@SquallX Exacte mais je trouve plus simple de tout stocker dans la base de donnée, ça évite d'avoir 10 badges affichés grace aux fonctions sur PHP, et 10 badges affichés depuis SQL.

De plus, si plus tard il veut compter les badges de chaque utilisateurs il va s'amuser à intégrer les fonctions directement dans le calcul. Tandis que les stocker directement en bdd, il n'y a plus de problème ^^.

@SwithFr : Ah bon ? Tu sors ça d'où ? Beaucoup de cms font comme cela ça évite dE surcharger la base de donnée et avec un json_encode et json_decode c'est facile et rapide.

j'y connais rien niv. json et j'ai pas envie d'apprendre pour ça

@shinix un prof de base de données m'avait dit ça un jour, j'ai toujours appliqué ^^

@SwithFr d'accord si par hasard tu as un lien expliquant la chose je suis preneur, c'est toujours intéressant de connaitre les bonnes pratiques à utiliser.

J'ai vu plusieurs CMS utilisant cette technique et je le fais moi-même pour certaine données (celle qui n'ont pas besoin d'être triée).

Pour intervenir sur le débat un json peut être approprié en effet, mais surtout pour de grosses données. Un système d'amis à la facebook par exemple.

Pour ma part, si les badges ne sont affichés que dans le profil je ne vois même pas l'intérêt de créer une table badges ou de rajouter un champ badges. il suffit simplement de vérifier si le membre remplit les conditions pour avoir tel ou tel badge ;)

Après ceci s'applique uniquement aux badges simples (50 messages, 100 messages, inscrit depuis 2 ans, etc.), pour les badges spécifiques comme ici (konami code et etc) et il faudra obligatoirement stocker l'info quelque part ;)

Oui comme je disais tout dépend des badges mis en place ;)

Pour des badges de "calcul" justement (messages, date inscription etc) je trouve (et ça n'engage que moi) qu'il est inutile de les stocker. Après pour les badges récompenses là c'est autre chose et je rejoins ton avis ;)

les gens moi je voudrais via le panel rentrer le pseudo de l'user et l'id du badge stockée dans la bdd sa l'envoie sur le profil. je les donne pdt les concours etc..

C'est donc des badges récompenses, donc oui suis l'idée proposée par shinix :)

j'y connais rien avec json :/

tu crées une table contenant tous tes badges du style :

  • id
  • name
  • image

une table users_badges

  • user_id
  • badge_id

ensuite tu fais un select des badges que possède l'utilisateur et tu stockes un json de ton résultat du style json_encode($result_array); que tu stockeras dans la table membres dans un champ u_badges ;)

Pour récupérer ces badges il te suffira de les sélectionner dans la table membres et d'appliquer un json_decode sur ce résultat ;)
Et enfin tu pourras sélectionner les badges dans la table badges avec un where badges.id IN ('La liste des ids récupérées')

C'est assez grossier comme explication désolé je suis assez pressé pour le coup mais j'ai pris le temps de te répondre ^^. C'est l'idée de base, à toi de creuser et/ou améliorer ça ;)

PS : La doc est ton amie
http://php.net/manual/fr/function.json-encode.php

pas bien compris mais j'vais trouver un système sans json