Trier en fonction de deux tables.

Fermé
Yohann9633 Messages postés 9 Date d'inscription mardi 3 juillet 2012 Statut Membre Dernière intervention 22 janvier 2015 - 29 nov. 2014 à 22:19
jordane45 Messages postés 38300 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 novembre 2024 - 1 déc. 2014 à 19:47
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 38300 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 novembre 2024 4 704
30 nov. 2014 à 01:03
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 38300 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 novembre 2024 4 704
30 nov. 2014 à 20:03
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 mardi 3 juillet 2012 Statut Membre Dernière intervention 22 janvier 2015
30 nov. 2014 à 11:42
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 mardi 3 juillet 2012 Statut Membre Dernière intervention 22 janvier 2015
30 nov. 2014 à 16:31
up
0

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

Posez votre question
Yohann9633 Messages postés 9 Date d'inscription mardi 3 juillet 2012 Statut Membre Dernière intervention 22 janvier 2015
1 déc. 2014 à 19:41
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 38300 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 novembre 2024 4 704
1 déc. 2014 à 19:47
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