par
Ryle » 02 févr. 2007, 13:34
Tu pourrais récupérer le résultat de ta seconde requête, de mettre chaque produit avec commande trouvé dans un tableau et de tester, pour chaque produit de ta base, s'il est dans le tableau des commandé (avec un in_array() par exemple)
Ceci dit, le mieux serait de faire directement dans ta requête une joiture externe pour lister l'ensemble de tes produits, et récupérer l'id commande quand il existe. Ainsi tu n'aurais qu'une requête, qu'une boucle, et en fonction de la présence de l'id commande (qui sera null si aucune commande n'est associée) afficher ta valeur
A adapter et à tester, mais ca devrait te donner quelque chose comme ceci :
$sql = "SELECT prdint, commande.id
FROM produit
LEFT OUTER JOIN commande ON produit.id = commande.id
WHERE commande.id = ".$id); // nota les apostrophes ne sont pas utiles pour un nombre
Générant un résultat du style
Code : Tout sélectionner
produit | id
----------------------
produit 1 | 3
produit 2 | 5
produit 3 | null
produit 4 | 7

le produit 3 n'a pas été commandé.
Tu pourrais récupérer le résultat de ta seconde requête, de mettre chaque produit avec commande trouvé dans un tableau et de tester, pour chaque produit de ta base, s'il est dans le tableau des commandé (avec un in_array() par exemple)
Ceci dit, le mieux serait de faire directement dans ta requête une joiture externe pour lister l'ensemble de tes produits, et récupérer l'id commande quand il existe. Ainsi tu n'aurais qu'une requête, qu'une boucle, et en fonction de la présence de l'id commande (qui sera null si aucune commande n'est associée) afficher ta valeur :)
A adapter et à tester, mais ca devrait te donner quelque chose comme ceci :
[php]$sql = "SELECT prdint, commande.id
FROM produit
LEFT OUTER JOIN commande ON produit.id = commande.id
WHERE commande.id = ".$id); // nota les apostrophes ne sont pas utiles pour un nombre[/php]
Générant un résultat du style
[code]produit | id
----------------------
produit 1 | 3
produit 2 | 5
produit 3 | null
produit 4 | 7[/code]
:arrow: le produit 3 n'a pas été commandé.