Jump to content

Ajouter un champ dans le module newsletter


Recommended Posts

Bonsoir

Je souhaiterais ajouter un champ "prénom" dans le module (celui de base) newsletter.

Pourriez vous m'expliquer comment faire ? Car même si je rajoute le champ dans le fichier tpl, la personne a beau inscrire son prénom, dans la base de données je ne reçois pas cette information.

Et de même, si je rajoute (en plus) un champ prénom dans la table ps_newsletter de la base de données ; plutôt que de rajouter une colonne, ça me décale les informations visibles dans la colonne email dans la colonne date add...


Merci !
(Problème moindre mais malgré tout important pour moi puisque je souhaite envoyer des newsletters personnalisées au prénom du client et par la suite grâce au nom mais ça, pas de soucis grâce à l'inscription compte client je pense :))

15081_45hJaZhXNTgSnQyadI7H_t

Link to comment
Share on other sites

bonjour,

1 - ajouter une colonne prenom à la table newsletter (via phpmyadmin ou console)
2 - ajouter un input text (name="prenom") au formulaire de blocknewsletter.tpl
3 - modifier le code suivant dans blocknewletter.php :

/* If the user ins't a customer */
elseif ($registerStatus == -1){
   global $cookie;
   if (!Db::getInstance()->Execute('INSERT INTO '._DB_PREFIX_.'newsletter
        VALUES (
          \'\',
           \''.pSQL($_POST['email']).'\',
           NOW(),
           \''.pSQL($_SERVER['REMOTE_ADDR']).'\', 
          (SELECT c.http_referer FROM '._DB_PREFIX_.'connections c WHERE c.id_guest = '.intval($cookie->id_guest).' ORDER BY c.date_add DESC LIMIT 1))'))

   return $this->error = $this->l('Error during subscription');
   $this->sendVoucher(pSQL($_POST['email']));
   return $this->valid = $this->l('Subscription successful');
}



pour y insérer le prénom. Selon la position de la colonne prenom dans la table, tu ajoutes

 \''.pSQL($_POST['prenom']).'\'

Link to comment
Share on other sites

Merci !

Bon apparemment ça ne prend toujours pas le prénom... Je te copie colle donc ce que j'ai ajouté.

Dans le fichier blocnewsletter.tpl :

<form action="{$base_dir}" method="post">

<input type="text" name="Prénom" size="18" value="{if $value}{$value}{else}{l s='Votre Prenom' mod='blocknewsletter'}{/if}"></p>



blocknewsletter.php :

/* If the user ins't a customer */
           elseif ($registerStatus == -1)
           {
               global $cookie;
               if (!Db::getInstance()->Execute('INSERT INTO '._DB_PREFIX_.'newsletter VALUES (\'\', \''.pSQL($_POST['prenom']).'\', \''.pSQL($_POST['email']).'\', NOW(), \''.pSQL($_SERVER['REMOTE_ADDR']).'\', 
                   (SELECT c.http_referer FROM '._DB_PREFIX_.'connections c WHERE c.id_guest = '.intval($cookie->id_guest).' ORDER BY c.date_add DESC LIMIT 1))'))
                   return $this->error = $this->l('Error during subscription');
               $this->sendVoucher(pSQL($_POST['email']));
               return $this->valid = $this->l('Subscription successful');
           }



Et voici un aperçu de ma table ps_newsletter :

        1.    id    int    6    non                auto_increment    
       2.    prenom    text        non                    utf8_general_ci
       3.    email    varchar    255    non                    utf8_general_ci
       4.    newsletter_date_add    datetime        oui                    
       5.    ip_registration_newsletter    varchar    15    non                    utf8_general_ci
       6.    http_referer    varchar    255    oui                    utf8_general_ci



Ca me prend bien l'inscription mais le problème reste identique puisqu'une fois que j'importe le fichier .csv ; même problème qu'hier puisque les adresses mail sont décalées d'une colonne ; que la colonne prénom n'aparait pas or que quand je vais dans la base de données (via mysql dumper), elle y apparait bien !!

Merci...

Link to comment
Share on other sites

Ca me fait également ça comme erreur (pour peu que je place le code que tu m'a donné au mauvais endroit) :

Column count doesn't match value count at row 1

INSERT INTO ps_newsletter VALUES ('', '***@***.com', NOW(), '**.**.**.**', 
                   (SELECT c.http_referer FROM ps_connections c WHERE c.id_guest = 63 ORDER BY c.date_add DESC LIMIT 1))



Merci, car pour moi c'est pas du français mdrr

Link to comment
Share on other sites

Oui entre temps j'ai pensé à ça et je l'ai modifié !

Bon une bonne nouvelle, il prend bien le prénom mais le décalage de colonne se fait toujours.

Ce qui fait qu'en fichier csv j'ai en colonne email le prénom et pas de colonne prénom puisque les emails se décalent dans la colonne newsletter date add...

Merci.

Link to comment
Share on other sites

  • 2 weeks later...
  • 3 months later...

merci pour ta réponse
mais je suis novice et je n'arrive pas à trouver les dossiers que tu m'indiques.
je dois aller passer par le ftp( je n'ai rien trouvé) ou phpmyadmin (merci de m'indiquer plus précisément les fichier à traiter)?
Merci encore
xavier2b

Link to comment
Share on other sites

tu dois bien savoir comment accéder à phpmyadmin, non ?
pour modifier une table de ta base, il n'est pas question de modifier quelque fichier que ce soit mais de le faire via l'administration de tes bases de données; c'est-à-dire phpmyadmin. Tout hébergeur digne de ce nom met à ta disposition un tableau de bord type cpanel qui te donne accès à phpmyadmin.

21405_yEMbqOPMxdIEMA0qSsHC_t

21406_dfq2pDKH8iLdn2O3oHOT_t

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...