Shogun Distribution Posted December 18, 2010 Share Posted December 18, 2010 Bonjour,J'aimerai forcer la saisie de certains champs de l'inscription en majuscule.Pour la saisie, pas de problèmes mais pour que l'enregistrement dans le BO se fasse en majuscule, j'ai un blanc.Quelqu'un aurait il la solution ?Merci d'avance Link to comment Share on other sites More sharing options...
Hedrad Posted December 19, 2010 Share Posted December 19, 2010 Tu peux faire ça par du css. "text-transform:uppercase" si je ne me trompe pas. Link to comment Share on other sites More sharing options...
Shogun Distribution Posted December 19, 2010 Author Share Posted December 19, 2010 Merci pour ta réponse.J'ai essayé mais il subsiste le nom et le prénom de l'adresse qui restent en minuscule. /* adresses */ div.addresses { border: 1px solid #B34A35; background: #FFFFFF /*url('../img/form_bg.jpg') repeat-x top left*/; padding: 0.6em 0.6em 1.5em 0.6em; margin-left: 1em; position:relative; width:544px; text-transform:uppercase; } div.addresses h3 { margin: 0; } div.addresses p.checkbox input{ margin-top:0!important; margin-top:-3px; text-transform:uppercase; } ul.address { background-color:white; float:left; list-style-image:none; list-style-position:outside; list-style-type:none; margin-left:1.7em; padding-bottom:0.6em; margin-bottom:1em; position:relative; width:262px; text-transform:uppercase; } ul.address li { padding-left: 1.4em; margin-top: 0.6em; text-transform:uppercase; } li.address_title { margin-top: 0!important; background-color: #d0d1d5; color: #374853; font-weight: bold; height: 27px; font-size: 1.2em; line-height: 1.9em; text-transform:uppercase; } ul.item li.address_title { background-image: url('../img/address_alias_left.gif'); } ul.alternate_item li.address_title { background-image: url('../img/address_alias_right.gif'); } li.address_name, li.address_update a, li.address_delete a { color: #B14632; text-transform:uppercase; } li.address_name, li.address_company { font-weight: bold; text-transform:uppercase; } li.address_update, li.address_delete { background: transparent url('../img/bullet_myaccount.gif') no-repeat 0 0.5em!important; background: transparent url('../img/bullet_myaccount.gif') no-repeat 0 0.4em; margin-left: 1.4em; Pourtant tous les autre champs marchent en ayant rajouter comme dans l'exemple suivant un uppercase dans le champs concerné des tpl adresses, authentification et identity. {l s='SOCIETE'} <input type="text" class="text" id="societe" name="societe" value="{if isset($smarty.post.societe)}{$smarty.post.societe}{/if}"> * Il y a peut-être une erreur dans mon code car ce que je copie entre les balises code de ce message ne passe pas.En principe le code que j'ai mis est cela :voir la pièce jointeMais le nom et le prénom ne veulent pas obtempérer. Link to comment Share on other sites More sharing options...
madmike Posted December 20, 2010 Share Posted December 20, 2010 La modification de la CSS permet de faire que l'affichage soit en majuscule, mais pas l'enregistrement dans la BDD.Donc si tu tiens vraiment a avoir la string avec la première lettre en Màj dans ta BDD tu as 2 solutions :a) modifier l'enregistrement à la bdd fait par le core PS. C'est lourd et cela t'empêche les updates future (ou du moins ca les complexifies largement). utiliser jQuery par example pour modifier, l'or du focus sur le boutton du formulaire, les champs texte spécifier .Ex : remplacer "toto" par "Toto" => http://plugins.jquery.com/plugin-tags/uppercase (Google est ton meilleur ami).Mais en même temps c'est pas vraiment nécessaire que les string soit en Maj. dans la BDD, du moment que tes affichages force la Maj. soit à travers la template de ton theme, soit à travers la css.En espèrent que cela t'aide.mike Link to comment Share on other sites More sharing options...
Shogun Distribution Posted December 20, 2010 Author Share Posted December 20, 2010 Merci,Mais alors où est l'erreur dans mon css pour que le nom et le prénom soient en minuscule. Link to comment Share on other sites More sharing options...
madmike Posted December 21, 2010 Share Posted December 21, 2010 Je ne suis pas Mme Irma hélas, donc là sans voir ton site je ne peut pas t'aider. J'ai mes limites.Donne l'url de ton site svp. Il y as plein d'autre causes, comme une mauvaise interaction avec un autre style d'une autre css par exemple. etc... Link to comment Share on other sites More sharing options...
Shogun Distribution Posted December 21, 2010 Author Share Posted December 21, 2010 www.shogun-wholesaler.comMerci Link to comment Share on other sites More sharing options...
AAymeric Posted December 22, 2010 Share Posted December 22, 2010 Installe Firebug sur ton Firefox, c'est un module super important en développement web. Dès que tu l'as installé, tu inspectes avec l'élément qui pose problème. Tu verras ce qui fait qu'il est en minuscule dans la partie droite (CSS) de ton Firebug. Link to comment Share on other sites More sharing options...
Shogun Distribution Posted May 29, 2011 Author Share Posted May 29, 2011 Bonjour,J'ai enfin trouvé et je vous le fait partager.Il faut faire fi de tous les Uppercase précédemment cités, ils ne produisent pas de résultats optimums dans la BDD.Il faut tout simplement modifier dans le fichier : /classes/Customer.phpdans : public function getFields() ligne 95 environ $fields['lastname'] = pSQL($this->lastname); par $fields['lastname'] = pSQL(Tools::strtoupper($this->lastname)); et refaire la même chose avec tous les champs que l'on veut uppercaser ;-PEt pour les adresses, c'est dans : /classes/Address.phpVoila c'est tout 3 Link to comment Share on other sites More sharing options...
laurent_cv Posted November 4, 2011 Share Posted November 4, 2011 Et pour les prénoms avec la première lettre en majuscule et tout le reste en minuscule : $fields['firstname'] = pSQL(Tools::ucfirst(strtolower($this->firstname))); 2 Link to comment Share on other sites More sharing options...
Vinc3nzo Posted September 21, 2012 Share Posted September 21, 2012 Bonjour, Pour Prestashop 1.5 avez vous une solution? Car ce n'est plus le même codage. Link to comment Share on other sites More sharing options...
Shogun Distribution Posted November 10, 2012 Author Share Posted November 10, 2012 (edited) Bonjour, je viens de finaliser pour 1.5 N'ayant pas trouver dans les classes, je me suis concentré sur authentication.tpl et adress.tpl. Et ça marche vraiment bien. Il faut insérer un script, avant ou après le script en haut de page des tpl. <script type="text/javascript"> function formatValue(element) { element.value = element.value.toUpperCase(); } </script> Puis derrière chaque champs désiré en majuscule, il faut rajouter ceci. onkeyup="formatValue(this)" /> Une particularité toutefois dans authentication.tpl, il faut changer les deux champs nom et prénom qui contiennent déjà un enkeyup comme suit. Remplacer : <input onkeyup="$('#lastname').val(this.value);" type="text" class="text" id="customer_lastname" name="customer_lastname" value="{if isset($smarty.post.customer_lastname)}{$smarty.post.customer_lastname}{/if}" /> par <input onkeyup= "formatValue(this)" "$('#lastname').val(this.value);" type="text" class="text" id="customer_lastname" name="customer_lastname" value="{if isset($smarty.post.customer_lastname)}{$smarty.post.customer_lastname}{/if}" /> et pareil pour le champs prénom. Edited November 10, 2012 by Shogun Distribution (see edit history) 1 Link to comment Share on other sites More sharing options...
Vinc3nzo Posted November 16, 2012 Share Posted November 16, 2012 Bonjour! Etrange, je n'ai pas apercu la notification dans mes emails que vous aviez répondu... Merci Beaucoups SHOGUN! VOus confirmez bien que ceci force en majuscule dans la base de donnée quand un client écrit en minuscule son nom?? Merci beaucoup! ^^ Link to comment Share on other sites More sharing options...
Shogun Distribution Posted December 5, 2012 Author Share Posted December 5, 2012 (edited) Bonjour, He bien, non... La plupart du temps les majuscules sont forcées en BDD, mais pas toujours. Cela doit dépendre du navigateur. Edited December 5, 2012 by Shogun Distribution (see edit history) Link to comment Share on other sites More sharing options...
m-Facilities.com Posted December 27, 2012 Share Posted December 27, 2012 Bonjour, J'ai enfin trouvé et je vous le fait partager. Il faut faire fi de tous les Uppercase précédemment cités, ils ne produisent pas de résultats optimums dans la BDD. Il faut tout simplement modifier dans le fichier : /classes/Customer.php dans : public function getFields() ligne 95 environ $fields['lastname'] = pSQL($this->lastname); par $fields['lastname'] = pSQL(Tools::strtoupper($this->lastname)); et refaire la même chose avec tous les champs que l'on veut uppercaser ;-P Et pour les adresses, c'est dans : /classes/Address.php Voila c'est tout Opération effectuée sur 1.4.7.3. et tant pis pour la migration 1.5.x Merci. C'était dans ma TODOList depuis des mois et ça me fait le même effet qu'un bruit gênant qui vient de s'arrêter.... Link to comment Share on other sites More sharing options...
Shogun Distribution Posted January 26, 2013 Author Share Posted January 26, 2013 (edited) Merci à m-Facilities.com pour tes compliments. Je reviens vers vous chers co-commerçants...à vos souhaits Après avoir eu coup sur coup deux inscriptions où l'adresse m'est revenue en minuscule, je me suis à nouveau penché hier sur cette problématique de presta 1.5. Je n'ai malheureusement pas trouvé dans quel fichier PHP de presta je pouvais introduire ce fameux strtoupper. Mais je connais le langage PHP comme un touriste en pays étranger avec une méthode Assimil des années 70 pour s'exprimer dans la langue du pays visité. Je suis donc partie en direction de la planète Google avec ma petite méthode en poche afin de glaner çà et là quelques infos et bouts de codes utiles. Il est d'ailleurs surprenant qu'un développeur ne nous ai jamais donné un petit coup de pouce. Et j'ai trouvé une solution qui contourne ce problème. Cette méthode est archaïque en comparaison du script presta mais elle a l'avantage de pouvoir ignorer les manipulations sur les fichiers TPL précédemment cités dans les messages précédents et de plus nul besoin de s'inquiéter lors d'une mise à jour presta car il n'y a pas de fichier presta modifié. J'ai créé un script php indépendant et dépendant d'une tache cron. <?php /* */ /* Titre : Mettre en majuscule les champs désirés */ /* */ /* Auteur : Shogun Distribution */ /* Date édition : 26 Janvier 2013 */ /* */ $sql_serveur = "....."; // Serveur mySQL $sql_base = "...."; // Base de données mySQL $sql_login = "...."; // Login de connection a mySQL $sql_password = "...."; // Mot de passe pour mySQL $lk = @mysql_connect($sql_serveur, $sql_login, $sql_password) OR die(mysql_error ()); @mysql_select_db($sql_base, $lk) OR die(mysql_error()); $requete1 = mysql_query("UPDATE ps_address SET alias = UPPER(alias)") OR die( mysql_error()); $requete2 = mysql_query("UPDATE ps_address SET company = UPPER(company)") OR die( mysql_error()); $requete3 = mysql_query("UPDATE ps_address SET lastname = UPPER(lastname)") OR die( mysql_error()); $requete4 = mysql_query("UPDATE ps_address SET firstname = UPPER(firstname)") OR die( mysql_error()); $requete5 = mysql_query("UPDATE ps_address SET address1 = UPPER(address1)") OR die( mysql_error()); $requete6 = mysql_query("UPDATE ps_address SET address2 = UPPER(address2)") OR die( mysql_error()); $requete6 = mysql_query("UPDATE ps_address SET city = UPPER(city)") OR die( mysql_error()); $requete7 = mysql_query("UPDATE ps_customer SET company = UPPER(company)") OR die( mysql_error()); $requete8 = mysql_query("UPDATE ps_customer SET lastname = UPPER(lastname)") OR die( mysql_error()); $requete8 = mysql_query("UPDATE ps_customer SET firstname = UPPER(firstname)") OR die( mysql_error()); ?> Remplacer les ..... par vos coordonnées de connexion. On peut rajouter ou enlever autant de requêtes que l'on veut. Si vous voulez tout en minuscule, remplacer les UPPER par des LOWER. Pour la première lettre des noms en majuscule et le reste en minuscule, je n'ai pas encore trouvé la requête adéquate. Nommez ce fichier php : uppercase.php et placez le à la racine de votre presta. Éditer une tâche cron sur l'adresse http://www.monsite.com/uppercase.php à l'aide de crontab pour PrestaShop par exemple et avec une exécution toutes les minutes. Voilà, toutes les minutes, les champs concernés vont se mettre en majuscule dans la base de données. Même si un client s'inscrit tout en minuscule, le temps de traiter cette commande, tout aura été mis en majuscule. Edited January 26, 2013 by Shogun Distribution (see edit history) Link to comment Share on other sites More sharing options...
Sam Minerve Posted February 28, 2013 Share Posted February 28, 2013 Bonjour, J'utilise la version 1.5.2 de Prestashop et j'aimerais aussi savoir comment faire en sorte que les noms et prénoms s'enregistrent dans la base de données avec la première lettre en majuscule et le reste en minuscule. Si quelqu'un a la moindre idée, je le remercie d'avance de nous la faire partager. Link to comment Share on other sites More sharing options...
Sam Minerve Posted February 28, 2013 Share Posted February 28, 2013 Désolé, j'avais pas vu que ce topic était considéré comme résolu. Je pense que je vais devoir ouvrir un autre topic dans ce cas. Link to comment Share on other sites More sharing options...
m-Facilities.com Posted May 22, 2013 Share Posted May 22, 2013 (edited) Bien que marqué résolu, j'apporte un complément. Je voulais aussi les prénoms en minuscules mais Tools:ucfirst(Tools::strtolower()) ne permet pas d'agir sur les prénoms composés comme Jean-Paul (qui reste Jean-paul, etc...) Et donc tant qu'a modifier les sources, j'ai ajouté une méthode ucwords à la classe Tools en utilisant preg et une call back. Ainsi, dans classes/Tools.php ligne 1183 (v1.4.7.3) en dessous de Tools:ucfirst j'ai ajouté le script ci dessous pris en partie sur le forum PHPFrance (ici) // MF 22/05/2013: ajout de ucwords avec prise en charge des prenoms composes { static function ucwords($txt) { return preg_replace_callback('#\\W\\w#', 'Tools::_ucwords_callback', ucfirst(strtolower($txt))); } static function _ucwords_callback($m) { return strtoupper($m[0]); } // MF 22/05/2013 } Et dans /classes/Customer.php et /classes/Address.php $fields['firstname'] = pSQL(Tools::ucwords($this->firstname)); Maintenant, il me reste la reprise des données en base ... que j'ajoute à ma TODOList Edited May 22, 2013 by m-Facilities.com (see edit history) Link to comment Share on other sites More sharing options...
lordbdp Posted October 23, 2014 Share Posted October 23, 2014 Merci car très utile. En revanche est-ce assez sécurisé de laisser les accès du serveur dans le .php ? Link to comment Share on other sites More sharing options...
lordbdp Posted December 1, 2014 Share Posted December 1, 2014 Bien que marqué résolu, j'apporte un complément. Je voulais aussi les prénoms en minuscules mais Tools:ucfirst(Tools::strtolower()) ne permet pas d'agir sur les prénoms composés comme Jean-Paul (qui reste Jean-paul, etc...) Et donc tant qu'a modifier les sources, j'ai ajouté une méthode ucwords à la classe Tools en utilisant preg et une call back. Ainsi, dans classes/Tools.php ligne 1183 (v1.4.7.3) en dessous de Tools:ucfirst j'ai ajouté le script ci dessous pris en partie sur le forum PHPFrance (ici) // MF 22/05/2013: ajout de ucwords avec prise en charge des prenoms composes { static function ucwords($txt) { return preg_replace_callback('#\\W\\w#', 'Tools::_ucwords_callback', ucfirst(strtolower($txt))); } static function _ucwords_callback($m) { return strtoupper($m[0]); } // MF 22/05/2013 }Et dans /classes/Customer.php et /classes/Address.php $fields['firstname'] = pSQL(Tools::ucwords($this->firstname));Maintenant, il me reste la reprise des données en base ... que j'ajoute à ma TODOList Pourquoi ajouter une commande dans Tools ? Ça ne fonctionnerait pas directement dans les classes ? J'ai tenté de modifier le UPPER par INITCAP mais cela ne fonctionne pas pour le SQL, je ne comprends pas pourquoi. Je pense qu'il faudrait partir sur un override des fichiers concernés (dixit m-Facilities.com) avec l'intégration d'un code style : ucfirst(strtolower($firstname)); je ne sait si la ligne est correcte mais à mon avis que c'est la seule solution pour PS 1.5.x Après il faudrait tester avec ucwords à la place d'ucfirst (surtout pour les prénoms composés). Link to comment Share on other sites More sharing options...
Cyrius91 Posted February 12, 2015 Share Posted February 12, 2015 (edited) Bonjour, J'ai enfin trouvé et je vous le fait partager. Il faut faire fi de tous les Uppercase précédemment cités, ils ne produisent pas de résultats optimums dans la BDD. Il faut tout simplement modifier dans le fichier : /classes/Customer.php dans : public function getFields() ligne 95 environ $fields['lastname'] = pSQL($this->lastname);par $fields['lastname'] = pSQL(Tools::strtoupper($this->lastname));et refaire la même chose avec tous les champs que l'on veut uppercaser ;-P Et pour les adresses, c'est dans : /classes/Address.php Voila c'est tout Merci pour l'astuce Edited February 12, 2015 by Cyrius91 (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now