[résolu]bouton +/-, pour la quantité dans le panier |
Bienvenue invité ( Connexion | Inscription )
[résolu]bouton +/-, pour la quantité dans le panier |
21 Apr 2005, 09:01
Message
#1
|
|||||
Ceinture blanche OSC Groupe : Membres Messages : 19 Inscrit : 8-April 05 Lieu : CLERMONT FERRAND Membre no 5427 |
Bonjour Je cherche à intégrer les boutons +/- dans la page shopping_cart.php, pour cela j'ai recupéré le code de la page product_info de ma creload 6. Toutefois ce code ne fonctionne que si un seul produit est présent dans le panier. Voici le code
et
Pour que ce code fonctionne avec plusieurs produit dans le panier, je pense qu'il faudrait que cart_quantity soit un tableau. Mais ne connaissant très peu javascript je n'arrive pas à le récupérer dans ma fonction. Pouvez vous me dire si je suis sur la bonne voix ? Et m'aider à résoudre mon problème merci d'avance Gaëlle -------------------- osC 2.2 MS2
-> menubar_DHTML_V1.0 -> back_button_improved |
||||
|
21 Apr 2005, 09:15
Message
#2
|
|
Ceinture orange+ OSC Groupe : Membres Messages : 353 Inscrit : 17-April 05 Lieu : Plus dans le sud que dans le nord Membre no 5534 |
une question Gaelle... où as tu trouvé ce code en javascript ? houra.fr ? ooshop.fr ? le guide santé ?
Contact moi en MP ou mieux, par mail, je serai peut être te guider EN tout cas, pour intégrer ce genre de script il faut modifier de fond en comble les fonctions disponibles dans la classes shopping_cart, et non pas dans le fichier shopping_cart ou product_info à la racine du serveur Ce message a été modifié par Quadricolor - 18 Jul 2006, 14:30. |
|
25 Apr 2005, 00:40
Message
#3
|
|
Ceinture bleue OSC Groupe : Membres Messages : 818 Inscrit : 11-April 05 Lieu : Lyon Membre no 5456 |
salut,
je souhaite faire de meme, j'ai essayé sans succes, voici mon poste : (a la fin) pourriez vous en faire profiter la communauté. merci. a+ -------------------- |
|
25 Apr 2005, 09:25
Message
#4
|
|
2eme dan OSC Groupe : Membres VIP Messages : 3526 Inscrit : 12-June 03 Lieu : Montpellier Membre no 1239 |
Toutes ces modifications sont à faire dans catalog/shopping_cart.php
2 pbs dans ton code gaelle: 1- Ta fonction javascript n'indique pas quel label est concerné par l'ajout ou la soustraction du nbre d'article (utile si il y a plusieurs articles dans le panier). Il faut donc lui passer en paramètre le numéro spécifique du champ ("i"): Lignes à ajouter par exemple juste avant </head> (vers ligne 41): CODE <script language="javascript"> function majQuantity(qty,i) { quantity = document.cart_quantity['cart_quantity['+i+']'].value; quantity = parseInt(quantity) + parseInt(qty) if (quantity < 1) { quantity = 1; } document.cart_quantity['cart_quantity['+i+']'].value = quantity; } </script> 2- pour le code des champs, il faut - indiquer des noms différents pour chaque champ en utilisant l'incrémentation de la boucle "for" ('cart_quantity['.$i.']'); - modifier le "onClick" de la balise DIV pour envoyer en paramètre le chiffre d'incrémentation ("onClick="majQuantity(1,'.$i.')") et lui demander un submit pour recalculer automatiquement le panier ("document.forms.cart_quantity.submit()"): remplacer (vers ligne 157) les lignes suivantes: CODE $info_box_contents[$cur_row][] = array('align' => 'center', par celles-ci:'params' => 'class="productListing-data" valign="top"', 'text' => tep_draw_input_field('cart_quantity[]', $products[$i]['quantity'], 'size="4"') . tep_draw_hidden_field('products_id[]', $products[$i]['id'])); CODE $info_box_contents[$cur_row][] = array('align' => 'center', 'params' => 'class="productListing-data" valign="top"', 'text' => ' <table border="0" cellspacing="0"> <tr> <td valign="middle" class="qte"> <div align="right">'. tep_draw_input_field('cart_quantity['.$i.']', $products[$i]['quantity'], 'size="4"') . tep_draw_hidden_field('products_id[]', $products[$i]['id']).' </div> </td> <td class="qte" > <div onClick="majQuantity(1,'.$i.'); document.forms.cart_quantity.submit()">'.tep_image(DIR_WS_IMAGES.'plus.gif', IMAGE_BUTTON_PLUS).'</div> <div onClick="majQuantity(-1,'.$i.'); document.forms.cart_quantity.submit()">'.tep_image(DIR_WS_IMAGES.'moins.gif', IMAGE_BUTTON_MOINS).'</div> </td> <td align="center"> </td> </tr> </table>' ); Bon code... Ce message a été modifié par JeanLuc - 19 Dec 2007, 11:37.
Raison de l'édition : Pour une meilleure compréhension des modifications à apporter (dans quel fichier et à quel endroit...)
-------------------- |
|
25 Apr 2005, 14:55
Message
#5
|
|
Ceinture blanche OSC Groupe : Membres Messages : 19 Inscrit : 8-April 05 Lieu : CLERMONT FERRAND Membre no 5427 |
merci beaucoup vous m'enlevez une grosse épine du pied.
Bonne journée Tchao -------------------- osC 2.2 MS2
-> menubar_DHTML_V1.0 -> back_button_improved |
|
25 Apr 2005, 20:42
Message
#6
|
|||||
Ceinture bleue OSC Groupe : Membres Messages : 818 Inscrit : 11-April 05 Lieu : Lyon Membre no 5456 |
La, un grand merci jean luc, ca va pas jusqu'a m'enlever une epine du pied, mais ca rend le shopping cart plus fonctionnel. cependant, configuré comme ca , le javascript ne sert à rien , vu que tu recalcule la page immediatement, personnellement, je prefere avoir l'utilité du recalculer : -faire les modifs avec la main du rollover (je sais c un detail mais bon) -puis cliquer sur recalculer : si vous voulez configurer de cette maniere : remplacer :
par :
voila, encore merci jean luc. a+ dans l'optimisation... -------------------- |
||||
|
4 May 2005, 11:40
Message
#7
|
|
Ceinture jaune OSC Groupe : Membres Messages : 45 Inscrit : 21-April 05 Membre no 5594 |
@stepibou : j'aime bien ton approche, ça me paraît sympa pour mettre à jour les quantités sur plusieurs articles tout en n'envoyant qu'une seule requête.
Par contre, c'est dommage que tu ne colles pas tout le code de ton shopping_cart.php, d'autant plus que tu utilises la MS2 Ncp Gaëlle Merchi d'avance de stroumpfer les nioubies -------------------- osCommerce MS2 v1.2 en ligne et en local
plug : Admin Access Level Accounts 2.3 fr • Box Image Thema 2.7 fr • WYSIWYG HTMLArea MS2 1.7 fr |
|
4 May 2005, 18:35
Message
#8
|
|||
Ceinture bleue OSC Groupe : Membres Messages : 818 Inscrit : 11-April 05 Lieu : Lyon Membre no 5456 |
salut, donc pour resumer vers la ligne 170 du shopping cart :
voilou a+ -------------------- |
||
|
22 Mar 2006, 00:43
Message
#9
|
|
Ceinture bleue OSC Groupe : Membres Messages : 1123 Inscrit : 7-October 04 Membre no 3437 |
petit prob ca ne recalcule pas si je ne clique pas sur le bouton recalculer :
CODE [edit modération code supprimé]
-------------------- oscommerce 2.2-ms2 fr +
théma - ventes croisées - agrandissement sans popup -pas de commande si prix zéro - FCKeditor v 2.2.1 -afficher nom de famille + prenom client - menubarv1 - Store Pick Up Version 1.4 - featured_products_v1.5.5_1- QTPRO 4.3 - Prof_Invoice&PackingSlip_v0.2_1 - Products_Short_Descriptions_V1_03 - tvaintracom_v5 - osplayer v2.1 - Download_Controllerv5.3 MS2.2_21 - CustomerDiscount v1.1 - Member Approval 1.5 - ask a question 1.0 (modifié) - Product sold v1.2 |
|
22 Mar 2006, 12:53
Message
#10
|
|
Ceinture bleue OSC Groupe : Membres Messages : 1123 Inscrit : 7-October 04 Membre no 3437 |
Bon j'ai finalement pris la méthode de jeanluc (dont avec le javascript) et aucuns problèmes avec plusieurs articles , calcul automatique et tout , c'est parfait merci beaucoup.
ps:le recalcul se fait aussi si on entre une valeur puis "entrer", je ne sais pas si c'est le cas à la base. -------------------- oscommerce 2.2-ms2 fr +
théma - ventes croisées - agrandissement sans popup -pas de commande si prix zéro - FCKeditor v 2.2.1 -afficher nom de famille + prenom client - menubarv1 - Store Pick Up Version 1.4 - featured_products_v1.5.5_1- QTPRO 4.3 - Prof_Invoice&PackingSlip_v0.2_1 - Products_Short_Descriptions_V1_03 - tvaintracom_v5 - osplayer v2.1 - Download_Controllerv5.3 MS2.2_21 - CustomerDiscount v1.1 - Member Approval 1.5 - ask a question 1.0 (modifié) - Product sold v1.2 |
|
2 Aug 2006, 16:06
Message
#11
|
|
Ceinture bleue OSC Groupe : Membres Messages : 1123 Inscrit : 7-October 04 Membre no 3437 |
Je viens de voir qu'il ajoute systématiquement 2 articles au panier !
Comment ça se fait ça ? CODE <?php $info_box_contents = array(); $info_box_contents[0][] = array('align' => 'center', 'params' => 'class="productListing-heading"', 'text' => TABLE_HEADING_REMOVE); $info_box_contents[0][] = array('params' => 'class="productListing-heading"', 'text' => TABLE_HEADING_PRODUCTS); $info_box_contents[0][] = array('align' => 'center', 'params' => 'class="productListing-heading"', 'text' => TABLE_HEADING_QUANTITY); $info_box_contents[0][] = array('align' => 'right', 'params' => 'class="productListing-heading"', 'text' => TABLE_HEADING_TOTAL); $any_out_of_stock = 0; $products = $cart->get_products(); for ($i=0, $n=sizeof($products); $i<$n; $i++) { // Push all attributes information in an array if (isset($products[$i]['attributes']) && is_array($products[$i]['attributes'])) { while (list($option, $value) = each($products[$i]['attributes'])) { echo tep_draw_hidden_field('id[' . $products[$i]['id'] . '][' . $option . ']', $value); $attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_id = '" . $products[$i]['id'] . "' and pa.options_id = '" . $option . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $value . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $languages_id . "' and poval.language_id = '" . $languages_id . "'"); $attributes_values = tep_db_fetch_array($attributes); $products[$i][$option]['products_options_name'] = $attributes_values['products_options_name']; $products[$i][$option]['options_values_id'] = $value; $products[$i][$option]['products_options_values_name'] = $attributes_values['products_options_values_name']; $products[$i][$option]['options_values_price'] = $attributes_values['options_values_price']; $products[$i][$option]['price_prefix'] = $attributes_values['price_prefix']; } } } for ($i=0, $n=sizeof($products); $i<$n; $i++) { if (($i/2) == floor($i/2)) { $info_box_contents[] = array('params' => 'class="productListing-even"'); } else { $info_box_contents[] = array('params' => 'class="productListing-odd"'); } $cur_row = sizeof($info_box_contents) - 1; $info_box_contents[$cur_row][] = array('align' => 'center', 'params' => 'class="productListing-data" valign="top"', 'text' => tep_draw_checkbox_field('cart_delete[]', $products[$i]['id'])); $products_name = '<table border="0" cellspacing="2" cellpadding="2">' . ' <tr>' . ' <td class="productListing-data" align="center"><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products[$i]['id']) . '">' . tep_image(DIR_WS_IMAGES . $products[$i]['image'], $products[$i]['name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a></td>' . ' <td class="productListing-data" valign="top"><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products[$i]['id']) . '"><b>' . $products[$i]['name'] . '</b></a>'; if (STOCK_CHECK == 'true') { $stock_check = tep_check_stock($products[$i]['id'], $products[$i]['quantity']); if (tep_not_null($stock_check)) { $any_out_of_stock = 1; $products_name .= $stock_check; } } if (isset($products[$i]['attributes']) && is_array($products[$i]['attributes'])) { reset($products[$i]['attributes']); while (list($option, $value) = each($products[$i]['attributes'])) { $products_name .= '<br><small><i> - ' . $products[$i][$option]['products_options_name'] . ' ' . $products[$i][$option]['products_options_values_name'] . '</i></small>'; } } $products_name .= ' </td>' . ' </tr>' . '</table>'; $info_box_contents[$cur_row][] = array('params' => 'class="productListing-data"', 'text' => $products_name); $info_box_contents[$cur_row][] = array('align' => 'center', 'params' => 'class="productListing-data" valign="top"', 'text' => ' <table border="0" cellspacing="0"> <tr> <td valign="middle" class="qte"> <div align="right">'. tep_draw_input_field('cart_quantity['.$i.']', $products[$i]['quantity'], 'size="4"') . tep_draw_hidden_field('products_id[]', $products[$i]['id']).' </div> </td> <td class="qte" > <div onClick="majQuantity(1,'.$i.'); document.forms.cart_quantity.submit()">'.tep_image(DIR_WS_IMAGES.'plus.gif', IMAGE_BUTTON_PLUS).'</div> <div onClick="majQuantity(-1,'.$i.'); document.forms.cart_quantity.submit()">'.tep_image(DIR_WS_IMAGES.'moins.gif', IMAGE_BUTTON_MOINS).'</div> </td> <td align="center"> </td> </tr> </table>' ); $info_box_contents[$cur_row][] = array('align' => 'right', 'params' => 'class="productListing-data" valign="top"', 'text' => '<b>' . $currencies->display_price($products[$i]['final_price'], tep_get_tax_rate($products[$i]['tax_class_id']), $products[$i]['quantity']) . '</b>'); } new productListingBox($info_box_contents); ?> Ce message a été modifié par NEMROD34 - 2 Aug 2006, 16:18. -------------------- oscommerce 2.2-ms2 fr +
théma - ventes croisées - agrandissement sans popup -pas de commande si prix zéro - FCKeditor v 2.2.1 -afficher nom de famille + prenom client - menubarv1 - Store Pick Up Version 1.4 - featured_products_v1.5.5_1- QTPRO 4.3 - Prof_Invoice&PackingSlip_v0.2_1 - Products_Short_Descriptions_V1_03 - tvaintracom_v5 - osplayer v2.1 - Download_Controllerv5.3 MS2.2_21 - CustomerDiscount v1.1 - Member Approval 1.5 - ask a question 1.0 (modifié) - Product sold v1.2 |
|
4 Aug 2006, 17:23
Message
#12
|
|
Ceinture bleue OSC Groupe : Membres Messages : 1123 Inscrit : 7-October 04 Membre no 3437 |
Personne pour me mettre sur la voie ?
La boutique vas être mise en ligne et mettre 2 articles directement dans le panier c'est plutôt génant. Je ne vois pas du tout d'ou ça viens , les boutons fonctionnent bien , ça se recalcule immédiatement mais voilà quand on clique sur achat il en met direct 2. -------------------- oscommerce 2.2-ms2 fr +
théma - ventes croisées - agrandissement sans popup -pas de commande si prix zéro - FCKeditor v 2.2.1 -afficher nom de famille + prenom client - menubarv1 - Store Pick Up Version 1.4 - featured_products_v1.5.5_1- QTPRO 4.3 - Prof_Invoice&PackingSlip_v0.2_1 - Products_Short_Descriptions_V1_03 - tvaintracom_v5 - osplayer v2.1 - Download_Controllerv5.3 MS2.2_21 - CustomerDiscount v1.1 - Member Approval 1.5 - ask a question 1.0 (modifié) - Product sold v1.2 |
|
4 Aug 2006, 17:55
Message
#13
|
|
Ceinture bleue OSC Groupe : Membres Messages : 818 Inscrit : 11-April 05 Lieu : Lyon Membre no 5456 |
Y a application_top a modifier,
Si tu lisais mes posts precedents! je te remet le lien au cas ou tu le trouve pas : (dans ta precipitation lol) http://www.oscommerce-fr.info/forum/index....showtopic=18019 a+ ps : paye tes up!! reli attentivement les posts plutot. Ce message a été modifié par stepibou - 4 Aug 2006, 17:56. -------------------- |
|
6 Aug 2006, 10:53
Message
#14
|
|
Ceinture bleue OSC Groupe : Membres Messages : 1123 Inscrit : 7-October 04 Membre no 3437 |
OK c'est bon , mais en effet parfois les réponses sont dispersées un peu partout sur le forum , c'est pourquoi je propose que dans certains cas on synthétise le tout, et on pourrait le mettre , dans un forum comme questions courantes.
Donc ici la synthèse est : Contibuteurs: stepibou , JeanLuc , Pipo CITATION Dans includes/application_top.php remplacer CODE $cart->add_cart($HTTP_POST_VARS['products_id'], $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['products_id'], $HTTP_POST_VARS['id']))+1, $HTTP_POST_VARS['id']); par CODE $cart->add_cart($HTTP_POST_VARS['products_id'], $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['products_id'], $HTTP_POST_VARS['id']))+$product_quantity, $HTTP_POST_VARS['id']); Dans shopping_cart.php Vers la ligne 143: CODE $info_box_contents[$cur_row][] = array('align' => 'center', 'params' => 'class="productListing-data" valign="top"', 'text' => tep_draw_input_field('cart_quantity[]', $products[$i]['quantity'], 'size="4"') . tep_draw_hidden_field('products_id[]', $products[$i]['id'])); Remplacé par : CODE $info_box_contents[$cur_row][] = array('params' => 'class="productListing-data"', 'text' => $products_name); // javascript jaen luc ?> <script language="javascript"> function majQuantity(qty,i) { quantity = document.cart_quantity['cart_quantity['+i+']'].value; quantity = parseInt(quantity) + parseInt(qty) if (quantity < 1) { quantity = 1; } document.cart_quantity['cart_quantity['+i+']'].value = quantity; } </script> <?php $info_box_contents[$cur_row][] = array('align' => 'center', 'params' => 'class="productListing-data" valign="top"', 'text' => /*tep_draw_input_field('cart_quantity[]', $products[$i]['quantity'], 'size="4"') . tep_draw_hidden_field('products_id[]', $products[$i]['id'])); +- shopping cart par jean luc post 19815 */ ' <table border="0" cellspacing="0"> <tr> <td valign="middle" class="qte"> <div align="center">'. tep_draw_input_field('cart_quantity['.$i.']', $products[$i]['quantity'], 'size="4"') . tep_draw_hidden_field('products_id[]', $products[$i]['id']).' </div> </td> <td class="qte" > <div align="center"><div><div onClick="majQuantity(1,'.$i.'); document.forms.cart_quantity.submit()">'.tep_image(DIR_WS_IMAGES.'plus.gif', IMAGE_BUTTON_PLUS).'</div> <div onClick="majQuantity(-1,'.$i.'); document.forms.cart_quantity.submit()">'.tep_image(DIR_WS_IMAGES.'moins.gif', IMAGE_BUTTON_MOINS).'</div></div> </td> <td align="center"> </td> </td> </tr> </table> ' ); Faire les boutons et les mettre dans catalogue/images/ Merci à vous trois edit: ok j'ai compris : je ne sais pas pourquoi mais j'avaius une page application_top.php à la racine, c'est donc celle-ci que je changé et pas celle de /includes ... Donc now c'est ok et je corrige la complilation sur ce sujet. J'ai mixé un peu le tout c'est ok calcul automatique et tout. Ce message a été modifié par NEMROD34 - 6 Aug 2006, 13:34. -------------------- oscommerce 2.2-ms2 fr +
théma - ventes croisées - agrandissement sans popup -pas de commande si prix zéro - FCKeditor v 2.2.1 -afficher nom de famille + prenom client - menubarv1 - Store Pick Up Version 1.4 - featured_products_v1.5.5_1- QTPRO 4.3 - Prof_Invoice&PackingSlip_v0.2_1 - Products_Short_Descriptions_V1_03 - tvaintracom_v5 - osplayer v2.1 - Download_Controllerv5.3 MS2.2_21 - CustomerDiscount v1.1 - Member Approval 1.5 - ask a question 1.0 (modifié) - Product sold v1.2 |
|
23 Aug 2006, 16:59
Message
#15
|
|
Ceinture orange OSC Groupe : Membres Messages : 172 Inscrit : 17-May 06 Membre no 10423 |
Bonjour
je me permet de poster ce message apres maintes recherches j'ai fait les modifs inclues dans ce post sur shopping_cart.php et application_top.php ca fonctionne mais maintenant quand un client ajoute un produit a partir de la page detail (product_info.php) le produit ne s'ajoute pas au panier par contre il s'ajoute bien si la demande est faite a partir de la page index du site j'espere etre clair dans ma descruiption du probleme et savoir si qq'un a deja eu ce probleme merci a tous pour votre aide Bon apres pas mal de galeres c'est ok probleme de copier coller desolé merci quand meme Ce message a été modifié par dino95 - 25 Aug 2006, 22:35. -------------------- osc 2.2-ms2
- send_order_html_email - pdf_catalog203 - virementbancaire - featured_products_v1.5.6 - label_print_fr - ajax_popup_image_1_2 - AntiRobotRegistrationValidation2.6 - big_images 1.25 - 2.2MS2 - Admin Access Level Account |
|
13 Nov 2006, 16:31
Message
#16
|
|
Ceinture blanche+ OSC Groupe : Membres Messages : 20 Inscrit : 21-August 06 Membre no 11638 |
Bonjour,
j'ai repris le code pour l'adapter à products_listing mais je bloque...sur le javascript afin d'ajouter ou soustraire 1 à la quantité, néanmoins ça fonctionne lorsque la liste de produit à un article ou que je saisie directement le nombre dans le champs. Une petite idée serait la bienvenue. |
|
13 Dec 2007, 13:53
Message
#17
|
|
Ceinture blanche OSC Groupe : Membres Messages : 7 Inscrit : 25-November 07 Membre no 19871 |
Bonjour,
vraiment merci pour cette fonction c'est vraiment bien! Par contre, j'ai un problème, lorsque je l'installe j'ai les fonctions : ENLEVER / PRODUIT (avec photo du pdt) / QTE (là encore la photo) / la fonction plus ou moins / et le total Ce que j'aimerais enlever c'est la partie QTE avec la photo qui va avec car ça déforme toute ma page. Est ce que quelqu'un pourrait me dire quelle code je dois enlever car j'ai presque tout essayé, et ça reste. Merci d'avance, Maxime |
|
Version bas débit | Nous sommes le : 29th March 2024 - 13:21 |
Ce site est déclaré auprès de la commision Nationale de l'Informatique et des Libertés (déclaration n°: 1043896) |