Requête maitre/détail et php

Signaler
Messages postés
4
Date d'inscription
jeudi 30 décembre 2004
Statut
Membre
Dernière intervention
31 décembre 2004
-
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
-
Bonjour

Voilà mon soucis: je dispose de 2 tables, une contenant un article, avec différentes données, et une contenant les auteurs.
Dans la table article, j'identifie l'auteur par la clef de cet auteur dans la tale auteur.
Jusqu'ici tout va bien.
J'affiche le tout dans une page php (je travaille avec dreamweaver).
Or ma solution de départ, qui consistait à faire
SELECT auteu_nom
FROM auteur, article,
WHERE article.artic_auteur=auteur.auteu_id
c'est à dire, pour moi, "affiche moi le nom que tu as dans auteur quand je te donne l'id d'auteur que j'avais dans article".
Or il se trouve que je suis dans une zone répétée: soit je lui dis que mon id=7 par exemple, et il m'affiche que le nom de l'auteur 7 pour tous les articles, soit je lui fais cette requête et il m'affiche tous les auteurs, puisque tous correspondent à UN id dans la table... Comment lui dire que je veux juste celui de l'id de l'enregistrement affiché?

8 réponses

Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
AND auteur.auteur_id=7 ?
ou sinon DISTINCT ?? très flou ta quesitons !

PHP Guru
Écoutez les conseils d'un vieux sage ! Ils sont souvent très utiles.
http://www.lookstrike.com
Messages postés
252
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
25 avril 2011

Salut

Personnellement je lis ta requête comme suis:

"donne-moi le nom de l'auteur pour chacun des articles qui a un auteur"
donc cette requête renvoie la liste des auteurs qui ont écrit un article.

Je te propose donc d'éssayer une requête qui ressemblerait à:

"donne-moi le nom de l'auteur de cet article" soit

SELECT auteu_nom FROM auteur, article
WHERE article.artic_auteur=auteur.auteu_id AND article.artic_id = '7'

La dernière partie de la requête permet de sélectionner un seul article ; j'ai supposé qu'il y a un champ nommé artic_id identifiant un article de manière unique, sinon selon la structure de ta table, il y a nécessairement un moyen d'identifier un article de manière unique (sauf si un article est présent en plusieurs exemplaires...).
Encore plus simple, si tu as déjà effectuée une requête pour récupérer les données de l'article en question, tu connais l'id de l'auteur et donc il te suffit de faire:

SELECT auteu_nom FROM auteur WHERE auteu_id = 'valeur_voulue'

Bonne année

Chouchou
Messages postés
4
Date d'inscription
jeudi 30 décembre 2004
Statut
Membre
Dernière intervention
31 décembre 2004

Bon je me suis peut-être mal exprimée
Quand je lui donne
SELECT auteu_nom FROM auteur WHERE auteu_id = 'valeur_voulue'
mon problème c'est valeur voulue:
valeur voulue vaut 1 pr le premier enregistrement, mais 5 pour le 2ème etc.
Donc comment faire pour qu'il comprenne que c'est la variable auteur_id de la table article et pas une valeur fixe? dreamweaver propose bien les passage par variable de ofrumlaire, http etc mais je ne sais pas si je dois en utiliser un et lequel... >_<
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
... c'est bizarre encore ta question, vérifie ta table, normalement lorsqu'une table à un id, cet id est primaire (ou unique) + auto increment... donc ils sont mis par défaut .
Norlament tu ne devrais PAS les mettre ces variables... si ta ligne 2 vaut auteur_id=5 ca peut très bien arriver...

PHP Guru
Écoutez les conseils d'un vieux sage ! Ils sont souvent très utiles.
http://www.lookstrike.com
Messages postés
4
Date d'inscription
jeudi 30 décembre 2004
Statut
Membre
Dernière intervention
31 décembre 2004

