8768 sujets

Développement web côté serveur, CMS

Bonjour à tous. je suis entrain de créer un espace membre pour mes visiteurs et je voudrait y ajouter un système d'ami mas le problème est que je ne sais même pas comment débuter (ni dans la bdd ni dans le code).
En effet je voudrais que sur une page précise on affiche tous les membres inscrit (ça je sais le faire) avec un bouton "ajouter" et lorsque l'utilisateur clique sur le bouton on ajoute directement le membre à sa liste d'amis (si possible en AJAX).
Une deuxième page pourra être créer pour afficher tous les amis d'un membre.

Voilà un peut en quoi consiste mon problème. Si vous avez un tutoriels ou un script ou alors toutes autres idées pour résoudre ce problème sa m'arrangerais.

Merci Smiley smile
Niveau BDD il suffit d'avoir une table "amis" par exemple, avec deux ID, le premier pour le demandeur, et le deuxième pour celui ajouté. de ce fait Jean qui porte l'ID 1 choisi l'ami avec Paul qui porte l'ID 2 et Pierre qui porte l'ID 3, tu pourrais avoir structurellement parlant :

TB_AMIS
id_prio , id_am
1 , 2
1 , 3

et en ajax c'est pas compliquer, soit tu utilise du jquery soit du javascript pure et les object xmlhttp.

Edit :

Ou tu peux même créer pour chaque 'button' ajout un formulaire avec un champs hidden contenant l'ID en question du mec, et le formulaire tu force le submit en envoyant a chaque fois l'id caché à ton PHP qui ajoutera en base.
Modifié par JENCAL (22 Mar 2016 - 13:39)
Merci bien JENCAL mais je pense que cette façon n'est pas très appropriée.
En effet de cette manière si j'ai 50 membres et que chacun d'eux à 5 amis alors ma table aura
" 5 X 50 " lignes ce qui n'est pas trop bien à voir mais bon j'essayerais pour voir ce que ça donne.

Merci
Modifié par Dimtrovich (22 Mar 2016 - 21:53)
5x50 ligne, tu n'es pas encore dans le big data ne t'inquiète pas.. Smiley cligne
Modifié par JENCAL (23 Mar 2016 - 11:56)
Pour moi tu es obliger de passer par une table intermédiaire.

Soit tu restreins le nombre d'amis (genre 5) et tu rajoute dans ta table user 5 champs spécifique, soit tu passe par une table intermédiaire où il est possible d'ajouter autant de lignes que de possibilité d'amis...
Modifié par JENCAL (22 Mar 2016 - 16:16)
a écrit :
Soit tu restreins le nombre d'amis (genre 5) et tu rajoute dans ta table user 5 champs spécifique,


C'est une solution totalement contre-productive, et même pas forcément plus simple que la table spécifique.


La meilleure solution autant d'un point de vue simplicité que performances, c'est vraiment la table spécifique. ET pour te faire peur si 5x50 lignes te terrifie, si 1 et 2 sont tous deux amis l'un avec l'autre, c'est même plus efficace d'avoir deux ligne 1,2 et 2,1 plutôt que chercher à économiser, n'avoir qu'une seule ligne et être obligé de faire des requêtes compliquées contenant or ou union.


Plus sérieusement, ne t'inquiète pas pour le nombre de lignes. les bases de données sont faites pour ça, même MySQL qui est réputé être un peu le parent pauvre face à MSSQL, Postgresql ou Oracle ne voit aucun inconvénient à des tables contenant quelques millions de lignes.
QuentinC a écrit :


C'est une solution totalement contre-productive, et même pas forcément plus simple que la table spécifique.



Totalement d'accord. Mais il voulait connaître d'autres solutions... alors bon. et ce cas là je l'ai vu pleins de fois (même dans de grosse base de données)
Hello Smiley smile

la table en liaison pure id_membre id_ami est une des meilleures solutions.

Mais il existe aussi une autre solution pas forcément souple mais peut être plus simple ou pas.. enfin bref Smiley smile

la solution c'est le json Smiley smile

une table avec id_membre et json_amis
le json sera un array de tous les amis de la personne Smiley smile un simple champ text suffit pour stocker un bon million d'amis Smiley smile

