vermich Posted May 14, 2013 Share Posted May 14, 2013 (edited) Bonjours a tous, Je débute (vous allez vite vous en rendre compte) et j'essaye d'ajouter à l'inscription un champs "code" qui permetra de rejoindre automatiquement un groupe associé. Jusque là j'ai réussi à associer chaque groupe à un code modifiable en admin et du coté de l'inscription j'ai bien ajouté le champ code. Mais vous allez voir que dans les controllers je ne comprend pas des masse photoshop et mes lignes simplissime ne donne rien. Si quelqu'un à un peu de temps pour m'aider. Merci d'avance. authentication.tpl <select id="years" name="years"> <option value="">-</option> {foreach from=$years item=year} <option value="{$year}" {if ($sl_year == $year)} selected="selected"{/if}>{$year} </option> {/foreach} </select> <div class="infosPro"> <p class="required text"> <label for="codece">Code de votre CE<sup>*</sup></label> <input type="text" class="text" id="code_ce" name="code_ce" value="{if isset($smarty.post.codece)}{$smarty.post.codece}{/if}" /> </p> </div> {if $newsletter} <p class="checkbox" > <input type="checkbox" name="newsletter" id="newsletter" value="1" {if isset($smarty.post.newsletter) AND $smarty.post.newsletter == 1} checked="checked"{/if} /> <label for="newsletter">{l s='Sign up for our newsletter!'}</label> Authcontroller.php // Preparing customer $customer = new Customer(); $lastnameAddress = $_POST['lastname']; $firstnameAddress = $_POST['firstname']; $_POST['lastname'] = Tools::getValue('customer_lastname'); $_POST['firstname'] = Tools::getValue('customer_firstname'); //----------------------------------------------------------------------------Code ce $_POST['codece'] = Tools::getValue('codece'); $codece = $_POST['code_ce']; if (!$customer->is_guest) { $this->context->customer = $customer; $customer->cleanGroups(); /* // we add the guest customer in the default customer group $customer->addGroups(array((int)Configuration::get('PS_CUSTOMER_GROUP'))); if (!$this->sendConfirmationMail($customer)) $this->errors[] = Tools::displayError('The email cannot be sent.'); */ //----------------------------------------------------------------------------Code ce $id_cust = $customer->id; $id_group_ce = mysql_query("SELECT id_group INTO ps_group_lang WHERE code='$codece'"); mysql_query("UPDATE ps_customer SET id_default_group='$id_group_ce' WHERE id_customer='$id_cust'"); } else { $customer->cleanGroups(); /* // we add the guest customer in the guest customer group $customer->addGroups(array((int)Configuration::get('PS_GUEST_GROUP'))); */ //----------------------------------------------------------------------------Code ce $id_cust = $customer->id; $id_group_ce = mysql_query("SELECT id_group INTO ps_group_lang WHERE code='$codece'"); mysql_query("UPDATE ps_customer SET id_default_group='$id_group_ce' WHERE id_customer='$id_cust'"); } Edited May 14, 2013 by vermich (see edit history) Link to comment Share on other sites More sharing options...
coeos.pro Posted May 14, 2013 Share Posted May 14, 2013 Salut, je te conseil déjà de changer les mysql_query par : http://www.prestashop.com/blog/fr/les-bonnes-pratiques-de-la-classe-db-sur-prestashop-1-5/ mysql_query("SELECT id_group INTO ps_group_lang WHERE code='$codece'"); attention, là il y a une faille de sécurité très grave !!! Link to comment Share on other sites More sharing options...
vermich Posted May 14, 2013 Author Share Posted May 14, 2013 (edited) Merci beaucoup pour le lien, c'est déjà un gros point que je commence à comprendre. alors j'ai fait quelques modifs mais je suis pas sur de bien tout écrire. $_POST['codece'] = Tools::getValue('codece'); $codece = $_POST['code_ce']; $id_cust = $customer->id; $sql = 'SELECT id_group FROM ‘._DB_PREFIX_.’group_lang WHERE code = "$codece"'; if ($row = Db::getInstance()->getRow($sql)) $id_group_ce = $row; Db::getInstance()->insert('customer', array('id_default_group'=(int)$id_group_ce),WHERE id_customer='$id_cust'); Le where doit bien s’écrire comme ça ? et je ne sais pas si il faut plutôt utiliser l'update ou l'insert. Sinon j'ai voulu prendre exemple sur les autres méthodes sql déjà présentes mais je n'arrive pas a les trouver, il y a forcement un endroit ou on insert les nom, prénom adresse et autre. Edited May 14, 2013 by vermich (see edit history) Link to comment Share on other sites More sharing options...
coeos.pro Posted May 14, 2013 Share Posted May 14, 2013 $_POST['codece'] = Tools::getValue('codece'); $codece = $_POST['code_ce']; non, voici comment fonctionne: Tools::getValue($key, $defaultValue = false) : elle renvoi $_POST[$key] si elle n'éxiste pas elle renvoi $_GET[$key], si elle n'existe pas n'ont plus elle renvoi alors $defaultValue, si $defaultValue n'est pas renseigné elle renvoi False. donc fait juste : $codece = Tools::getValue('codece'); si tu cherches juste une valeur dans une table utilise getValue au lieu de getRow: $sql = 'SELECT id_group FROM ‘._DB_PREFIX_.’group_lang WHERE code = "$codece"'; if ($id_group_ce = (int)Db::getInstance()->getValue($sql)) Pour l'insert pas de where, where c'est juste pour la sélection, la modification ou la suppression, donc: Db::getInstance()->insert('customer', array('id_default_group'=(int)$id_group_ce)); Link to comment Share on other sites More sharing options...
vermich Posted May 15, 2013 Author Share Posted May 15, 2013 (edited) ok ca continue à se préciser, c'est vrai que j'étais bloqué sur le where donc j'ai pris getRow. Mais donc ca serai plutôt ça : $sql = 'SELECT id_group FROM ‘._DB_PREFIX_.’group_lang WHERE code = "$codece"'; $id_group_ce = (int)Db::getInstance()->getValue($sql) Mais alors pour l'insert, il connait déjà l'id du customer à modifier ? Alors au niveau du résultat j'ai une erreur 500 qui provient de l'insert dès que j'accede à la page d'authentification. Edited May 15, 2013 by vermich (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