Page 1 sur 1

Boucle while

Posté : 17 nov. 2011, 10:52
par jps
Bonjour à tous,

Je coince sur une boucle et mes capacités limités font que je n'arrive pas à résoudre ce problème.
Je fais donc appel aux connaisseurs qui dépatouillerons vraisemblablement ça en deux deux...
Voici donc ma problématique :

- Structure SQL :
* TABLE orders (elle enregistre le numéro de commande associé à un client sans le détail de la commande)
id_cde (id commande)
id_client (id client)
* TABLE order_detail (elle enregistre le détail de chaque numéro de commande)
id_cde (id commande)
nom_produit (nom du produit)

- Intentions :
Partant d'un id_client connu, je cherche donc à afficher une liste de chaque produit acheté par un client pour chaque commande.
Exemple : id_client = '1'
Cde N° 7 => banane
Cde N° 7 => pomme
Cde N° 9 => pêche
nb : la commande 7 contient 2 achats et la commande 9 un seul achat

- Là ou je coince :
- J'exécute d'abord une requête sur la table "orders" (afin de sortir toutes les commandes associées à ce client) :
$query_cdes = "SELECT * FROM orders WHERE id_client = '$id_client' ";
$cdes = mysql_query($query_cdes, $connexion) or die(mysql_error());
$row_cdes = mysql_fetch_assoc($cdes);

- Puis pour afficher la liste :
do{
$idcde = $row_cdes['id_cde'];
$query_detailcde = "SELECT * FROM order_detail WHERE id_cde = '$idcde'";
$detailcde = mysql_query($query_detailcde, $connexion) or die(mysql_error());
$row_detailcde = mysql_fetch_assoc($detailcde);
echo $row_detailcde['nom_produit'];
} while ($row_cdes = mysql_fetch_assoc($cdes));

- Mais... :
Mon résultat ne donne que
Cde N° 7 => pomme
Cde N° 9 => pêche
La commande N°7 n'est pas détaillée complètement !

Certainement simple pour vous, mais un casse tête pour moi !
Merci par avance pour votre aide !!

Re: Boucle while

Posté : 17 nov. 2011, 11:13
par macgawel
Bonjour.

Le problème, c'est que tu ne fais pas de boucle sur ta deuxième requête.
Du coup, tu ne prends que le premier résultat.

Deux solutions :
1. Tu rajoutes une boucle pour traiter ta deuxième requête.

2. (Mieux) tu utilises les fonctionnalités de SQL pour faire une requête qui te retourne tous les produits de toutes les commandes d'un client (voir dans la doc SQL pour les jointures).

Re: Boucle while

Posté : 17 nov. 2011, 12:46
par jps
Merci Macgawel !
J'ai utilisé le plan B (solution recommandée) INNER JOIN...
Cela fonctionne parfaitement...

Amicalement,
JPS