Bienvenue invité ( Connexion | Inscription )
![]() ![]() |
14 Nov 2008, 23:28
Message
#1
|
|
|
Ceinture blanche OSC Groupe : Membres Messages : 18 Inscrit : 27-October 08 Membre no 23511 |
Bonsoir,
Je dois être stupide, et c'est sans doute très simple, mais je n'arrive pas à faire en sorte que mes clients puissent commander une quantité décimale (ex : 1,5 ou 0, Je n'ai rien trouvé dans l'admin qui permette de configurer ça... Je pense qu'il faut mettre les pattes dans le code... je soupçonne même qu'il faut virer un (int) quelque part... mais je ne suis pas vraiment sûre de mon coup ! Quelqu'un peut-il me guider (sachant que je n'ai pas besoin que les stocks soient incrémentés) ? Merci par avance ! Ma version : OsCommerce V2.2 RC1 |
|
|
16 Nov 2008, 08:09
Message
#2
|
|
![]() 5eme dan OSC Groupe : Administrateur Messages : 7619 Inscrit : 28-December 03 Lieu : Hollywood les Granits Membre no 1773 |
Ou comment remettre un bug en place
http://www.oscommerce-fr.info/faq/qa_info.php?qID=135 Mais cette correction n'est plus à jour et devrait être modifiée dans la FAQ Dans catalog/includes/classes/shopping_cart.php fait une recherche de (int)$qty. Il y en a 3 Ligne 84 Code if (defined('MAX_QTY_IN_CART') && (MAX_QTY_IN_CART > 0) && ((int)$qty > MAX_QTY_IN_CART)) { Ligne 113 Code $this->contents[$products_id_string] = array('qty' => (int)$qty); et Ligne 115 Code if (tep_session_is_registered('customer_id')) tep_db_query("insert into " . TABLE_CUSTOMERS_BASKET . " (customers_id, products_id, customers_basket_quantity, customers_basket_date_added) values ('" . (int)$customer_id . "', '" . tep_db_input($products_id_string) . "', '" . (int)$qty . "', '" . date('Ymd') . "')"); Enleve le (int) devant $qty -------------------- |
|
|
16 Nov 2008, 09:08
Message
#3
|
|
|
5eme dan OSC Groupe : Administrateur Messages : 14910 Inscrit : 22-November 02 Membre no 610 |
Mais cette correction n'est plus à jour et devrait être modifiée dans la FAQ c'est fait -------------------- Ni Hot-line ni Service Après Vente, ces forums sont un lieu d'échanges.
Une Question? Rechercher / FAQ / docV1.pdf / docV2.pdf / contributions |
|
|
16 Nov 2008, 15:12
Message
#4
|
|
|
Ceinture blanche OSC Groupe : Membres Messages : 18 Inscrit : 27-October 08 Membre no 23511 |
Merci à tous les 2
j'avais vu ça dans la FAQ, en effet, mais comme ça ne correspondait pas au code que j'avais dans mon fichier, j'avais laissé tomber, de peur de faire une bêtise... Merci, en tout cas, voilà qui m'ôte une épine du pied |
|
|
16 Nov 2008, 17:16
Message
#5
|
|
|
Ceinture blanche OSC Groupe : Membres Messages : 18 Inscrit : 27-October 08 Membre no 23511 |
Bon, je rectifie : dans le fichier shopping_cart.php, je n'ai pas de $qty, encore moins de (int)$qty.
Les seuls (int) que j'ai sont les suivants : Citation where pa.products_id = '" . (int)$products[$i]['id'] . "' and pa.options_id = '" . (int)$option . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . (int)$value . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . (int)$languages_id . "' and poval.language_id = '" . (int)$languages_id . "'"); est-ce un de ceux_là que je dois supprimer ? merci par avance de vos réponses EDIT : faites excuse, j'ai écrit trop vite : je n'avais pas ouvert le bon fichier par contre, je viens de faire les modif indiquées, et... ça ne change rien à mon problème Je ne peux toujours pas saisir de quantités décimales. J'ai essayé avec un point, puis avec une virgule, mais ça ne change rien. Ce message a été modifié par manelle - 16 Nov 2008, 17:22. |
|
|
16 Nov 2008, 19:05
Message
#6
|
|
![]() 5eme dan OSC Groupe : Administrateur Messages : 7619 Inscrit : 28-December 03 Lieu : Hollywood les Granits Membre no 1773 |
Qui a remis du (int) dans notre dos ?
-------------------- |
|
|
16 Nov 2008, 19:23
Message
#7
|
|
![]() 5eme dan OSC Groupe : Administrateur Messages : 7619 Inscrit : 28-December 03 Lieu : Hollywood les Granits Membre no 1773 |
Et ben, c'est ceinture et bretelle...
Il faut AUSSI faire une recherche avec (int)$quantity Ligne 141 Code if (defined('MAX_QTY_IN_CART') && (MAX_QTY_IN_CART > 0) && ((int)$quantity > MAX_QTY_IN_CART)) { Ligne 158 Code $this->contents[$products_id_string] = array('qty' => (int)$quantity); et ligne 160 Code if (tep_session_is_registered('customer_id')) tep_db_query("update " . TABLE_CUSTOMERS_BASKET . " set customers_basket_quantity = '" . (int)$quantity . "' where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id_string) . "'"); Pareil, il faut enlever (int) devant chacun des 3 $quantity ET la ca marche, j'ai testé...Je n'ai plus qu'à modifier la FAQ. -------------------- |
|
|
16 Nov 2008, 20:47
Message
#8
|
|
|
Ceinture jaune OSC Groupe : Membres Messages : 64 Inscrit : 22-November 05 Lieu : Rhone Alpes Membre no 7934 |
Le (int) n'était-il pas revenu pour cause d'injection SQL ? même si dans ce cas il n'y a pas de risque !
-------------------- Christian oscommerce 2.2-ms2 fr + Qty_price_break
|
|
|
16 Nov 2008, 21:41
Message
#9
|
|
|
Ceinture blanche OSC Groupe : Membres Messages : 18 Inscrit : 27-October 08 Membre no 23511 |
Merci oneill, cette fois c'est bon
|
|
|
16 Nov 2008, 22:25
Message
#10
|
|
![]() Ceinture noire OSC Groupe : Membres Messages : 2871 Inscrit : 27-June 07 Lieu : Elancourt (78) Membre no 18127 |
Bonsoir,
Citation Le (int) n'était-il pas revenu pour cause d'injection SQL ? Si bien sûr mais ici on peut transtyper en float (ou int ou 0 selon le contenu de la chaîne de la variable postée pour la quantité) au moment du passage de la valeur postée à $quantity (si la variable contient bien une chaîne contenant une valeur décimale, si on peut dire ça..) :Code $quantity = 0 + $maPostVarQuantity par exempleSelon maPostVarQuantity { case "1.2" : $quantity vaudrat 1.2 en float case "1,2" : $quantity vaudrat 1 en int case "1" : $quantity vaudrat 1 en int case "essai_injection_sql" : $quantity vaudrat 0 en int } Donc bien entendu comme de juste il faut s'assurer que le séparateur décimal est bien le point (et pas la virgule cmme tout bon français serait tenter de mettre dans le champ) mais de toute façon ça on doit s'en assurer en javascript avant d'envoyer en post pour renvoyer une erreur directe par le navigateur avant le traitement par le serveur (bah oui traiter une erreur est inutile, v'la le pléonasme... Bonne fin de dimanche Ce message a été modifié par NoZic - 16 Nov 2008, 22:41. -------------------- "Les solutions existent toujours depuis longtemps, il suffit de les trouver."
|
|
|
24 Nov 2008, 23:58
Message
#11
|
|
|
Ceinture blanche OSC Groupe : Membres Messages : 18 Inscrit : 27-October 08 Membre no 23511 |
Zut, me revoilà... mon problème n'est en fait qu'à moitié réglé : je peux maintenant en effet saisir des quantités lors de la passation d'une commande dans le front office, mais quand je passe "en coulisses", dans l'admin, et que je vais voir les commandes (Menu Clients/commandes -> Commandes), mes décimales ont disparu... de même quand je vais dans le menu Rapports, les décimales ne sont pas prises en compte... et les prix totaux sont faux, du coup
J'imagine que je dois encore sacrifier quelques (int)... mais où ? Je précise que j'ai rajouté la contrib stats products orders. merci par avance de votre aide ! |
|
|
25 Nov 2008, 09:31
Message
#12
|
|
![]() 5eme dan OSC Groupe : Administrateur Messages : 7619 Inscrit : 28-December 03 Lieu : Hollywood les Granits Membre no 1773 |
Il te suffit de repérer les pages où ca arrive et rechercher un (int) associé à qty ou $quantity ou approchant. C'est qu'on va faire à ta place finalement.
-------------------- |
|
|
25 Nov 2008, 22:50
Message
#13
|
|
|
Ceinture blanche OSC Groupe : Membres Messages : 18 Inscrit : 27-October 08 Membre no 23511 |
Merci oneill,
c'est bien ce que je supposais, et j'ai commencé à recherché les (int) et les qty ou quantity dans plusieurs fichiers hier soir... mais je n'avais rien trouvé d'approchant... je n'abandonne pas, ceci dit, et je vais m'y remettre tout de suite (avec une loupe et une lampe de poche !) EDIT : je suis allée fouillée dans ma base de données, via phpmyadmin... et le type du champ products_quantity, dans la table orders products, est (int)... n'est-ce pas là qu'il faut que je cherche la solution à mon problème ? et si oui, je suppose qu'il faut que je choisisse le type DECIMAL, mais je ne sais pas quelle valeur définir dans la zone Taille/Valeurs. Bon, je sais, c'est un forum de support osCommerce, et pas MySQL... mais quand même, si vous aviez la réponse, ça m'arrangerait bien Merci à vous ! Ce message a été modifié par manelle - 25 Nov 2008, 23:17. |
|
|
26 Nov 2008, 05:48
Message
#14
|
|
![]() 2eme dan OSC Groupe : Membres VIP Messages : 3712 Inscrit : 11-April 07 Lieu : Ile de la Réunion Membre no 16487 |
Effectivement, dans la BDD c'est un type numérique (integer), faut le modifier en un type décimal, et cela dans au moins 2 tables, le panier et la table commande, voir même la table produit.
Cependant, tu pourrais tout simplement prendre exemple sur ce qui existe déjà, comme pour les prix, et puis tu as le Net en général, il doit y avoir des tutos la dessus. Mais bon, c'est simple, dans PhpMyAdmin, tu choisi "decimal", après, faut définir la longueur décimale Max que pourrait accepter ce champ. Exemple : On décide qu'il y aura pas plus de 2 décimales (donc 2 chiffre après la virgule) On estime que la quantité Max ne dépassera -> 99,99 -> Ca donne comme définition : DECIMAL(4,2) : 4 le nombre total de chiffres, 2 le nombre total de décimales. +1 pour NoZic (je plussoie Il serait bon de "typer" cette variable quantité au niveau de la Bdd, car supprimer comme ça le (int) sans précaution tu prends le risque d'avoir un de ces 4 un soucis. Le (int) avait justement 2 buts, non seulement de s'assurer que la donnée que l'on tente d'enregistrer dans la Bdd soit bien du type numérique, mais aussi que cela ne soit surtout pas autre chose (sql injection), donc dans ce cas là, et dans le pire des cas c'est 0 qui est enregistré, ce qui est très sécurisant. Et enfin, et juste par curiosité : Tu vends quoi comme produit pour offrir la possibilité de saisir 1.5 comme quantité ? Des paires de chaussettes ? Sans blague, j'en ai une qui manque un coté C'est donc possible de commander non pas une paire mais juste 1 chaussette (donc 0.5) ? Sérieusement, ce sont tous des produits et sans exception où il est possible de commander des 1.5 en quantité ? Car si certains oui et d'autre non (je dirais même surtout pas), ça peut être un peu (voir beaucoup) la tuile non ? Aussi, que l'on puisse saisir une quantité comme 1.5, ok, mais si on saisie 1.62, c'est possible aussi ? -------------------- Nous ne sommes pas un Service Après-Vente ni une Hot-Line !!!, et pas de "UP" et de doublon svp ...
Prenez le temps de lire les informations mises à votre dispositions avant de créer un sujet. Démarrer du bon pied -> Bien utiliser les forums | Bien poser sa question | Règles d'usage des forums Prés-Requis -> Les compétences requises pour réussir avec osCommerce Docs / Infos -> LA FAQ | Rechercher | Contributions | Contribution US Sujets épinglés -> Manuel d'utilisation MS2 | Structure OsC2.2 MS2 | ms2-fr-rc1-w3c | SSL : une obligation? | Design de la MS2 | Tutoriels CSS | Optimisez les performances de votre boutique | Taux de TVA à appliquer Utile -> WampServer | EasyPhp | Xampp | Mamp - Ftp -> FileZilla Apprendre -> siteduzero | alsacreations | apprendre-php | developpez.com |
|
|
26 Nov 2008, 08:45
Message
#15
|
|
![]() Ceinture noire OSC Groupe : Membres Messages : 2871 Inscrit : 27-June 07 Lieu : Elancourt (78) Membre no 18127 |
Salut shoprun,
Euh je me suis posé la même question, à quoi sert une quantité décimale (je suis dans l'identification et je fais des applications pour les clients sur les terminaux de lecture et des clients ont demandé une quantité décimale, j'ai pas bien compris) puisque ce sont des produits entiers... franchement je ne voyais pas. J'ai eu le client au téléphone et c'était des vendeurs de matériel de plomberie donc des tuyaux surtout, vendus... à la longueur et les clients pouvaient ne vouloir qu'un 1,75 m de tel tuyau... pareil pour les vendeurs de tissu, les clients peuvent ne vouloir que 3,3 m de tel tissu. Le plus dur pour un site est de devoir s'assurer que les produits entiers ne puissent pas être commandés avec une quantité décimale mais exclusivement avec des entiers et pas vice-versa d'ailleurs puisque le client peut vouloir 1 m pile poil de tuyaux (et oui si tu as les deux types de produits, faut le prévoir...). Hummmmm... bon courage... Ce message a été modifié par NoZic - 26 Nov 2008, 08:48. -------------------- "Les solutions existent toujours depuis longtemps, il suffit de les trouver."
|
|
|
26 Nov 2008, 09:13
Message
#16
|
|
![]() 2eme dan OSC Groupe : Membres VIP Messages : 3712 Inscrit : 11-April 07 Lieu : Ile de la Réunion Membre no 16487 |
Mise à part ma petite blague, ça, c'était pour la bonne humeur, mais effectivement j'avais ma petite idée sur le truc, mais savoir ses types de produits c'est par curiosité uniquement.
Cependant, c'est surtout ma dernière remarque qui me semble assez important d'avoir une réponse, car vendre 1.54m de tissus, pas de souci, mais si à coté de ça on vends la paire de ciseau, ça va être difficile de traiter la commande avec une quantité de 0.5 ? Faut il croire ou admettre que les clients seront disciplinés, ou ne feront pas d'erreurs ??? Dans osC (la MS2) on le sais bien, il n'y a pas d'unité de mesure, c'est nous qui la donnons de manière très virtuel, il y a rien. Dans un cas comme celui ci, il faut un élément qui puisse dire quel est le type de produit, et l'unité de mesure peut être un excellent moyen pour traiter le problème, surtout si on vend tantôt à la pièce (c'est le cas par défaut) ou au Kg, au mètre, etc ... Ensuite, il peut avoir une autre solution, comme par exemple conserver le champ quantité comme il est, donc de ne pas permettre de saisir dans celui ci un nombre décimal (pas de 1.54), mais de rajouter juste à coté un menu déroulant réservé aux décimales, une liste de choix comme par exemple : 00, 05, 10, 15, 20, 25, ..... 95 Certes, c'est un peu limité, mais ça offre l'avantage de connaitre les valeurs retournée à l'avance, donc bien formatées. Mais ici, vu que c'est un nouvel élément, faudra coder pour récupérer sa valeur et la rajouter à la quantité. Mais encore, cette solution couplée avec celle plus haut, peut être mis en place sans trop de problème, en gros : SI le type est "à la pièce" ALORS pas de menu déroulant SINON affichage du menu déroulant. Après, il peut avoir une tout autre solution, comme utilser les attributs de produits, il y a certes des limites, mais par exemple et pour 1 produit, on peut faire des options du genre : 0.5m, 1.00m, 1.50m, etc ... ou 0.5Kg, 1.00Kg, 1.50Kg, etc ... Bref, il y a des solutions, mais faudra surement faire un plus de modifs que juste supprimer des (int) ou les remplacer par des (float). -------------------- Nous ne sommes pas un Service Après-Vente ni une Hot-Line !!!, et pas de "UP" et de doublon svp ...
Prenez le temps de lire les informations mises à votre dispositions avant de créer un sujet. Démarrer du bon pied -> Bien utiliser les forums | Bien poser sa question | Règles d'usage des forums Prés-Requis -> Les compétences requises pour réussir avec osCommerce Docs / Infos -> LA FAQ | Rechercher | Contributions | Contribution US Sujets épinglés -> Manuel d'utilisation MS2 | Structure OsC2.2 MS2 | ms2-fr-rc1-w3c | SSL : une obligation? | Design de la MS2 | Tutoriels CSS | Optimisez les performances de votre boutique | Taux de TVA à appliquer Utile -> WampServer | EasyPhp | Xampp | Mamp - Ftp -> FileZilla Apprendre -> siteduzero | alsacreations | apprendre-php | developpez.com |
|
|
26 Nov 2008, 23:09
Message
#17
|
|
|
Ceinture blanche OSC Groupe : Membres Messages : 18 Inscrit : 27-October 08 Membre no 23511 |
Bonsoir,
En fait, c'est très simple : les produits que je vends sont des produits alimentaires ; il y a donc des yaourts, par exemple (pas de quantités décimales, là, forcément), mais aussi de la viande : il faut donc qu'il soit possible de commander 1,5 kilo de boeuf bourguignon, par exemple ! Pour l'anecdote, je fais cette boutique en ligne pour une assoc, dont l'objet est à la fois d'assurer aux producteurs agricoles locaux un revenu décent, et aux consommateurs locaux des produits d'excellente qualité, à un prix plus que raisonnable (puisque sans intermédiaires), et plus stable que dans le circuit normal... c'est un peu dans le même état d'esprit que les AMAP, si ça vous dit quelque chose. Donc, les clients de la boutique sont plutôt disciplinés, et même s'ils commettaient une erreur (genre commander 1.35 yaourts aux fraises !!!), ça n'aurait pas vraiment d'importance, puisqu'ils ne règlent pas en ligne, mais en venant chercher leurs produits "au comptoir"... ce n'est donc pas compliqué de rectifier en cas d'erreur. Mais voilà, j'avais vraiment besoin de ces quantités décimales ! je vais donc tester ce que tu préconises, shoprun, et je pense que je vais avoir enfin la solution pour mes commandes de bourguignon ! Merci encore de votre aide ! |
|
|
27 Nov 2008, 05:41
Message
#18
|
|
![]() 2eme dan OSC Groupe : Membres VIP Messages : 3712 Inscrit : 11-April 07 Lieu : Ile de la Réunion Membre no 16487 |
Citation (shoprun) Tu vends quoi comme produit pour offrir la possibilité de saisir 1.5 comme quantité ? Des paires de chaussettes ? Sans blague, j'en ai une qui manque un coté Citation (manelle) En fait, c'est très simple : les produits que je vends sont des produits alimentaires Bon ben c'est cuit pour mon coté de chaussette manquant -------------------- Nous ne sommes pas un Service Après-Vente ni une Hot-Line !!!, et pas de "UP" et de doublon svp ...
Prenez le temps de lire les informations mises à votre dispositions avant de créer un sujet. Démarrer du bon pied -> Bien utiliser les forums | Bien poser sa question | Règles d'usage des forums Prés-Requis -> Les compétences requises pour réussir avec osCommerce Docs / Infos -> LA FAQ | Rechercher | Contributions | Contribution US Sujets épinglés -> Manuel d'utilisation MS2 | Structure OsC2.2 MS2 | ms2-fr-rc1-w3c | SSL : une obligation? | Design de la MS2 | Tutoriels CSS | Optimisez les performances de votre boutique | Taux de TVA à appliquer Utile -> WampServer | EasyPhp | Xampp | Mamp - Ftp -> FileZilla Apprendre -> siteduzero | alsacreations | apprendre-php | developpez.com |
|
|
1 Dec 2008, 10:06
Message
#19
|
|
|
Ceinture bleue OSC Groupe : Modérateurs Messages : 1027 Inscrit : 16-December 02 Lieu : Est Membre no 669 |
Bonjour,
manelle je ne sais pas si tu as avancé sur ce problème mais j'ai trouvé ça si ça peut t'aider http://addons.oscommerce.com/info/3779 http://addons.oscommerce.com/info/3938 -------------------- Aide toi et le ciel t'aidera.
C'est comme ça que fonctionne l'esprit Open Source : Code function j_ai_besoin() { if (ça existe) j'utilise; if (ça existe mais c'est incomplet) j'améliore et je partage; if (ça n'existe pas) je développe et je partage; if (je réclame) exit; Return "code amélioré" or "developpeur satisfait" or die; } Copyright Gnidhal --> Comment Bien utiliser le Forum --> Rechercher & Visualiser les Contributions |
|
|
1 Dec 2008, 21:58
Message
#20
|
|
|
Ceinture blanche OSC Groupe : Membres Messages : 18 Inscrit : 27-October 08 Membre no 23511 |
merci Greuter,
a priori, le "bricolage" que j'ai fait devrait fonctionner, mais je garde ta solution sous le coude, elle est peut-être plus "orthodoxe" |
|
|
![]() ![]() |
|
Version bas débit | Nous sommes le : 26th May 2013 - 04:31 |
| Ce site est déclaré auprès de la commision Nationale de l'Informatique et des Libertés (déclaration n°: 1043896) |