bon ok après il faut le gérer (ajout suppression) mais ça reste simpliste Smiley cligne
et du coup pas hyper gourmand
Le JSON ça peut être bien aussi, c'est vrai, mais à condition qu'on ne souhaite pas faire de requête dessus. La moindre requête devient très vite problématique. Par exemple, pas de code SQL simple pour savoir combien X a d'amis, ou savoir si X est ami avec Y, ou savoir combien sont amis avec X. ET il n'y a pas de contrôle d'intégrité et de doublons.

Pour un truc aussi simple, je pense que ça n'en vaut pas la chandelle.

En gros, ça vaut la peine uniquement pour les données non statistiquées et non partagées, qui sont toujours utilisées conjointement aux autres données utilisateur et jamais en dehors.
QuentinC a écrit :
Le JSON ça peut être bien aussi, c'est vrai, mais à condition qu'on ne souhaite pas faire de requête dessus. La moindre requête devient très vite problématique. Par exemple, pas de code SQL simple pour savoir combien X a d'amis, ou savoir si X est ami avec Y, ou savoir combien sont amis avec X. ET il n'y a pas de contrôle d'intégrité et de doublons.

Pour un truc aussi simple, je pense que ça n'en vaut pas la chandelle.

En gros, ça vaut la peine uniquement pour les données non statistiquées et non partagées, qui sont toujours utilisées conjointement aux autres données utilisateur et jamais en dehors.

Tout à fait exact.
Il m'arrive cependant de stocker en base de données des blocs d'info sous forme textuelle, mais en utilisant XML.
Cette forme de stockage permet de retrouver une relative "requêtabilité" via XPath.
Rien à voir, bien entendu avec la puissance de SQL, mais la plupart de mes besoins ne requièrent pas, justement, cette puissance.
S'il vous plait les gars n'allez pas trop vite. Je ne suis pas un expert en programmation mais juste un passionné.
Lorsque vous parlez de JSON et autres sa m'embrouille un peu car je ne suis pas trop famillé avec ça.

De plus mon problème n'est pas seulement au niveau de la bdd mais aussi du code php.

Si quelqu'un pouvait avoir un tuto sur ça sa m'arrangerais.
Je ne connais pas de tuto "Création d'un systeme d'amis en PHP et MYSQL", par contre on retrouve des tutos facilement sur la création de forum / d'espace membres. Tu pourrais deja t'en inspirer..

Après tu recherche quelques choses de spécifiques, donc pose toi deux minutes (ou deux jours) sur un papier, met tes idées au clair sur "comment" procédé.

Le mieux est de commencer par analyser les tables dont tu as besoin, et ça tu l'a déjà une ebauche d'analyse dans ce sujet.

Ensuite essaye de remplir ces/cette table pour jouer avec des requêtes SQL.

Et pour finir développe en PHP avec PDO et utilise tes requêtes pour chercher dynamiquement les informations que le formulaires HTML t'aura envoyé.

