Trier en fonction de deux tables.

Yohann9633 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour
J'ai ce petit bout de code
$tt=mysql_query("SELECT id FROM membre  WHERE email='".$_SESSION['login']."'");

list($id)=mysql_fetch_row($tt);


$reponse = mysql_query("SELECT page FROM membre WHERE id!='$id' AND NOT EXISTS (SELECT idcompteclic FROM pagevue WHERE idcompteclic='$id') ")




En fait j'aimerai selectionner les pages qui : N'est pas celle de l'utilisateurs connecté, et les pages qu'il n'a pas vue qui sont dans la table "pagevue" possèdant l'ID du joueurs qui les a vu et la page qu'il a vu.
Merci d'avance.
A voir également:

5 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

J'avoue ne pas vraiment avoir totalement compris ton besoin
selectionner les pages qui : N'est pas celle de l'utilisateurs connecté, et les pages qu'il n'a pas vue qui sont dans la table "pagevue" possèdant l'ID du joueurs qui les a vu et la page qu'il a vu.


Déjà.. il nous faudrait la structure de tes tables.
(c'est à dire : leurs noms .. les champs qu'elles contiennent... et à quoi elles servent..)

Car j'ai l'impression (lorsque je vois un champ "page" dans ta table "membre" ) que tu as une petite erreur dans la structure de ta BDD ....

Logiquement (d'après ce que je comprend vu tes requêtes..) tu devrais avoir :
- Une table membre (id_membre, nom, login......)
- Une table Page (id_page,title...,id_membre_proprietaire)
- Une table PageVues ( id_vue , id_page, id_membre, date_lecture ...)

Ainsi.. un membre peut posseder Une ou plusieurs pages ( la liaison s'effectuant par l'id_membre / id_membre_proprietaire)
Une page peut être VUE par un ou plusieurs membres .. la relation se faisant par l'id_page...

Il te sera alors beaucoup plus facile de manipuler tes tables comme bon te semble pour récupérer les information qui t'interessent....

Par exemple.. à partir de MON modèle.. si je veux connaitre toutes les pages VUES par un Membre (sauf la sienne) .. il me suffirait de faire un truc du genre :

SELECT * FROM PageVues PV
LEFT JOIN Page P  ON (PV.id_page = P.id_page)
LEFT JOIN membre M ON (M.id_membre = PV.id_membre)
WHERE P.id_membre_proprietaire <> '$tt'
AND PV.id_membre = '$tt'






1
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonsoir,
TOUTES les pages qu'il n'a pas vue ni la sienne, donc TOUTES les pages qui ne sont pas dans "pagevue" avec son ID.



ce code devrait faire l'affaire....
SELECT page 
FROM membre 
WHERE id!='$id' 
AND  page  NOT IN(SELECT page  FROM pagevue WHERE idcompteclic='$id'


PS1 : A ce que je vois.. tu utilises du TEXTE pour ton champ "page" ...
Pour des raisons de performances et éviter un certain nombre de soucis potentiels.. il est fortement conseillé, pour faire les "jointure" entre les tables d'utiliser des champs "Numériques" ( des ID en gros...) .


PS2 : Je persiste .. ta structure de BDD n'est pas la meilleur....
Dis toi que dans une Base de données "relationnelle" .. chaque TABLE est sensée représenter un "OBJET"
Dans ton cas .. tu peux en imaginer 3
-Membre
-Page
-PageVue

(mais bon.. je ne vais pas te redire ce que je t'ai marqué dans ma réponse précédente)..... mais ça permet de faire les jointures facilement avec des champs numériques (voir mon ps1 ) ...






1
Yohann9633 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Salut, merci de ta réponse en tout cas mais c'est vrai que j'ai pas été clair.
Alors je possède une table membre qui a
id, pass, email, page..
Et une table pagevue qui a : idcompteclic, page

En fait chaque membre possède une page, quand il visitera la page d'un autre membre la page qu'il aura visité sera rentré dans pagevue.
Exemple : le membre ID = 2 visite la page cocacola dans pagevue idcompteclic = 2, page = coca cola.

Et en fait dans ma page "visiter.php" j'aimerai afficher TOUTES les pages qu'il n'a pas vue ni la sienne, donc TOUTES les pages qui ne sont pas dans "pagevue" avec son ID.
Voila j'espère avoir écris un truc assez clair, c'est pas simple à expliquer.
merci :)
0
Yohann9633 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
up
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Yohann9633 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup, ouip je vais essayer de faire ce que tu m'as dis, en fait pour celà il faudrait que je trouve une API pour récupérer l'ID de la page facebook à la place du nom . En attendant ce que tu m'as donné fonctionne très bien et je te remercie beaucoup.
Après je me pencherai sur les jointures ;)
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Si la question est résolue..
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

Cordialement,
Jordane
0