[Liste d'amis] Créer des liens entre membres
JooS
Messages postés
2468
Date d'inscription
Statut
Membre
Dernière intervention
-
JooS Messages postés 2468 Date d'inscription Statut Membre Dernière intervention -
JooS Messages postés 2468 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Genre une liste d'amis, comme sur "Facebook" ou "Le Site du zero", j'ai pas trouver l'astuce pour créer des liens entre les membres ...
Pour ceux qui ne connaissent pas facebook :p ..
Exemple : A envoi une invitation a B, lorsque B accepte, ils deviennent alors amis, Z envoi une invitation a R et a A (ou d'autre), quand ces derniers acceptent, ils deviennent alors les amis de Z ... etc
Merci ...
Genre une liste d'amis, comme sur "Facebook" ou "Le Site du zero", j'ai pas trouver l'astuce pour créer des liens entre les membres ...
Pour ceux qui ne connaissent pas facebook :p ..
Exemple : A envoi une invitation a B, lorsque B accepte, ils deviennent alors amis, Z envoi une invitation a R et a A (ou d'autre), quand ces derniers acceptent, ils deviennent alors les amis de Z ... etc
Merci ...
A voir également:
- [Liste d'amis] Créer des liens entre membres
- Créer un lien pour partager des photos - Guide
- Liste déroulante excel - Guide
- Comment créer un groupe whatsapp - Guide
- Créer un compte google - Guide
- Créer un compte gmail - Guide
4 réponses
J'ai fait un test pour prouver que le nombre de couple d'amis est sans importance, le résultat est toujours donné très rapidement !
J'ai pour cela une table qui contient des couples d'iduser, indiquant ainsi des couples d'amis.
Ex : Le couple 404 <-> 1356 indique que 404 et 1356 sont amis.
Ce couple est bien évidemment unique et de cette façon le couple 1356 <-> 404 ne peut pas exister vu qu'il indique la même chose que le couple du dessus.
J'ai créé ainsi 100 000 couples liant 3000 users entre eux. Soit une moyenne de 33,33... amis par user.
J'ai pour cela une table qui contient des couples d'iduser, indiquant ainsi des couples d'amis.
Ex : Le couple 404 <-> 1356 indique que 404 et 1356 sont amis.
Ce couple est bien évidemment unique et de cette façon le couple 1356 <-> 404 ne peut pas exister vu qu'il indique la même chose que le couple du dessus.
J'ai créé ainsi 100 000 couples liant 3000 users entre eux. Soit une moyenne de 33,33... amis par user.
Salut, je ferai une table listedamis
avec basiquement 3 champs
-Expediteur de la demande d' amis
-Destinataire de la demande
-Comfirmé (pour savoir si le destinataire a accepté ou pas)
Disons que tu as que 2 membres A et B
A fait une demande d' amis à B
B recoit l' invitation et l' accepte. En cliquant sur Accepter l' invitation, tu en profites pour passer la valeur "Yes" au champ Comfirmé.
Ensuite pour afficher la liste sur un profil
Tu récupères le pseudo du profil que tu visites
Si par exemple A va sur le profil de B, tu récupères le pseudo de B($B)
Et là tu lances une requete du style.
Select * from listedamis where Expediteur == B OR Destinataire == B
tu récupéres les variables Expediteur et Destinataire
Et tu fais juste une petite condition
if ($expediteur==$B){$amis="$destinataire";}
if ($destinataire==$B){$amis="$expediteur";}
Voilà le schema que je ferai. C est juste pour te donner une idée
Si tu comprends le principe, tu deverais pouvoir coder tout ca.
avec basiquement 3 champs
-Expediteur de la demande d' amis
-Destinataire de la demande
-Comfirmé (pour savoir si le destinataire a accepté ou pas)
Disons que tu as que 2 membres A et B
A fait une demande d' amis à B
B recoit l' invitation et l' accepte. En cliquant sur Accepter l' invitation, tu en profites pour passer la valeur "Yes" au champ Comfirmé.
Ensuite pour afficher la liste sur un profil
Tu récupères le pseudo du profil que tu visites
Si par exemple A va sur le profil de B, tu récupères le pseudo de B($B)
Et là tu lances une requete du style.
Select * from listedamis where Expediteur == B OR Destinataire == B
tu récupéres les variables Expediteur et Destinataire
Et tu fais juste une petite condition
if ($expediteur==$B){$amis="$destinataire";}
if ($destinataire==$B){$amis="$expediteur";}
Voilà le schema que je ferai. C est juste pour te donner une idée
Si tu comprends le principe, tu deverais pouvoir coder tout ca.
Je pense pas qu' on puisse faire plus optimisé surtout si tu comptes avoir des listes d' amis de fou
Dans ta table utilisateur, tu rajoutes un champ "amis"
Et à chaque fois qu' une demande d' amis est acceptée,
Tu fais une mise à jour du champ "amis" en ajoutant le pseudo avec un symbole de séparation une virgule par exemple
de telle manière à donner à la longue pour l'utilisateur B
dans le champ "amis"
A, C, D, E, F, G,
Et dans le profil tu récupères cette liste et tu la traites avec des fonctions explode()
et/ou preg_replace()
Et à chaque fois qu' une demande d' amis est acceptée,
Tu fais une mise à jour du champ "amis" en ajoutant le pseudo avec un symbole de séparation une virgule par exemple
de telle manière à donner à la longue pour l'utilisateur B
dans le champ "amis"
A, C, D, E, F, G,
Et dans le profil tu récupères cette liste et tu la traites avec des fonctions explode()
et/ou preg_replace()
Je sélectionne, pour 100 users choisit aléatoirement, leurs amis respectifs.
Ce qui donne, pour chaque user une requete du type :
select * from table where iduser1 = 100 OR iduser2 = 100;
Je stocke le temps d"exécution de la requête, puis je fais la moyenne de ces temps d'exécution pour les 100 users.
D'abord le code :
Bilan : La moyenne approche de 0.05 s. Autant dire rien du tout :/
Alors même si tu passes à 200 000 couples d'amis, ou 6000 amis ou 100 amis de moyenne pour chaque user, ce temps restera toujours risiblement faible...
Comment est ce que tu peut être sure que les couples sont uniques, tu n'a même pas fait de teste pour éviter les doublons !!!
Quant a la dernière requête, ben essaye avec 500 000 couples pour voir ?!!!
Un site dont le nombre de membre est 10 000, et ou en moyenne chaque membre ait 1000 amis ... contiendra (si mes calculs sont juste) en final 9 990 000 de couples ... donc c'est beaucoup pour un simple affichage ...
Je te fait cet après midi, une simulation avec 50 000 utilisateurs et 130 amis en moyenne par personne, qui est la moyenne sur facebook. Soit 6 500 000 lignes.
Et je suis déjà certain du résultat...
Moyenne : 1,80 s par recherche.
Franchement, ça reste plus que correct (ça commence déjà à être de la bd de fou), surtout que par exemple tu n'as qu'à faire cette recherche une fois à la connexion de chaque user et placé le résultat dans une variable de session...
Et j'attends avec impatience le jour où ton site atteindra 50 000 utilisateurs.