Si tu as un problème au niveau du code, tu peux le posté dans ce forum pour qu'on discute du problème.
Modifié par JENCAL (24 Mar 2016 - 11:05)
JENCAL l'espace membre est déjà crée ce qu je veut c'est ajouter une nouvelle fonctionnalité à cet espace (le système d'ami) et je ne sais pas comment le faire.

J'ai fait des recherches sur Google mais je n'est obtenue aucun résultats donc je suis venu par ici pour voir si je trouverais des réponses à ce problème
Dimtrovich a écrit :
JENCAL l'espace membre est déjà crée ce qu je veut c'est ajouter une nouvelle fonctionnalité à cet espace (le système d'ami) et je ne sais pas comment le faire.

J'ai fait des recherches sur Google mais je n'est obtenue aucun résultats donc je suis venu par ici pour voir si je trouverais des réponses à ce problème

Bonjour,
Comme tu l'indiques toi-même, tu abordés la programmation ce qui signifie que tu doit "absorber" un certain nombre de technologies / techniques avant de pouvoir raisonnablement te lancer dans un développement spécifique.
On est tous passés par là...
Le problème du web en général, et dans ton cas en particulier, c'est qu'il met en jeu plusieurs domaines de compétences simultanés : HTML, CSS, PHP, SGBD, et la liste est loin d'être exhaustive.
JSon et XML ne sont que des formats de stockage de données qu'il faut éventuellement maîtriser en plus, selon les besoins.
Comme l'indiquent les commentaires précédents, je crois qu'il te faut procéder par étapes, en acquérant un niveau minimal en PHP d'abord, en HTML/CSS, puis en bases de données.
Y a déjà de quoi bien occuper ses journées...
Si tu n'as trouvé aucun script "sur étagère" après recherche sur Google, il est probable que ton besoin est spécifique.
Il est peu probable aussi qu'un intervenant sur le forum te fournisse ledit script intégralement rédigé et testé.
Non pas que toute aide te soit refusée, puisque c'est la base même du forum, mais là tu demandes un développement quasi complet.
Procèdes par étapes, donc, et nul doute que l'aide viendra au fur et à mesure, lorsque tu auras décomposé ce que tu veux en problèmes élémentaires appelant une réponse ponctuelle et précise.
je rejoins notre amis sepecat dans le sens où on t'a déjà donner pas mal d’éléments, comme la création de la dite table "amis" ou l'utilisation du format JSON (mais je pense que tu devrais rester dans le SQL classique pour cette problématique).

Il va falloir potasser maintenant sur plusieurs aspect, certaines aides existes pour aplatir tout ça comme UML et ces fameux diagramme permettant de bien cibler le processus d'ajout d'un ami (en découpant toutes tes taches).

Ensuite bien comprendre comment fonctionne tout ça. le formulaire HTML qui envois ces infos (d'où proviennent-elles(?)) au PHP qui lui même va communiquer avec la base de données via SQL/PDO...

Beaucoup de notion à apprendre si tu veux réaliser ton développement. Let's go.
Merci pour toutes ces réponses.
Je crois qu'on c'est pas compris. Je ne demandais pas des scripts prêts à l'emploi mais des tutoriels qui allaient m'expliquer posement ce qu'il faut faire.

Mais tant mieux car au moins là je sais un peut comment procéder (table sql) et donc je vais un peu cogiter Smiley ohwell pour réaliser ce projet et j'espère que j'y arriverais ;p

Merci à tous pour cette assistance et ces conseils

Smiley coucou
Si tu as développé quelque chose et que ton code à un problème tu peux toujours le poster par la suite dans un nouveau sujet pour demander de l'aide Smiley cligne
Modifié par JENCAL (24 Mar 2016 - 14:29)
a écrit :
Il m'arrive cependant de stocker en base de données des blocs d'info sous forme textuelle, mais en utilisant XML.


Chacun son truc. Perso je préfère éviter XML et le remplacer par JSON ou YAML quand c'est possible, pour au moins deux raisons :
* Meilleure lisibilité par un humain, vachement utile pour débugger
* JSON et YAML sont plus compacts que XML en espace de stockage
QuentinC a écrit :
Chacun son truc. Perso je préfère éviter XML et le remplacer par JSON ou YAML quand c'est possible, pour au moins deux raisons :
* Meilleure lisibilité par un humain, vachement utile pour débugger
* JSON et YAML sont plus compacts que XML en espace de stockage

JSon est parfait pour stocker des données "brutes", mais il n'est pas aussi complet que le format XML, outre la "requêtabilité" précitée avec XPath, sur deux points :
- un flux XML peut être validé avec XSD
- des annotations ou "processing instructions" peuvent être ajoutées sur les éléments XML
Si un échange de données est prévu entre deux systèmes, la validation XSD, ou via une DTD, est quasiment incontournable.
A ma connaissance, et sauf erreur bien entendu, je n'ai rien lu qui permette de penser que JSon soit "validable" ou puisse se voir adjoindre des annotations / instructions de traitement.
A titre d'exemple, les flux EAI / WBI reposent sur une description des objets métier stockée sous forme de schémas XSD + annotations et PI.
JSon, dans ce contexte là, n'aurait aucune utilité.
Ceci dit, je ne suis pas un inconditionnel de XML et les deux formats ont leur utilité, chacun dans un domaine précis.