Nan mais l problème n'est pas qu'il me sorte id_5, le problème est que je voudrais récupérer auteu_nom where auteu_id=5 et que j'y arrive pas: si je lui dis auteu_id=5 c'est faux car ce n'est pas 5 pour chaque article, et sinon bah il me sort tous les auteurs qui ont écrit un article... >_<
Est-ce que c'est plus compréhensible comme ca?
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
non c pas compréhensible :P
"je voudrais récupérer auteu_nom where auteu_id=5"
et
"si je lui dis auteu_id=5 c'est faux"

Essais de faire un SELECT tes 2 tables... SELECT a.auteu_nom FROM auteur AS a, article AS b WHERE a.auteu_id=b...._id AND ...

Désolél, c'est pas claire

Si tu pouvais poster la Structure seulement de tes tables et dire ce qui les lis et ce que tu veux ca aiderait

PHP Guru
Écoutez les conseils d'un vieux sage ! Ils sont souvent très utiles.
http://www.lookstrike.com
Messages postés
4
Date d'inscription
jeudi 30 décembre 2004
Statut
Membre
Dernière intervention
31 décembre 2004

Bahc c pas que auteu_id=5 est faux, c'est que ce n'est pas vrai pour tous les cas: dans le premier enregistrement c'est 5 (par exemple) mais dans d'autre j'aurai un autre euteur donc un autre id...
Bon je mets mes tables:

Ca c'est ma table "article" qui s'appelle en réalité "review"
revie_id int(11) auto_increment
revie_rpg int(11)
revie_support int(11)
revie_auteur int(11)
revie_date varchar(10)

Rpg c'est le jeux video dont on parle dans l'article, support c'est la console du jeux video de l'article, auteur c'est mon fameux auteur, et la date de l'article/review

ca c'est ma table auteur qui s'appelle en réalité "equipe"
equip_id int(11) auto_increment
equip_nom varchar(50)
equip_description longtext
equip_datearrivee varchar(10)
equip_datedepart varchar(10)
equip_contact varchar(255)
equip_titre int(11)
equip_droits int(11)

Le nom (c'est le champ que je veux récupérer grâce à cet id, description de la personne, dates d'entrée et de sortie de la team, contact cad email, titre c'est un surnom et droits c'est admin, modéro, visiteur etc.

Comme je travaille dans une zone d'enregistrements répétés (jaffiche toutes les reviews), j'utilise ce code:

<?php do { ?>
Jeu: <?php echo $row_reviews['revie_rpg']; ?>

Auteur: <?php echo $row_reviews['revie_auteur']; ?>

Date: <?php echo $row_reviews['revie_date']; ?>
<?php } while ($row_reviews = mysql_fetch_assoc($reviews)); ?>

Est-ce que j'ai tout mis le nécessaire? :)

Merci ^^
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
Désolé de te répondre si tard, j'ai eu un petit problème d'internet :P

Ce que je te dirais pour trouver (car la je suis peut-etre un peu dans
la brousse...) car je ne cerne peut-etre pas très bien ce que tu veux,
ou peut-être tu fais quelque chose en particulier où on ce n'y prend
pas de cette manière (je ne sais pas, c'est flou désolé)





Je relis tout ce qui a été écrit la, et moi ce que j'aurais répondu c'est ceci :

SELECT auteu_nom FROM auteur, article
WHERE article.artic_auteur=auteur.auteu_id AND article.artic_id = '7'

Comme Chouchou a répondu... par contre, je regarde les autres questions et la ca m'embrouille...



Ta question doit avoir une réponse super conne (pas péjorativement) et elle saute aux yeux mais ... ihhh manque de koi :P

Si vraiment la requête marqué plus haut ne satisfait pas, va peut-etre
voir sur les www.mysql.org la documentation sur LEFT JOIN et LEFT OUTER
JOIN...



Espérant que ca puisse t'aider...


PHP Guru
Écoutez les conseils d'un vieux sage ! Ils sont souvent très utiles.
http://www.lookstrike.com