[RESOLU] Followers & Following quelle méthode ?

Eléphanteau du PHP | 30 Messages

16 avr. 2017, 08:46

Bonjour tout le monde,

Pour mon projet fictif d'entrainement je cherche à faire un système de followers/following. Je me retrouve un peu bloqué voici ce que j'ai en tête pour le moment.

Il faudrait une table followers relié par une clé étrangère à la table Users, qui stock l'id de la personne suivi ainsi que l'id de la personne qui a cliqué sur follow. Cependant j'ai du mal à imaginer le processus et le fonctionnement de ces tables.

Notamment si la personne suit plusieurs personnes comment je peux regrouper un ensemble de donnée dans un seul champ ?

Je suis un peu dans le flou merci à vous pour vos futures réponses.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

16 avr. 2017, 15:57

Bonjour,

Voici le principe :
1) Une table users, avec dedans 1 ligne par utilisateur et dans chaque champ les caractéristiques propre à son profil :
- id_user (ID unique que tu peux mettre en autoincrement pour qu'il sopit affecté automatiquement par ta base de données)
- pseudo
- email

2) Une table users_followers qui va stocker les relations entre utilisateurs avec seulement 2 champs :
- id_user_principal
- id_user_follower


Et ensuite par exemple, on va imaginer le scénario suivant :
3 utilisateurs : Pierre, Paul et Jacques et : Pierre ne suis personne mais est suivi par Paul et Jacques, Jacques suit Paul.

Cela donnerai donc :

users
users_followers

Code : Tout sélectionner

1 | 2 1 | 3 2 | 3


Si tu veux tous les followers d'un utilisateur dont tu connais l'ID :
SELECT * FROM users_followers WHERE id_user_follower=[id_user]
Si tu veux tous les utilisateurs suivis par un utilisateur dont tu connais l'ID :
SELECT * FROM users_followers WHERE id_user_principal=[id_user]
Et tu peux effectuer une jointure SQL pour récupérer les pseudos directement plutôt que leurs ID
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 30 Messages

16 avr. 2017, 16:06

Merci de ta réponse, mais du coup en faisant la table risque de devenir très vite blindé no ? Il n'est pas possible pour chaque user de créer un champ following et d'y ajouter les ids de toutes les personnes qu'il suit ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

17 avr. 2017, 00:14

C'est la façon la + optimisée de le faire.
La table users_followers va avoir beaucoup de lignes (= d'enregistrements) mais en terme de stockage il n'y a que des ID sur lesquels tu vas mettre un index donc ça va être très rapide à interroger.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 30 Messages

17 avr. 2017, 10:07

D'accord je vois, merci je vais appliquer ça dans ce cas.

Et je fais la même chose pour le système de following du coup ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

17 avr. 2017, 19:39

Et je fais la même chose pour le système de following du coup ?
Ma proposition est optimisée car justement elle gère les deux en même temps.
Relis mon post et notamment les 2 dernières lignes ;)
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 30 Messages

17 avr. 2017, 19:42

Ah oui exact je n'avais pas fait attention.

Je te remercie de ton aide c'est sympa.