Comparer les resultats de 2 tableaux

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Comparer les resultats de 2 tableaux

par lucluc » 04 févr. 2007, 19:36

Ouai en effet, plutot que de faire un script usine a gaz, une requete un peu "travaillee" est plus simple...

Le resultat :

Code : Tout sélectionner

$sql = mysql_query("SELECT prdint, commande.id FROM produit LEFT OUTER JOIN commande ON produit.id = commande.id AND commande.id ='".$id."' ");
Encore merci pour ce conseil éclairé

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
:arrow: le produit 3 n'a pas été commandé.

Comparer les resultats de 2 tableaux

par lucluc » 02 févr. 2007, 13:01

Bonjour. Je me gratte la tete depuis 2 jours et finalement je viens vous presenter mon probleme afin que vous m'eclairiez de vos lumieres.

J'ai un script dans lequel j'effectue 2 requetes.

La premiere me recupere tous les produits.

Code : Tout sélectionner

$sql_prd=mysql_query("SELECT prdint FROM produit");
La deuxieme les produits commandés

Code : Tout sélectionner

$sql_prdcmd=mysql_query("SELECT prdint FROM produit JOIN commande ON produit.id = commande.id WHERE commande.id = '".$id."' ");
J'aimerai que pour chaque produit

Code : Tout sélectionner

while($prd=mysql_fetch_array($sql_prd)) { print $prd['prdint']; echo '<br />'; }
Si le produit est commandé on affiche "commandé" a la suite du nom de produit. Et c'est là que je seche.
Ce n'est pas le test if qui me pose probleme mais la récuperation de la requete $sql_prdcmd et la lecture de son contenu pour le comparer à $prd['prdint'].