par
Shrell » 20 déc. 2006, 19:06
$sql2 = "SELECT ap.id, ap.nom, pa.id, pa.id_produit, pa.id_attribut ".
"FROM produits_attributs AS pa, attributs_produits AS ap ".
"WHERE pa.id_produit=".$row["id"]." ".
"ORDER BY ap.id";
cette requete t'affiche uniquement les attributs du produit sélectionné, mais chacun est associé à toutes les lignes dans attributs_produits. Ce que j'essaierais de faire:
$sql2= "SELECT ap.id, ap.nom, pa.id, pa.id_produit, pa.id_attribut ".
"FROM produits_attributs AS pa LEFT JOIN attributs_produits AS ap ".
"ON ap.id=pa.id_attribut WHERE pa.id_produit='".$row['id']."'";
dans ce cas tu récupères uniquement les attributs qui sont associés à ton produit.
sinon, tu peux faire la jointure dans l'autre sens, et dans ce cas tu récupèreras tous les attributs possibles, et des champs différents de NULL si ils sont effectivement cochés pour le produit choisi :
$sql2= "SELECT ap.id, ap.nom, pa.id, pa.id_produit, pa.id_attribut ".
"FROM attributs_produits AS ap LEFT JOIN produits_attributs AS pa ".
"ON ap.id=pa.id_attribut";
remarque bien que dans ce dernier cas on enlève la clause WHERE pour ne pas se priver des enregistrements dans la table attributs_produits qui n'ont pas d'équivalent dans la table produits_attributs.
Ensuite tu n'as plus qu'à faire une boucle, tester si la valeur est NULL ou pas et cocher ta case le cas échéant
Une dernière chose : si tu n'utilises pas encore toutes ces tables ailleurs, je ne saurai trop te recommander de renomme ta table attributs_produits en attributs tout cours, afin de bien distinguer tes tables de valeurs (produits et attributs) de tes tables de liaison (produits_attributs)
mais ca, c'est toi qui vois

[php]$sql2 = "SELECT ap.id, ap.nom, pa.id, pa.id_produit, pa.id_attribut ".
"FROM produits_attributs AS pa, attributs_produits AS ap ".
"WHERE pa.id_produit=".$row["id"]." ".
"ORDER BY ap.id";[/php]
cette requete t'affiche uniquement les attributs du produit sélectionné, mais chacun est associé à toutes les lignes dans attributs_produits. Ce que j'essaierais de faire:
[php]$sql2= "SELECT ap.id, ap.nom, pa.id, pa.id_produit, pa.id_attribut ".
"FROM produits_attributs AS pa LEFT JOIN attributs_produits AS ap ".
"ON ap.id=pa.id_attribut WHERE pa.id_produit='".$row['id']."'";[/php]
dans ce cas tu récupères uniquement les attributs qui sont associés à ton produit.
sinon, tu peux faire la jointure dans l'autre sens, et dans ce cas tu récupèreras tous les attributs possibles, et des champs différents de NULL si ils sont effectivement cochés pour le produit choisi :
[php]$sql2= "SELECT ap.id, ap.nom, pa.id, pa.id_produit, pa.id_attribut ".
"FROM attributs_produits AS ap LEFT JOIN produits_attributs AS pa ".
"ON ap.id=pa.id_attribut";[/php]
remarque bien que dans ce dernier cas on enlève la clause WHERE pour ne pas se priver des enregistrements dans la table attributs_produits qui n'ont pas d'équivalent dans la table produits_attributs.
Ensuite tu n'as plus qu'à faire une boucle, tester si la valeur est NULL ou pas et cocher ta case le cas échéant
Une dernière chose : si tu n'utilises pas encore toutes ces tables ailleurs, je ne saurai trop te recommander de renomme ta table attributs_produits en attributs tout cours, afin de bien distinguer tes tables de valeurs (produits et attributs) de tes tables de liaison (produits_attributs)
mais ca, c'est toi qui vois :)