Condition PHP

Petit nouveau ! | 7 Messages

22 oct. 2015, 12:55

Bonjour à tous,
Ne pratiquant pas trop le php, j'aurais besoin de vos lumières sur un problème de condition php (du moins je crois).

Pour comprendre, j'ai une table "produits" dans laquelle j'ai plusieurs champs dont un champs "produits associes" qui vas contenir différents ID de ma table produits

Coté client (affichage), lorsqu'on ce trouve dans une fiche produit en "mode détails", j'arrive bien à faire afficher toutes les infos d'un produits (titre, description, etc....) par contre je bloque sur "comment faire afficher les produits associés à ce produit".

1er question que je me pose est : de quel type doit être le champ "produits associes" = varchar ou enum ou autre...??
2ème question : Si je veux faire afficher les produits associé dans la même page "mode détails", je suppose qu'il faut que je fasse une condition pour dire : selectionne les ID présent dans ce champ et faits la correspondance avec l'article existant qui à le même id (je ne sais pas si je suis claire ;-)

Il ce peut aussi que mon résonnement soit complétement faux par rapport à ce que je souhaite faire....
c'est pour cette raison que je consulte ce forum, peu être que vous pourrez me donner des pistes.

merci à vous

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

22 oct. 2015, 13:13

Bonjour,

Lister plusieurs id dans un même champ n'est pas une bonne pratique en SQL (cf. le topic Faire une requête avec plusieurs id dans un champ)

Pour traiter des relations dites "1-N" (à un enregistrement peuvent être associés N enregistrements) ou "N-N" (à N enregistrements peuvent être associés N autres enregistrements), il faut utiliser une table dédiée dans ta base contenant simplement deux colonnes : l'id de l'article d'origine et l'id de l'article qui lui est associé.
Ex : l'article 7 est lié aux articles 12, 14 et 42, la table contiendra

Code : Tout sélectionner

id_article_1 | id_article_2 7 | 12 7 | 14 7 | 42
En parcourant cette table et avec une jointure éventuelle sur ta table d'articles tu pourras facilement retrouver tous les articles liés à un article en particulier à partir de son id (SELECT id_article_2 FROM ta_table_de_liaison WHERE id_article_1 = 7)

Cela devrait du coup également répondre à ta seconde question :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...