requete compliquée : /

VaN
Mammouth du PHP | 1107 Messages

12 juil. 2005, 15:34

Voila, j'ai une base de données, avec des articles, et des paragraphes. Il faut bien comprendre que les articles sont en fait le contenant des paragraphes. Ainsi, la table articles est juste composé d'un id_article,d'un titre, d'une date et de quelques autre trucs pas important. Les paragraphes eux sont liés aux articles par un l'id_article.

Ce que je souhaite faire :

lorsque j'affiche mes articles, n'affichez que ceux dont un (ou plusieurs) paragraphes leur est liés (c'est a dire qu'il faut qu'un paragraphe ait l'id de l'article pour que cet article soit affiché), de façon a ne passer afficher d'article vide.

ma requete :
<?php
$sql = "SELECT *,DISTINCT id_article,articles.date AS date_a 
FROM articles,textes 
WHERE articles.id_article=textes.id_article 
AND id_categorie='$cat' 
AND first='1' 
ORDER BY date_a DESC";
?>
helas, cela a pour effet, si l'article contient N paragraphes, de m'afficher N fois l'article. J'ai essayer de jouer avec DiSTINCT, mais ça ne marche pas.

Quelqu'un peut t'il m'aider ?
Modifié en dernier par VaN le 12 juil. 2005, 16:03, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

12 juil. 2005, 15:35

enlève l'étoile déjà *

le DISTINCT s'appuie sur toute les données sélectionnées, donc si tu prends tout, ben t'auras pas de lignes identiques même pour un même article

VaN
Mammouth du PHP | 1107 Messages

12 juil. 2005, 15:37

j'en etai sur : // y'a moult champs ds ces deux tables : / bon je repost apres

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

12 juil. 2005, 15:38

Modération : zouuuu dans "Base de données"
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

VaN
Mammouth du PHP | 1107 Messages

12 juil. 2005, 15:40

$sql = "SELECT DISTINCT articles.id_article,articles.id_categorie,articles.date_entree,articles.time_entree,
articles.nom,articles.first,textes.id_texte,textes.id_article,textes.date,
textes.date_entree,textes.titre,textes.texte,
articles.date AS date_a 
FROM articles,textes 
WHERE articles.id_article=textes.id_article 
AND id_categorie='$cat' 
AND first='1' 
ORDER BY date_a DESC";
Modifié en dernier par VaN le 12 juil. 2005, 16:04, modifié 2 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

12 juil. 2005, 15:41

:?:

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

12 juil. 2005, 15:43

$sql = "SELECT DISTINCT articles.id_article,articles.id_categorie,
articles.date_entree,
articles.time_entree,articles.nom,
articles.first,textes.id_texte,
textes.id_article,textes.date,
textes.date_entree,
textes.titre,
textes.texte,articles.date AS date_a 
FROM articles,textes WHERE articles.id_article=textes.id_article
AND id_categorie='$cat' 
AND first='1' ORDER BY date_a DESC";
que donne cette requete ?
Modifié en dernier par mere-teresa le 12 juil. 2005, 16:06, modifié 2 fois.
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

VaN
Mammouth du PHP | 1107 Messages

12 juil. 2005, 15:43

Erreur : Erreur de syntaxe près de 'SELECT DISTINCT articles.id_article,articles.id_categorie,articl' à la ligne 1

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

12 juil. 2005, 15:48

$sql = "SELECT DISTINCT a.id_article, a.id_categorie, a.date_entree, a.time_entree, a.nom,a.first, 
t.id_texte, t.id_article, t.date, t.date_entree, t.titre,t.texte, a.date AS date_a 
FROM articles a, textes t 
WHERE articles.id_article=textes.id_article
 AND id_categorie='$cat' 
AND first='1' 
ORDER BY date_a DESC";
un truc sympa ça peut-être de la couper, pour qu'elle tienne sur la largeur de l'écran

moi j'ai un tout petit écran avec ue petite résolution :cry:
pour réduire : utilise des alias pour les tables

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

12 juil. 2005, 15:52

je ne sais pas si c'est l'erreur mais à mon avis tu ne peux pas utiliser le DISTINCT si tu sélectionnes aussi le texte des paragraphes, puisque chaque ligne sera différente

si j'ai bien compris ta structure et la requête...

VaN
Mammouth du PHP | 1107 Messages

12 juil. 2005, 15:54

meme probleme, il m'affiche N fois l'article si l'article contient N paragraphes.

oui mais la je fait mon distinct uniquement sur l'id_article non ?

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

12 juil. 2005, 15:57

Et group by ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

12 juil. 2005, 15:57

non, le DISTINCT se fait sur toute la ligne

VaN
Mammouth du PHP | 1107 Messages

12 juil. 2005, 15:59

a utiliser de quelle maniere ?

WHERE ... GROUP BY id_article ?

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

12 juil. 2005, 16:01

Que veux tu ?

Avoir tous les articles ?
Avoir tous les paragraphes ?

Si tu veux tous les articles, teste le GROUP BY idarticles...