Aide - Recherche - Membres - Calendrier
Version complète : product_attributes_option_type_3.0 [Résolu]
Forum osCommerce-fr > Adapter OsCommerce MS2 > Contributions
ange974
Suite a mon installation tout c'est bien déroulé...

pb juste à la fin dans la partie Admin :

Création d'un nouvel Option : PERSONNALISER VOTRE ARTICLE de longueur 50 de type TEXT (pas de type TEXTAREA)

En gros je voulais rajouter une option champ texte dans mon product_info.php, pour que les clients puisse rajouter leur Nom pour personnaliser l'article acheté.

Parcontre quand a les Valeurs a cette Options je sais pas quoi mettre ? IDEM pour le champ prix et le champ prefixe je sais pas quoi mettre ?


Du coup j'ai un message d'erreur quand j'enregistre un achat sur le site (checkout_process.php):

1366 - Incorrect decimal value: '' for column 'options_values_price' at row 1

insert into orders_products_attributes (orders_id, orders_products_id, products_options, products_options_values, options_values_price, price_prefix) values ('24', '25', 'personnalisé votre article', 'antoine', '', '')

[TEP STOP]



Dans ma BDD les champs options_values_price et price_prefix sont a null = non et default = aucune

Cordialement.
audioshop
Tu as un problème dans ta requête là !

Regarde au niveau de cette requête dans le fichier concerné à la fin il doit manquer des guillemets

insert into orders_products_attributes (orders_id, orders_products_id, products_options, products_options_values, options_values_price, price_prefix) values ('24', '25', 'personnalisé votre article', 'antoine', '', '')

au pire poste la requête ici ! wink.gif
ange974
Vous traduirez sa comment vous ??


Notice: For Text and Textarea 'Option type' the maximum length is 32. Also the 'Option value' is fixed to TEXT with ID 0. Do not add an 'Option value' yourself.
audioshop
Citation (ange974 @ 12 Oct 2009, 12:57) *
Vous traduirez sa comment vous ??


Notice: For Text and Textarea 'Option type' the maximum length is 32. Also the 'Option value' is fixed to TEXT with ID 0. Do not add an 'Option value' yourself.


On traduit pas nous y'a google pour ça! wink.gif
ange974
lol mdr smile.gif

je crois que tous les installes de toutes les contributions sont en anglais mdr j'espère que vous traduisez pas tous sa avec google...

ben sinon moi je traduirais sa comme ça :

