Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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 21/06/2011, 16h21   #1
Invité régulier
 
Inscription : mai 2011
Messages : 49
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 49
Points : 7
Points : 7
Par défaut requête sql dans 2 bases, champ bizarre, trie spécial, ouf !

Bonjour à tous,

J'ai un problème assez complexe (encore !)... tout du moins pour mois.

Je développe avec mes moyens un site communautaire.

j'ai une bdd1 avec une table 'friends' dans laquelle j'ai : id_user id_friend (cela correspond à la liste d'amis, et est sous cette forme

Citation:
id_user / id_friend
1 / 7
1 / 8
1 / 9
J'ai une autre table dans bdd1 qui est "users" sous cette forme :
Citation:
user_id / user_name
1 / maxence
7 / jean
8 / fred
9 / gregoire
Donc maxence a comme amis : jean, fred, gregoire

Ensuite j'ai une bdd2 (un forum qu'on m'a fait, je ne PEUX pas modifier cette base) avec dedans des listes de topics et les utilisateurs qui consultent actuellement le topic.. sous cette forme :

Citation:
topic_title / users_read
test / jean,pascal,lisa,jean-pascal,fred
blabla / jean,fred,gregoire
jouons / cunégonde
Je cherche, par une requête sql, à sortir sur la page d'un membre, quels topics sont en train de lire ses amis (par ordres de quantité d'amis lisant un topic)

ça donnerait donc :
Bonjour maxence !
Vos amis lisent les topics "blabla" (jean, fred, gregoire) et "test" (jean, fred)

Voilà, désolé pour le pavé, mais mes connaissances en php sont encore faibles, et je ne sais même pas comment on fait pour sortir un pseudo d'une table qui comporte plusieurs pseudos (séparés par virgule) puis de les compter, puis de trier... etc ;(

Merci d'avance de votre aide !
maxence64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 17h17   #2
Membre confirmé
 
Avatar de Retrokiller069
 
Homme Bertrand
Étudiant
Inscription : octobre 2010
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 216
Points : 268
Points : 268
Bonjour,

bon ta bd2 me semble un peu bizarre le fait de renseigner les users_read par une suite de prénom c'est peu .

Donc voila comment je verrai ca,tu récupères via une requête tous les users_read ainsi que leurs topics correspondant (je verrai bien tout ca dans un tableau dynamique).

Ensuite grâce à PHP tu sépares chaque prénom et tu les stockes dans un autre tableau toujours avec leur topic. Ensuite tu passes tout ca dans une fonction qui t'analyse ce que lise les amies d'un utilisateur.

Pour résumer, une requete puis tu sépares ce que tu récupères pour ensuite tu effectues une analyse.
Je n'ai pas trop le temps de te faire un exemple désolé
Retrokiller069 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 17h34   #3
Invité régulier
 
Inscription : mai 2011
Messages : 49
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 49
Points : 7
Points : 7
Salut et merci d'avoir répondu.
Malheureusement c'est bien d'un exemple dont j'ai besoin et pas seulement d'une stratégie...; surtout que la tienne semble compliquée car je suis persuadée qu'un cador en requête sql pourrait faire tout ça en 1 seule et unique requête (même si très longue...

merci d'avance
maxence64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 17h51   #4
Membre confirmé
 
Avatar de Retrokiller069
 
Homme Bertrand
Étudiant
Inscription : octobre 2010
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 216
Points : 268
Points : 268
Si tu es sur pour la bd2 (je parle de son contenu) je te renvoie sur cette remarque:
Citation:
Envoyé par CinePhil Voir le message
Le langage SQL est censé être utilisé pour interroger (créer, mettre à jour...) une base de données relationnelle composée de tables, elles-même composées de colonnes et de lignes. Il n'est donc pas prévu de séparateur puisqu'en SQL on demande simplement d'extraire les données de telle(s) colonne(s) de telle(s) table(s).
C'est pour ca que pour moi si tu veux travailler avec une donnée comme

Code :
1
2
3
 
topic_title / users_read
test / jean,pascal,lisa,jean-pascal,fred
il faudrait que tu fasse ce que j'ai dis précédemment, ou du moins cela ne pourra pas être fait en une requête SQL.

Mais si c'est le cas je veux bien la voir

Après par contre si dans ta base tu as ceci:

Code :
1
2
3
4
5
6
7
 
topic_title / users_read
test / jean
test /pascal
test /lisa
test /jean-pascal
test /fred
Dans ce cas je peux voir comment faire ^^
Retrokiller069 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 17h55   #5
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
Citation:
Envoyé par maxence64 Voir le message
Salut et merci d'avoir répondu.
Malheureusement c'est bien d'un exemple dont j'ai besoin et pas seulement d'une stratégie...; surtout que la tienne semble compliquée car je suis persuadée qu'un cador en requête sql pourrait faire tout ça en 1 seule et unique requête (même si très longue...

merci d'avance
malheureusement, il n'y a pas de champ de jointure possible entre tes deux tables car mauvaise conception sur ta bdd 2 (le user_read est affreux) donc tu vas devoir faire un traitement php (vu que impossible refonte bdd) à moins qu'il y est d'autre champ dans la bdd2 de ton forum qui pourraient ns y aider !

++
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/06/2011, 18h06   #6
Invité régulier
 
Inscription : mai 2011
Messages : 49
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 49
Points : 7
Points : 7
snif, non il n'y a pas d'autre champs intéressants et je ne peux pas la modifier...

si ça peut vous aider, il faut savoir (mais ça doit être tout aussi "affreux") que les users se trouvent aussi dans des fichiers !
sous la forum

Citation:
/home/site/data/topic_3.txt
fred
jean
gregoire
Citation:
/home/site/data/topic_27.txt
josiane
marcel
maxence64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 18h27   #7
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
Sinon ce n'est pas possible de migrer de forum?

car là en gros à chaque fois que tu vas devoir avoir une info lié à des utilisateurs et aux forum cela va être la merdouille ..

de plus ton site communautaire risque d'être très très long ... car imagine pour chaque utilisateur connecté sur ton site tu dois récupérer la liste des topics de ton forum checker si un ami de ton user est bien sur ce topic et ensuite filtré tout ça..

c'est long, c'est moche, c'est pas maintenable..

alors qu'une mini modif pour avoir comme le disais Retrokiller069
Citation:
id / user_id
topic_title / users_read
test / 6
test /5
test /4
test /3
test /1
il vaut mieux travaillé avec les ids tant qu'à faire...

franchement sinon ça va vite être super bancal! (cela doit déjà l'être sur le forum... vu la bdd)
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/06/2011, 19h23   #8
Invité régulier
 
Inscription : mai 2011
Messages : 49
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 49
Points : 7
Points : 7
ce n'est pas possible non....
en passant par les fichiers, personnes n'aurait une solution ?
maxence64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h55.


 
 
 
 
Partenaires

Hébergement Web