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 ;)
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 :
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é ;)
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 :)
@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...
@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.
@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..
tu crées une table contenant tous tes badges du style :
une table users_badges
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