Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/07/2006, 11h31   #1
Membre du Club
 
Inscription : juillet 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 85
Points : 55
Points : 55
Par défaut [Conception] Une liste d'amis

Bonjour à tous,

je developpe actuellement mon premier site en php.

Je cherche comment créer et afficher une liste d'amis pour chaques membres inscrits sur ce site.

J'hesite donc à créer une table qui enregistra l'id du membre et les id des amis ou alors gérer cette liste comme un panier virtuel.

Si je choisis de faire une table,il va falloire une requete pour chaque ami (récupérer le pseudo,etc...) chaque fois que je charge une page qui affiche ces info (c'est à dire tout le temps à paritr du moment où on est connecté).
-->ralentissement du site (bien que je sois incapable de prevoir la charge que cela represente... )

Si j'enregistre les infos sur la session, je dois faire en sorte qu'elle ne soit jamais supprimée.
-->si 10 000 membre = 10 000 sessions toujours actives

Voila mon dilemme...

Si vous avez une idée ou juste un conseil à me donner,je suis tout ouï.

Merci
Attilius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 11h48   #2
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Citation:
Envoyé par Attilius
Si j'enregistre les infos sur la session, je dois faire en sorte qu'elle ne soit jamais supprimée.
Quand l'utilisateur quitte le site la session associée se termine, tu peux pas les conserver tout le temps, je me trompe
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 11h58   #3
Membre du Club
 
Inscription : juillet 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 85
Points : 55
Points : 55
Non,tu as tout à fait raison....

...peut-etre que si je fais une copie du fichier... ...non, c'est nul comme idée

je cherche quand même une alternative aux multiples requetes nécessaires pour la solution de la table.

Merci de vos réponses.
Attilius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 12h01   #4
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Tu peux faire un mix.

Quand l'utilisateur se connecte, tu charges sa liste d'amis grâce à une requête avec jointure (donc une seule requête pour tout récupérer), et tu peux stocker cette liste dans une variable de session.
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 12h02   #5
Membre confirmé
 
Avatar de griese
 
Inscription : juin 2006
Messages : 646
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juin 2006
Messages : 646
Points : 243
Points : 243
Salut,
A ta place, je créerai une table avec deux champs. Une avec l'ID de l'utilisateur, et une avec l'ID de son ami. Ensuite tu n'as plus qu'a faire cette requete pour récupérer la liste des amis.
Code :
1
2
3
4
 
SELECT ID_ami
FROM T_ami
WHERE ID_user="user";
La valeur user, peut etre récupérer par une variable de session.
__________________
(\ _ /)
(='.'=) Voici Lapinou. Aidez le à conquérir le monde
(")-(") en le reproduisant.

http://mosfootball.over-blog.com
griese est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 12h15   #6
Membre du Club
 
Inscription : juillet 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 85
Points : 55
Points : 55
Merci de vos réponses....

griese : ma table est construite de cette manière mais avec 15 champs pour les 15 id des amis...

Jwhite:
....excellente idée. Je vais de ce pas faire un essai.J'ai juste un doute sur le fait de pouvoir ecrire un tableau de 15 colonnes dans la session..mais bon,on vera...

Encore merci
Attilius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 12h18   #7
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Le nombre d'amis est fixé à 15 et ne peut pas bouger ?!?
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 12h22   #8
Membre du Club
 
Inscription : juillet 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 85
Points : 55
Points : 55
J'ai décidé de façon arbitraire que le max d'amis serait 15...
mais en fait je l'ai fait surtout parce que je me vois pas comment faire autrement...
Attilius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 12h27   #9
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Bah dans tu fais une table comme l'a dit griese dans laquelle tu as deux champs id_user et id_ami. C'est sûr que ça fait une table avec pas mal d'enregistrements mais bon...
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 14h25   #10
Membre confirmé
 
Avatar de griese
 
Inscription : juin 2006
Messages : 646
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juin 2006
Messages : 646
Points : 243
Points : 243
Pour faire ton tableau je te propose ceci.
Déja tu fais une table comme je te l'ai montré c'est à dire :
T_ami(ID_user, ID_ami); ID_user étant la clé primaire.
De plus, tu dois surement demander à l'utilisateur de se connecter quelque part sur ton site. Dans ce cas, tu récupère cette valeur dans une variable de session. Appelons cette variable $_SESSION['login']. Ensuite pour afficher la liste d'ami de l'utilisateur connecté, tu met ceci :
En supposant que le ID_user correspondent au login saisie par la personne.
Code :
1
2
3
4
5
 
$query=mysql_query("SELECT ID_ami FROM T_ami WHERE ID_user='".$_SESSION['login']."';");
while ($ligne=mysql_fetch_object($query) {
echo $ligne->ID_ami."<br>";
}
Avec ceci tu afficheras tous les amis de la personne avec les nom des amis l'un en dessous de l'autre.
J'espère que ceci pourras t'aider
__________________
(\ _ /)
(='.'=) Voici Lapinou. Aidez le à conquérir le monde
(")-(") en le reproduisant.

http://mosfootball.over-blog.com
griese est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 14h29   #11
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Oui mais il veut éviter (légitimement) de faire la requête sur toutes les pages.
Donc il faut faire ce que tu proposes uniquement au moment de la connexion de l'utilisateur au site, et mettre la liste des amis dans une variable de session.
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 14h57   #12
Membre confirmé
 
Avatar de griese
 
Inscription : juin 2006
Messages : 646
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juin 2006
Messages : 646
Points : 243
Points : 243
Ok d'accord, mais si il fait un include() après, sur les autres pages ?
__________________
(\ _ /)
(='.'=) Voici Lapinou. Aidez le à conquérir le monde
(")-(") en le reproduisant.

http://mosfootball.over-blog.com
griese est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2006, 10h12   #13
Membre du Club
 
Inscription : juillet 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 85
Points : 55
Points : 55
Bon finalement j'ai créé une table avec id membre et id ami.Les 2 champs sont en clés primaires (pour éviter les duplicatas).
Avec une seule requête croisé sur la table contenant les noms des membres et sur la table des amis j'obtiens toutes les infos que je veux afficher.

Je pense que ca posera pas de probleme tant que ces tables ne seront pas trop grandes,après........on vera...

Merci pour vos réponses
Attilius est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h52.


 
 
 
 
Partenaires

Hébergement Web