Jump to content

Adhésion par code à un groupe


Recommended Posts

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 by vermich (see edit history)
Link to comment
Share on other sites

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 by vermich (see edit history)
Link to comment
Share on other sites

$_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

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 by vermich (see edit history)
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...