Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

Forum osCommerce-fr _ Developpement OsC2.3 _ [Résolu] Récupération valeur d'un champ

Écrit par : lenzo 24 Oct 2013, 12:29

Bonjour,

Après avoir éplucher de long en large le forum, je bute sur un le problème suivant :
comment récupérer la valeur d'un champ "input" rempli par le client dans product_info et le passer dans shopping_cart ?

En fait, le site propose la création de plaques minéralogiques, le client doit saisir son n° de plaque et sélectionner son n° de département pour afficher le logo de la région (à droite de la plaque).
J'ai testé en créant des options "dépt" et "num_plaque" mais comment passer en "attribut" le texte saisi par le client ???

J'espère avoir été clair dans ma demande, n'hésitez pas à me demander + d'infos si vous voulez mais j'ai vraiment besoin de votre aide car je suis complètement bloqué !!!

Merci par avance...

Écrit par : Gnidhal 24 Oct 2013, 14:03

Bonjour,
Avec une contribution comme celle là par exemple : http://addons.oscommerce.com/info/8193

Écrit par : lenzo 24 Oct 2013, 18:02

Merci Gnidhal, toujours fidèle au poste ! smile.gif

Tu l'as déjà testée cette contrib car en lisant les commentaires, il semble y avoir pas mal de problèmes... enfin je verrai bien !

Encore merci !

Écrit par : Gnidhal 24 Oct 2013, 23:38

Non pas testé celle-là.
J'ai déjà utilisé de l'option type featured mais sur une 2.2 pas sur une 2.3.1 ou ultérieure. Il est vrai que c'est pas toujours facile à mettre en oeuvre et qu'il faut adapter selon ses besoins.
Comme toutes les contribs de ce niveau, rien n'est jamais "plug and play", il faut travailler le code au corps.
Cela dit c'était une piste de recherche. Regarde dans les contributions relatives aux "options" et "attributs", il en existe plusieurs qui font des choses similaires et qui répondent à tes besoins.
Bon courage.

Écrit par : lenzo 26 Oct 2013, 05:13

Merci, c'était bien la piste à suivre !
J'ai installé Option Types 2.3.1 d'origine puis comparé tous les fichiers avec la version du 19 Mai 2012... non sans mal car on retrouve des fichiers de 2009 donc différents d'osc 2.3.3.4. Heureusement, plusieurs personnes ont eu les mêmes erreurs et en suivant le forum us, j'ai réussi à la faire fonctionner.

Il me reste un problème à régler : ce pack contient AJAX-AttributeManager, j'ai donc installé la dernière version AJAX-AttributeManager-for-osc2.3.1-V2 qui fonctionne sauf pour la saisie d'une nouvelle option dans admin/categories.php :

Code
Warning: mysql_result() expects parameter 1 to be resource, object given in D:\Sites\catalog\admin\attributeManager\classes\amDB.class.php on line 91
1062 - Duplicata du champ '1-4' pour la clef 'PRIMARY'


la fonction correspondante :
Code
     /* Returns a singular result from a mysql query
     * @param $strQuery string - mysql query
     * @return mixed - first record, first row
     */
    function getOne($strQuery) {
        $res = amDB::query($strQuery);
        if ($res && amDB::numRows($res))
            return mysql_result($res,0,0);
        return false;
    }


et là j'avoue que je sèche... surtout à cette heure-ci !

Cette contrib a l'air d'être pas mal utilisée, si quelqu'un a eu ce problème, je suis preneur de la solution !!! wink.gif

Merci.



Écrit par : FoxP2 26 Oct 2013, 09:39

ça va devenir un classique

lire ce sujet : http://forums.oscommerce.com/topic/394514-updating-an-old-addon-that-uses-mysql-to-teb-db-for-2332/

la ligne de code qui pêche :

Code
return mysql_result($res,0,0);


vérifier que les méthodes statiques amDB::query($strQuery) & amDB::numRows($res) de la classe amDB.class utilisent également les fonctions natives tep_db_ du script.

tu peux également signaler le bug dans ce sujet : http://forums.oscommerce.com/topic/394804-addons-that-will-break-on-update-to-2334/
Il référence les contributions mal développées.

en tous cas c'est le résultat obtenu lorsqu'un développeur n'a pas suivi les standards de programmation, en l’occurrence la factorisation du code pour les accès à la base de données.
oscommerce va laisser de moins en moins de place à l'amateurisme, il était temps !

Écrit par : lenzo 28 Oct 2013, 17:04

ok merci FoxP2, c'était bien ça. J'ai donc ajouté une équivalence à la fonction, trouvée sur le net :

Code
    function tep_db_mysqli_result($res, $row, $field=0) {
        $res->data_seek($row);
        $datarow = $res->fetch_array();
        return $datarow[$field];
    }


et remplacé
Code
return mysql_result($res,0,0);
par
Code
return tep_db_mysqli_result($res,0,0);

ça fonctionne.

C'est sûr que partir en dév avec la dernière version d'osc entraine pas mal de risques quant à la compatibilité des contributions... mais c'est quand même plus raisonnable que de prendre une V2.2rc2a ou 2.3.1, non ?
Les changements sont importants par rapport à ma "vieille" 2.2MS2 et la prise en main n'est pas si simple que je le pensais ! Et j'ai été surpris de retrouver des "$HTTP_POST_VARS" (admin\orders.php, admin\products_attributes.php, etc) alors que je pensais que les diverses MAJ avaient remplacées toutes ces fonctions dépréciées en PHP5 ?

En tout cas merci à vous 2 !

Écrit par : Gnidhal 28 Oct 2013, 21:39

Bah $HTTP_POST_VARS n'est pas foncièrement obsolète, cette variable contient en principe la même chose que $_POST mais ce n'est pas une super globale.
Donc tant que tu n'en a pas besoin dans une fonction ou une méthode, tu peux garder un $HTTP_POST_VARS.
Cela dit, je préfère tout remplacer en $_POST qui est "plus compact" en syntaxe wink.gif

Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)