Produits associés

2 posts in this topic

Posted · Report post

Bonjour,

Lorsqu'un produit est associé à un autre, la réciproque est généralement vraie.

Pour le faire sans peine, il faut modifier dans le fichier administrer\produits.php

function insere_produit /* ajoute les références associées */ qui devient :

for ($i = 0; $i < count($frm['references']); $i++) {

if (!empty($frm['references'][$i])) {

$qid = mysql_query("

INSERT INTO peel_produits_references (reference_id, produit_id)

VALUES ('{$frm['references'][$i]}', '$produit_id')");

$qid = mysql_query("

INSERT INTO peel_produits_references (produit_id, reference_id)

VALUES ('{$frm['references'][$i]}', '$produit_id')");

}}
Ca, c'est simple. :( Mais comment faire pour empêcher l'enregistrement d'une référence à soi-même ? :D C'est-à-dire, empêcher l'enregistrement de la référence 255 au produit 255 ? Pour l'instant, je n'ai trouvé qu'un if ($ref['id'] != $prod['id']) au moment d'afficher le résultat, mais cela ne fait pas très propre. PS: dans le même ordre d'idée, lorsqu'on supprime un produit, la fonction 'supprime_produit($id)' il faut aussi le supprimer lorsqu'il est 'référence' dans la table peel_produits_references, sauf à se retrouver avec un produit B qui fait toujours référence à un produit C qui n'existe plus :) . Pour ce faire, il convient d'ajouter
$qid = mysql_query("DELETE FROM peel_produits_references WHERE reference_id = $id");
après ou avant
$qid = mysql_query("DELETE FROM peel_produits_referencesWHERE produit_id = $id");

(On peut sans doute faire plus concis)

Cordialement.

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

Lorsqu'un produit est associé à un autre, la réciproque est généralement vraie.

Pour le faire sans peine, il faut modifier dans le fichier administrer\produits.php

function insere_produit /* ajoute les références associées */ qui devient :

for ($i = 0; $i < count($frm['references']); $i++) {

if (!empty($frm['references'][$i])) {

$qid = mysql_query("

INSERT INTO peel_produits_references (reference_id, produit_id)

VALUES ('{$frm['references'][$i]}', '$produit_id')");

$qid = mysql_query("

INSERT INTO peel_produits_references (produit_id, reference_id)

VALUES ('{$frm['references'][$i]}', '$produit_id')");

}}
Ca, c'est simple. :( Mais comment faire pour empêcher l'enregistrement d'une référence à soi-même ? :D C'est-à-dire, empêcher l'enregistrement de la référence 255 au produit 255 ? Pour l'instant, je n'ai trouvé qu'un if ($ref['id'] != $prod['id']) au moment d'afficher le résultat, mais cela ne fait pas très propre. PS: dans le même ordre d'idée, lorsqu'on supprime un produit, la fonction 'supprime_produit($id)' il faut aussi le supprimer lorsqu'il est 'référence' dans la table peel_produits_references, sauf à se retrouver avec un produit B qui fait toujours référence à un produit C qui n'existe plus :) . Pour ce faire, il convient d'ajouter
$qid = mysql_query("DELETE FROM peel_produits_references WHERE reference_id = $id");
après ou avant
$qid = mysql_query("DELETE FROM peel_produits_referencesWHERE produit_id = $id");

(On peut sans doute faire plus concis)

Cordialement.

Le mieux c'est dans la fonction insere_produits de /administrer/produits.php

A la ligne qui fait la jointure dans la table produits_references, il faut ajouter un test qui récuère la référence des produits associés et si la référence est égale à la référence insérée (stocké dans $frm['reference']) alors il ne faut pas créer la jointure

Share this post


: post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

Twitter Advisto ecommerce

Facebook PEEL Shopping