[Résolu] Récupération d'id ne se fait pas

Récupération d'id ne se fait pas [Résolu] - PHP - Programmation

Marsh Posté le 17-07-2015 à 15:32:22    

Bonjour,
 
Je fais un site ecommerce en PHP/ MySQL, HTML5/CSS3 pour la soutenance de fin de formation.
 
Donc bon problème se situe au niveau de ma requête SQL:
 
J'ai 2 tables:
Article : id_article, id_promo, titre, categorie, description, photo, marque, reference, materiau, coloris, dimensions, poids, fabrication, garantie, prix, stock.
 
Avis: id_avis, id_membre, id_article, commentaire, note, date.
 
Ma requête SQL me donne les articles mais ne me donne pas l'id_article d'un article qui n'a pas encore une note ( ou une entrée dans la table avis ).  
 
Ne connaissant pas trop cette façon de faire des requêtes en SQL ( car elle m'a été donné dans un forum mais je ne comprends pas cette méthode ) je n'arrive pas à voir où est le soucis et lorsque je test à ma façon, la requête ne me donne soit plus rien soit 3 fois le même article avec 3 notes différentes...
 
Voici la requête :
 

Code :
  1. $donnees = executeRequete("SELECT * FROM article ar LEFT JOIN avis av ON ar.id_article = av.id_article " );


 
Merci pour votre aide.


Message édité par chrispc le 17-07-2015 à 21:49:04

---------------
L'écoconception n'est pas négociable - Topic habitats de demain : https://tinyurl.com/y5h2mjx7
Reply

Marsh Posté le 17-07-2015 à 15:32:22   

Reply

Marsh Posté le 17-07-2015 à 21:48:22    

Pour qui en aura besoin:
 
La requête ne doit pas être faite avec un * car elle prendra en compte av.id_article et au final c'est cette valeur là qui me gênait dans le bon fonctionnement de mes appels


---------------
L'écoconception n'est pas négociable - Topic habitats de demain : https://tinyurl.com/y5h2mjx7
Reply

Marsh Posté le 20-07-2015 à 16:01:26    

Manifestement, tu n'as pas étudié les bases du SQL. :o
 
SELECT ar.id_article, ar.titre, ar.description, av.id_avis, av.note, av.commentaire FROM article ar LEFT JOIN avis av ON ar.id_article = av.id_article
 
Ca, ça va te donner tous les avis d'un article, avec ça chaque fois, des infos sur l'article. Donc, il y aura autant de lignes que d'avis et donc de fois où tu vas récupérer les infos sur un article. C'est normal. Si tu veux que les articles, ben autant ne pas faire de jointure sur avis.
 
Après, tu peux faire un truc du genre :  
SELECT ar.id_article, ar.titre, ar.description, av.id_avis, av.note, av.commentaire FROM article ar LEFT JOIN avis av ON ar.id_article = av.id_article GROUP BY ar.id_article
 
Là, t'auras plus qu'une ligne pour chaque article. Mais du coup, t'auras pas tous les avis, juste un seul (et attention aux infos concernant les avis, le SGBD va faire un regroupement "bizarre" des champs de la table avis).
 
Conclusion : tu veux qu'elle fasse quoi ta requête SQL ?
 
Edit : cours de Mysql sur openClassroom : https://openclassrooms.com/courses/ [...] ointures-1


Message édité par rufo le 20-07-2015 à 16:03:56

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed