Page 1 sur 1

requete qui ne fonctionne pas

Posté : 12 juin 2012, 10:46
par piotrowski-s
Bonjour à tous, j'ai un soucis avec ma requête; en fait cette requête intervient dans le cadre d'une autre requête.

J'ai donc ma requete de base avec un while qui m'affiche plusieurs ligne selon le schéma suivant:

Requete,

While

Ligne 1
Ligne 2
Ligne n
Ligne n+1;

Endwhile

Au sein de cette requete, je fais une autre requete avec l'un des éléments pour chaque ligne,
voici la requête,
<?php 
$sql2 = "SELECT * FROM commentaire_client where id_traitement='".$donnees2['id']."'";
$result2 = mysql_query($sql2) or die(__LINE__.mysql_error().$sql2); 
$num_rows = mysql_num_rows($result2);
$ligne=$num_rows;
echo $ligne;

?>
en fait je dois afficher pour chaque ligne le nombre de commentaire, (commentaires contenus dans une autre table)
je fais donc ma requete en specifiant que les commentaires afferants a ce dossier sont dans une autre table qui contient l'id de ces lignes
dans une autre colone qui s'appelle id_traitement.

Mais la rien ne s'affiche, en fait je ne comprends pas,
je fais meme un echo $sql2, ou var_dump mais rien ne s'affiche.

Je ne sais pas pourquoi

d'avance merci pour votre aide.

Re: requete qui ne fonctionne pas

Posté : 12 juin 2012, 11:01
par sirakawa
1) Je trouve ceci plus lisible, entre autres ça permet de vérifier que $id_cherche contient bien ce qu'on croit :
$id_cherche = $donnees2['id'];
$sql2 = "SELECT * FROM commentaire_client where id_traitement='$id_cherche'";

2) Une jointure ferait sûrement mieux l'affaire.

3) Quand tu fais des var_dump et compagnie, mets donc des die(); juste après....

Re: requete qui ne fonctionne pas

Posté : 12 juin 2012, 11:09
par piotrowski-s
j'ai pensé a une jointure amis cela ne marcherait pas car pour une ligne dans la première table je peux en avoir une infinité dans l'autre.

merci pour le 1 et le 3, mais en dépit de cela rien ne change.

Re: requete qui ne fonctionne pas

Posté : 12 juin 2012, 11:13
par xTG
j'ai pensé a une jointure amis cela ne marcherait pas car pour une ligne dans la première table je peux en avoir une infinité dans l'autre.

merci pour le 1 et le 3, mais en dépit de cela rien ne change.
La jointure est justement là pour ces cas là et éviter de faire N * N requêtes. ;)

Re: requete qui ne fonctionne pas

Posté : 12 juin 2012, 11:23
par piotrowski-s
mais du coup le num rows va me renvoyer tous les résultats et moi je veux que les résultats afférants en fait c'est comme un système de blog avec des commentaires sauf que _ça n'est pas un blogue
.

Re: requete qui ne fonctionne pas

Posté : 12 juin 2012, 11:47
par moogli
salut,

première chose on ne fait pas un select * pour faire un mysql_num_rows derrière (la t'a un risque de récupérer 10 million de tuples inutiles). pour compter il y a count().

si j'ai bien compris ce que tu veux récupérer les éléments de "table1" et en même temps le nombre de commentaires qui se trouve dans la table "commentaire_client", la jointure étant faite par id_traitement (la même chose dans les deux tables ?)

dans ce cas tu peux très bien faire une sous requete.

par exemple
select truc,machin,   
( select count(*) from commentaire_client where id_traitement=t1.id_traitement) as nbCommentaires
from table1 t1 where ( le prédicat que tu veux);
(a tester sans les structures de table et un mini jeux de donnée je ne donne que le principe).

A partir de la tu récupère truc et machin de tabel1 mais aussi "nbCommentaires" qui contient le nombre de commentaire par élément de table1.


@+