Remarque :
Pour les TEXT et TEXTAREA 'Option type', la valeur maximum est de 32 (c'est ce que j'ai mis pour le type)
après
L'id de la 'Valeur Option' de TEXT est de 0 et n'ajoutez pas de valeur vous même (c'est là que je comprends le moins)

Mais je suis pas sur que l'erreur en haut cité viens de là...

donc comme dis Audioshop je vais voir la petite requête.
audioshop
Citation (ange974 @ 13 Oct 2009, 04:22) *
lol mdr smile.gif

je crois que tous les installes de toutes les contributions sont en anglais mdr j'espère que vous traduisez pas tous sa avec google...


Ba si moi qui parle pas un pête d'anglais je fais toute mes install avec mon ami google traduction et je m'en sors pas trop mal, bon c'est vrai qu'avec google faut un peu de jujotte wink.gif

Citation (ange974 @ 13 Oct 2009, 04:22) *
donc comme dis Audioshop je vais voir la petite requête.

je t'ai même dit que tu pouvais la poster ici si tu veut qu'on t'aide !?
ange974
ouai je pense que je vais la poster ici :

$sql_data_array = array('orders_id' => $insert_id,
'orders_products_id' => $order_products_id,
// OTF contrib begins
//'products_options' => $attributes_values['products_options_name'],
//'products_options_values' => $attributes_values['products_options_values_name'],
'products_options' => $attr_name,
'products_options_values' => $order->products[$i]['attributes'][$j]['value'],
// OTF contrib ends
'options_values_price' => $attributes_values['options_values_price'],
'price_prefix' => $attributes_values['price_prefix']);
tep_db_perform(TABLE_ORDERS_PRODUCTS_ATTRIBUTES, $sql_data_array);

sachant que j'utilise mysql version 3.1.1 et oscommerce ms2
alors cette requete est celle de l'installe de la contribution pas la requete original du fichier en elle meme : checkout_process.php
je sais aussi que certaine contribution au niveau d'une insertion de requete ont du mal avec msyql version 3
de mon coté je vais reprendre l'installe pour voir si je me suis pas tromper car j'étais un peu fatigué quand je l'ai commencé.
au moin l'installe du fichier : checkout_process.php
NoZic
Bonjour,

Je dirais qu'il faudrait vérifier la valeur de $insert_id. A mon avis c'est vide ou égal à 0 au moment de l'insertion en base.

A voir.

Un petit :
Code
echo($insert_id);
juste avant ton tep_db_perform.

Bon dimanche
ange974
apres insertion de

echo($insert._id);

avant tep_db_perform



j'ai cette erreur :

36361366 - Incorrect decimal value: '' for column 'options_values_price' at row 1

insert into orders_products_attributes (orders_id, orders_products_id, products_options, products_options_values, options_values_price, price_prefix) values ('36', '37', 'personnalisé votre article', 'antoine', '', '')

[TEP STOP]


par-contre je n'arrive plus a insérer une Valeur a mon Option : Personnalisé votre article qui est de type TEXT....bizar.
ah non c'est insérer mais je ne vois pas les valeurs que je rajoute pour mon option c encore plus bizar.
tout sa dans la partie administrateur biensur.
NoZic
Re,

Bah ça n'a rien à voir (l'erreur comme ma réponse d'ailleurs biggrin.gif ).

Mais bon pourquoi il y a un point dans ton bout de code ?
ange974
je vais essayer de revoir mon installe de la partie : products_attributes.php et celui de checkout_process.php

t'inquiète pour le point mauvaise frappe du clavier lol sur la page php j'ai pas mis de point.

bon j'ai revu mon installe c pareil lol mdr la galere...
Gnidhal
Citation (ange974 @ 12 Oct 2009, 11:04) *
Dans ma BDD les champs options_values_price et price_prefix sont a null = non et default = aucune

Salut,
Moi je dirais que ton problème est là :
la valeur attendue pour options_values_price est NOT NULL default '' alors que le champ est de type decimal(5,2) ou decimal(6,4)
essaye de changer le NOT NULL en NULL dans le format attendu de options_values_price, dans ce cas tu peux éventuellement lui passer une valeur vide mais je pense plutôt qu'il faut de mettre une valeur default de type 0.00 pour le champ options_values_price
l'erreur suivant ta requête devrait alors disparaître car en passant une valeur vide à options_values_price , sql inscrira naturellement 0.00 (donc un décimal)

enfin, à tester... wink.gif
NoZic
Bonjour,

Gnidhal +1

J'avais pas pensé que le not null '' ne pouvait pas être une bonne valeur car décimale attendue... c'est con...
biggrin.gif

[Bo @ Gnidhal]
Tu te rappelles à mon bon souvenir ? happy.gif
Ne t'inquiète pas, je ne t'ai pas oublié ni ce que je dois faire, mais en ce moment, je cours partout, j'ai le temps de rien faire et j'ai trop de trucs à faire...
Je ne sais pas dire non et je suis sollicité (parce que je le veux bien... biggrin.gif ) de partout, des potes, de la famille et même une amie d'ici.
De toute façon, je ne suis pas loin d'avoir fini, ce ne sera plus très long.
Comme c'est assez rébarbatif à faire, c'est plus la motivation qui m'étouffe en même temps... huh.gif J'ai un peu perdu l'entrain du début sur ce coup...
laugh.gif
[Eo @ Gnidhal]
ange974
je vais essayer de tester sa ....

Merci encore Gnidhal


alors j'ai sa pour le champ : options_values_price

type : decimal(15,4)
null : non
default : aucune

quand tu dis :
"éventuellement lui passer une valeur vide" mais je pense plutôt qu'il faut de mettre une valeur default de type 0.00 pour le champ options_values_price...

c'est a dire ?


Gnidhal
Citation (ange974 @ 22 Oct 2009, 11:47) *
type : decimal(15,4)
null : non
default : aucune
.../...
c'est a dire ?

c'est à dire :
type : decimal(15,4)
null : non
default : 0.0000

ou encore (mais c'est peut-être moins bon)

type : decimal(15,4)
null : oui
default : aucun

à tester l'un ou l'autre. Je pense que les deux marchent mais à vérifier. En tous cas, l'informatique ayant horreur du vide* la première solution me parait la meilleure.

@nozic : pas de soucis smile.gif je suis moi-même tellement le nez dans le guidon que notre petit chantier entre amis est un peu en jachère wink.gif mais qui va lentement va sûrement biggrin.gif

* curieux ça d'ailleurs on peut dire:
- l'informatique a, par nature, horreur du vide
mais on ne peut pas dire :
- la nature a, par informatique, horreur du vide
ange974
bonjour a tous

Merci quand meme Gnidhal, les 2 solutions ne fonctionne pas...bizar

il y a un truc quand meme bizard qui se passe du coté de l'admin sur products_attributes.php, je n'arrive pas a rajouter une valeur a mon Option....ou

et j'aimerais savoir dans quel table sont stockés les Valeurs d'options, pour voir si sa bien été rajouter ou si coté l'admin j'arrive pas a le visualiser...

dans le cas d'un champ de saisie quel genre de Valeur doit-on mettre a celle-ci...?

Alors comme j'été un peu faitgué lol j'ai testé directement avec les fichiers product_attributes_option_type_3.0 de Winrar : c'est à dire les 2 fichiers checkout_process.php et products_attributes.php et sa fonctionne pas... lol mdr


bon j'ai regardé un peu les tables et j'ai vue la table 'products_options_values' si c'est bien celle là donc ma Valeur na pas été rajouter


Gnidhal
ok ça ne fonctionne pas, mais l'erreur est toujours la même ?
ange974
oui tjrs la meme erreur Gnidhal...
ange974
avec des recherches sur le forum eskce que le probleme peut venir de la version de MySQL (version 5) qui est un peu plus stricte.

comme sur ce post : http://www.oscommerce-fr.info/forum/index....showtopic=55788
NoZic
Bonjour,

Citation
insert into orders_products_attributes (orders_id, orders_products_id, products_options, products_options_values, options_values_price, price_prefix) values ('24', '25', 'personnalisé votre article', 'antoine', '', 'et là aussi')
Dans cette requête il y a deux valeurs vides.
Le premier vide est le prix de l'option, le deuxième son préfixe.

Si le prix vaut 0, il faut stocker en base 0.00 car c'est une valeur décimale, d'où le défaut à "0.00" enfin l'idée de Gnidhal.
Bon normalement juste 0 suffirait car mysql est censé faire la transformation.

Dans un premier temps en fait je trouverais la requête dans la page en question, elle doit contenir des variables php, une doit correspondre au prix de l'option.
Tu devrais tester si cette variable est vide, et si c'est le cas, juste avant la requête en question, lui attribuer la valeur (chaîne de caractère) "0" ou "0.00", les deux devant fonctionner.

Pour l'attribut, faudrait tester pareil si la variable est vide.
Si oui, si l'attribut doit rajouter au prix de l'article alors attribuer la valeur (chaîne de caractère) "+" et si l'attribut doit enlever au prix de l'article alors attribuer la valeur "-". Ceci toujours juste avant la requête concernée.

La requête devrait ainsi rentrer en base les bonnes valeurs.

Bon courage
ange974
Bonjour

j'ai trouvé qu'une seule requête qui parle du prix de l'option sur la page checkout_process.php et c'est celle là :
parcontre il y a pas la variable, je trouve un paramètre options_values_price
une variable commence toujours par un $

sql_data_array = array('orders_id' => $insert_id,
'orders_products_id' => $order_products_id,
// OTF contrib begins
//'products_options' => $attributes_values['products_options_name'],
//'products_options_values' => $attributes_values['products_options_values_name'],
'products_options' => $attr_name,
'products_options_values' => $order->products[$i]['attributes'][$j]['value'],
// OTF contrib ends
'options_values_price' => $attributes_values['options_values_price'],
'price_prefix' => $attributes_values['price_prefix']);
tep_db_perform(TABLE_ORDERS_PRODUCTS_ATTRIBUTES, $sql_data_array);
ange974
encore une fois NoZic est mon sauveur blush.gif

tu avais bien raison :

NoZic :"Dans un premier temps en fait je trouverais la requête dans la page en question, elle doit contenir des variables php, une doit correspondre au prix de l'option.
Tu devrais tester si cette variable est vide, et si c'est le cas, juste avant la requête en question, lui attribuer la valeur (chaîne de caractère) "0" ou "0.00", les deux devant fonctionner ".

j'ai trouvé la variable en question c'était :

$attributes_values['options_values_price']

j'ai effectué un Echo dessus puis euh parcontre la valeur n'étais pas vide et j'ai lui ai quand même attribuer la valeur chaine de caractère '0.00'

puis ça a fonctionné.
NoZic
Bonjour,

Ah ouais mais :
Citation
parcontre la valeur n'étais pas vide
Ca va pas, ça correspond pas à ce que j'ai proposé :
Citation
Tu devrais tester si cette variable est vide, et si c'est le cas, juste avant la requête en question, lui attribuer la valeur (chaîne de caractère) "0" ou "0.00"

Toi, ta variable n'était pas vide, quelle était sa valeur ? si c'était un chiffre, il eu fallu l'utiliser en fait...

En plus je me suis planté, c'est pas une chaîne qu'il faut utiliser mais un float. Et d'ailleurs c'était peut-être juste ça en fait ton problème...
A vérifier.
ange974
Bonjour,

Alors pour le décimal c'est bien de Type décimal 'float' que j'ai mis par contre c'est vrai aussi que il yavait une valeur au prix de l'option de 45 mais je l'ai réi-initialisé a 0.00 quand même et là sa passe pu d'erreur...

perplexe..!!
NoZic
Bonjour,

Ouais donc en fait ton option a un prix supplémentaire de 45 € apparemment...

Ce serait dommage que tu ne le rentres pas en base...
Parce que là avec ce que tu fais ton option est gratos...
Je sais pas si c'est ce que tu veux faire en fait.

Je disais 0 car il y avait des vides donc rien donc 0 en chiffre. Et c'était surtout pour l'exemple. Et pour rester sur la proposition initiale de LeorLindel :
Citation
Si tu n'as pas de supplément de prix, tu mets 0 et en préfice +
parce qu'apparemment tu ne savais pas quoi remplir.

M'enfin donc si pas de surcoût pour l'option tu laisses, mais si l'option génère un surcoût faudrait que ce soit renseigné quelque part...
ange974
oui effectivement je veux pas que l'option génère aucun surcout sa doit être bon alors
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2013 Invision Power Services, Inc.