problème de boucle imbriquées

pat
Eléphant du PHP | 132 Messages

13 août 2007, 15:05

Bonjour,

j'ai imbriqué 2 boucles. Car je souhaite afficher tous les produits de chaque catégorie.
la table produit donne :

produit
categorie

balance mesure
conductimetre mesure

Le pb est que le resultat de mes boucles me donnent 2 fois balances pour la catégorie mesure au lieu de balance conductimètre.

Code : Tout sélectionner

<?php do { ?> <tr> <!-- ligne categorie --> <td class="texte12" style="background-image: url(../image/image-signe/bandeau-degradeo.jpg)"> <?php echo $row_categorie['categorie']; ?> <?php $cat = $row_categorie['id_categorie']; ?> </td> </tr> <!-- Fin ligne categorie --> <?php $colfourn2_produit = "54"; if (isset($_GET['fourn'])) { $colfourn2_produit = (get_magic_quotes_gpc()) ? $_GET['fourn'] : addslashes($_GET['fourn']); } mysql_select_db($database_connectgl, $connectgl); $query_produit = sprintf("SELECT t_article.id_prod, t_produit.produit, t_article.article, t_article.id_article, t_prodcat.id_produit, t_prodcat.id_categorie FROM t_article, t_produit, t_prodcat WHERE t_article.id_fourn = %s and t_produit.NumProd = t_article.id_prod AND t_prodcat.id_produit = t_article.id_prod AND t_prodcat.id_categorie = $cat GROUP BY t_article.id_prod", $colfourn2_produit); $produit = mysql_query($query_produit, $connectgl) or die(mysql_error()); $row_produit = mysql_fetch_assoc($produit); $totalRows_produit = mysql_num_rows($produit);?> <?php do {?> <tr> <!-- ligne produit --> <td class="texte12" ><?php echo $row_produit['produit']; ?><?php echo $row_produit['id_prod']; ?> </td> </tr> <!-- Fin ligne produit --> <?php } while ($row_categorie = mysql_fetch_assoc($produit)); ?> <?php } while ($row_categorie = mysql_fetch_assoc($categorie)); ?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

13 août 2007, 15:13

Balises [ php ] pour du code php, please :)

Ceci dit, m'est avis qu'il y a un truc qui va pas là :
   <?php } while ($row_categorie = mysql_fetch_assoc($produit)); ?> 
    <?php } while ($row_categorie = mysql_fetch_assoc($categorie)); ?>
Si tu utilises la même variable dans les deux boucles, ça risque fort de pas faire ce que tu souhaites...

Edit : pis un p'tit effort d'indentation aussi ça serait pas mal, histoire de repérer entre autre le do qui correspond au dernier while... les aligner et décaller ce qu'il contienne faciliterait la lecture ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

pat
Eléphant du PHP | 132 Messages

13 août 2007, 16:01

Merci,

l'erreur était devant mes yeux et je ne l'avais pas vue. Je pense que tu as raison, il faut que je fasse des efforts d'indentation .

Encore merci