[Résolu] Master Products - suppression dans le panier, Supprimer aussi le produit maître en supprimant l'esclave |
Bienvenue invité ( Connexion | Inscription )
[Résolu] Master Products - suppression dans le panier, Supprimer aussi le produit maître en supprimant l'esclave |
9 Mar 2012, 19:54
Message
#1
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 103 Inscrit : 11-October 10 Lieu : Villemomble Membre no 28103 |
Voila je me sert de Master Products et j'aimerais que dans mon panier lorsque l'on supprime le produit dit esclave le produit maître qui lui est lié ce supprime aussi (et vice et versa).
Dans mon panier j'ai ajouter la modification qui permet de supprimer mon article en 1 clic et j'ai donc essayé de modifier ce morceau de code mais sans succès Pour l'instant dans mon panier j'ai ce morceau de code qui permet de supprimer l'article : Code '<a href="' . tep_href_link(FILENAME_SHOPPING_CART, 'action=remove_product&products_id=' . $products[$i]['id']) . '">' . tep_image(DIR_WS_ICONS . 'ndc_picto_bin.gif', TABLE_HEADING_REMOVE, 11, 13) . '</a>' et cette fonction dans application_top.php : Code case 'remove_product' : if (isset($HTTP_GET_VARS['products_id'])) { $cart->remove($HTTP_GET_VARS['products_id']); tep_redirect(tep_href_link(FILENAME_SHOPPING_CART)); } break; et la contribution master products nous fait rajouter le code suivant dans le panier (shopping_cart.php) : Code $master_prod = tep_db_query("select products_master, products_master_status, products_listing_status from " . TABLE_PRODUCTS . " where products_id = '" . $products[$i]['id'] . "'"); $master_prod_values = tep_db_fetch_array($master_prod); $prod_link_id = $master_prod_values['products_master']; j'ai donc essayer de modifier mon code dans le panier en lui disant de supprimer le produit lié et le produit maître : Code '<a href="' . tep_href_link(FILENAME_SHOPPING_CART, 'action=remove_product&products_id=' . $products[$i]['id'] . '&products_id=' . $prod_link_id) . '">' . tep_image(DIR_WS_ICONS . 'ndc_picto_bin.gif', TABLE_HEADING_REMOVE, 11, 13) . '</a>' problème sa marche pas, il voit bien l'id du produit lié et l'id du produit maître mais il n'en supprime qu'un seul (le produit maître). Dois-je modifier plutôt ma fonction dans application_top.php ou dois-je continuer sur shopping_cart.php Bref une petite aide serait la bienvenue. Merci Ce message a été modifié par Rusti - 30 Mar 2012, 22:03. -------------------- osCommerce v2.3
|
|
19 Mar 2012, 07:06
Message
#2
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 103 Inscrit : 11-October 10 Lieu : Villemomble Membre no 28103 |
Bon je progresse mais j'ai du mal.
Est ce que quelqu'un pourrait me dire la syntaxe qui permet de dire ci tel article est dans mon panier alors je fait tel action. Je pensais que c'était $cart->content qui permettait de voir ce qui était dans le panier mais j'ai beau essayé différente choses, impossible de lui dire de supprimer l'esclave et le maître en même temps. Je pense que quelque chose m'échappe mais je vois pas ou. Merci -------------------- osCommerce v2.3
|
|
19 Mar 2012, 23:04
Message
#3
|
|
5eme dan OSC Groupe : Administrateur Messages : 9221 Inscrit : 4-March 03 Lieu : Pau Membre no 927 |
Ne touche pas à la classe shopping_cart à moins de bien savoir ce que tu fais...
Tu ne peux passer qu'un seul id de produit depuis le panier car l'info est passé en get et que application_top se charge de récupérer l'action à faire ($_GET['action']) et l'id du produit ($_GET['products_id']). C'est donc là que tu dois agir (dans application_top) quand tu supprimes un produit tu as bien identifié la section qui l'enlève du panier : Code case 'remove_product' : if (isset($HTTP_GET_VARS['products_id'])) { $cart->remove($HTTP_GET_VARS['products_id']); tep_redirect(tep_href_link(FILENAME_SHOPPING_CART)); } break; Donc avant la redirection (tep_redirect...) récupère l'id de ton produit maître avec la requête que tu cites plus bas (une fonction générique déportée pourrait faire cela) et supprime le aussi du panier avec $cart->remove() pour bien faire, il faudrait tester : 1 que l'id du master existe 2 que le master est bien dans le panier. Sinon des erreurs peuvent s'afficher. -------------------- Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues : Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums. Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin. ----------------------------- Quelques sites de référence --------------------------- PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien) |
|
25 Mar 2012, 15:26
Message
#4
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 103 Inscrit : 11-October 10 Lieu : Villemomble Membre no 28103 |
Désolé d'avoir mis si longtemps à répondre,
Donc j'ai créer une fonction pour récupérer mes id comme tu me la conseillé Gnidhal, la voici : Code function master_in_cart($products_id) { global $cart; $value_id = $products_id; foreach ($cart->contents as $key => $value) { $prod_id = explode('{',$key); if ($prod_id[0] == $products_id) { $value_id = $prod_id[0]; } } return $value_id; } Alors si j'intègre le tout à mon panier (shopping_cart.php) et que j'ajoute le code suivant : Code $master_prod = tep_db_query("select products_master, products_master_status, products_listing_status from " . TABLE_PRODUCTS . " where products_id = '" . $products[$i]['id'] . "'"); $master_prod_values = tep_db_fetch_array($master_prod); if (!master_in_cart($master_prod_values['products_master'])) { $master_link_id = $products[$i]['id']; } if ($master_prod_values['products_master'] == $master_link_id) { $prod_link_id = $master_prod_values['products_master']; } else { $prod_link_id = $products[$i]['id']; } $info_box_contents[$cur_row][] = array('align' => 'center', 'params' => 'class="productListing_image" valign="midlle" width="20px"', 'text' => '<a class="opacity_min" href="' . tep_href_link(FILENAME_SHOPPING_CART, 'action=remove_product&products_id=' . $prod_link_id) . '">' . tep_image(DIR_WS_ICONS . 'ndc_picto_bin.gif', TABLE_HEADING_REMOVE, 11, 13) . '</a>'); là si mon client décide de supprimer le produit esclave (forfait couleur dans mon cas), c'est le produit maître qui ce supprime en premier puis il faut qu'il clique une seconde fois pour supprimer le forfait couleur (produit esclave). Donc dans un sens sa me convient (a moitié) puisqu'il ne faut surtout pas qu'il puisse supprimer uniquement le forfait couleur mais sa aurait été beaucoup mieux si on pouvait supprimer les deux en même temps. Problème je n'arrive pas en passant par la case remove_product du fichier application_top.php à lui faire comprendre ma demande, en fait soit il me supprime rien, soit (au malheur) il me supprime le produit esclave mais jamais il me supprime le produit maître et le produit esclave. Voici le code que j'ai mis dans application_top : Code case 'remove_product' : if (isset($HTTP_GET_VARS['products_id'])) { $master_prod = tep_db_query("select products_master, products_master_status, products_listing_status from " . TABLE_PRODUCTS . " where products_id = '" . $HTTP_GET_VARS['products_id'] . "'"); $master_prod_values = tep_db_fetch_array($master_prod); if (!master_in_cart($master_prod_values['products_master'])) { $master_link_id = $HTTP_GET_VARS['products_id']; } if ($master_prod_values['products_master'] == $master_link_id) { $cart->remove($master_prod_values['products_master'] && $cart->remove($HTTP_GET_VARS['products_id'])); } else { $cart->remove($HTTP_GET_VARS['products_id']); } tep_redirect(tep_href_link(FILENAME_SHOPPING_CART)); } break; et la fonction master_in_cart est intégré au fichier general.php Voila je ne comprend pas d'ou vient mon erreur pourquoi sa fonctionne dans shopping_cart et pas application_top. Merci EDIT : bon en modifiant remove_product de cette façon : Code case 'remove_product' : if (isset($HTTP_GET_VARS['products_id'])) { $master_prod = tep_db_query("select products_master, products_master_status, products_listing_status from " . TABLE_PRODUCTS . " where products_id = '" . $HTTP_GET_VARS['products_id'] . "'"); $master_prod_values = tep_db_fetch_array($master_prod); $cart->remove($HTTP_GET_VARS['products_id'], $cart->remove($master_prod_values['products_master'])); tep_redirect(tep_href_link(FILENAME_SHOPPING_CART)); } break; Je m’aperçois que sa fonctionne, le produit maître et esclave est sont bien supprimer. Mais pourquoi j'ai l'impression que ma première idée avec la fonction master_in_cart pour récupérer les id (comme conseillé par Gnidhal) était meilleur. Merci Ce message a été modifié par Rusti - 25 Mar 2012, 16:54. -------------------- osCommerce v2.3
|
|
30 Mar 2012, 22:02
Message
#5
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 103 Inscrit : 11-October 10 Lieu : Villemomble Membre no 28103 |
Bon pour ceux qui comme moi voudrais supprimer le produit esclave et le produit maître en même temps (et qui utilise la suppression en un clic dans leur panier case 'remove_product')le code suivant fonctionne :
Dans application_top.php : Code case 'remove_product' : if (isset($HTTP_GET_VARS['products_id'])) { $master_prod = tep_db_query("select products_master, products_master_status, products_listing_status from " . TABLE_PRODUCTS . " where products_id = '" . $HTTP_GET_VARS['products_id'] . "'"); $master_prod_values = tep_db_fetch_array($master_prod); $cart->remove($HTTP_GET_VARS['products_id'], $cart->remove($master_prod_values['products_master'])); tep_redirect(tep_href_link(FILENAME_SHOPPING_CART)); } break; Maintenant avec ce code aucune vérification n'est faite (voir le post de Gnidhal au dessus) donc j'ai un autre code avec une fonction déportée et les vérifications, le soucis est que je ne me sert pas de Master Product pour ce qui la été conçu au départ et ma boutique est déjà très modifier donc je ne le post pas mais si quelqu’un le veux quand même il suffit juste de me le demander, je le posterais ou l'enverais. Merci -------------------- osCommerce v2.3
|
|
Version bas débit | Nous sommes le : 28th March 2024 - 22:54 |
Ce site est déclaré auprès de la commision Nationale de l'Informatique et des Libertés (déclaration n°: 1043896) |