Jump to content

[RESOLU] PB formulaire de contact avec multi champs


Recommended Posts

Bonjour la communauté !

J'ai voulu personnalisé mon formulaire de contact (contact-form.tpl, image jointe), je suis presque arrivé au résultat final mais je bloque sur un point.

> Pb: Je reçois autant d'emails qu'il y a de nouveaux champs !!

Tout se passe probablement dans le fichier contact-form.php.

Le code de mon contact-form.tpl est le suivant:

<form action="{$request_uri|escape:'htmlall':'UTF-8'}" method="post" class="std">

{l s='Send a message'}


{l s='Subject'}

{l s='-- Choose --'}
               {foreach from=$contacts item=contact}
{$contact.name|escape:'htmlall':'UTF-8'}
               {/foreach}



{l s='SDE Le Sport d\'Elide'}
{l s='16 rue Ampere'}
{l s='Immeuble SOMAG'}
{l s='95300 PONTOISE'}
{l s='Tel: 01 30 38 87 77'}
{l s='Fax: 01 30 30 43 93'}

{l s='For questions about an order or for information about our products'}.

 
       {foreach from=$contacts item=contact}


 {$contact.description|escape:'htmlall':'UTF-8'}
       {/foreach}


{l s='Nom et Prenom'}
           <input type="text" id="nomPrenom" name="nomPrenom" value="{$nomPrenom}" />



{l s='CP et Ville'}
           <input type="text" id="cpville" name="cpville" value="{$cpville}" />



{l s='Telephone'}
           <input type="text" id="tel" name="tel" value="{$tel}" />



{l s='E-mail address'}
           <input type="text" id="email" name="from" value="{$email}" />



{l s='Message'}
            <textarea id="message" name="message" rows="7" cols="70">{if isset($smarty.post.message)}{$smarty.post.message|escape:'htmlall':'UTF-8'|stripslashes}{/if}</textarea>



           <input type="submit" name="submitMessage" id="submitMessage" value="{l s='Send'}" class="button_large" />


</form>



Et mon fichier contact-form.php à partir de la ligne 22 sachant que le reste n'est pas modifié:
(Je pense que mon souci vient des 3 premières conditions ajoutées)

else
       if (Mail::Send(intval($cookie->id_lang), 'contact', 'Message from contact form', array('{email}' => $_POST['from'], '{nomPrenom}' => $_POST['nomPrenom'], '{message}' => stripslashes($message)), $contact->email))
       if (Mail::Send(intval($cookie->id_lang), 'contact', 'Message from contact form', array('{email}' => $_POST['from'], '{cpville}' => $_POST['cpville'], '{message}' => stripslashes($message)), $contact->email))
       if (Mail::Send(intval($cookie->id_lang), 'contact', 'Message from contact form', array('{email}' => $_POST['from'], '{tel}' => $_POST['tel'], '{message}' => stripslashes($message)), $contact->email))
       {
       if (intval($cookie->id_customer))
           $customer = new Customer(intval($cookie->id_customer));
       if (Mail::Send(intval($cookie->id_lang), 'contact', 'Message from contact form', array('{email}' => $_POST['from'], '{message}' => stripslashes($message)), $contact->email, $contact->name, $from, (intval($cookie->id_customer) ? $customer->firstname.' '.$customer->lastname : $from)))
           $smarty->assign('confirmation', 1);
       else
           $errors[] = Tools::displayError('an error occurred while sending message');
   }
}

$email = Tools::safeOutput(Tools::getValue('from', ((isset($cookie) AND isset($cookie->email) AND Validate::isEmail($cookie->email)) ? $cookie->email : '')));
$smarty->assign(array(
   'errors' => $errors,
   'email' => $email
));

$smarty->display(_PS_THEME_DIR_.'contact-form.tpl');
include(dirname(__FILE__).'/footer.php');

?>



Dans les emails je reçois le contenu ci-dessous avec les champs "Adresse électronique" et "message" qui sont remplis systématiquement et les 3 autres champs se remplissent à tour de rôle dans des emails séparément:
...
Nom et Prénom : {nomPrenom}

CP et ville : {cpville}

Telephone : 060000000

Adresse électronique : [email protected]

Message: test 5
...

Si VOUS lecteur de ce passionnant post, souhaitez relever un challenge qui pour moi est un véritable chemin de croix, ce serait avec grand plaisir, je sèche !!

> PS v 1.2.5

Merci par avance.

20645_HXIsRRxp6kMmLYTrqiQk_t

Link to comment
Share on other sites

J'ai trouvé tout seul le problème et cela fonctionne bien, je reçois un email avec tous mes champs bien remplis, ouff !

Tout était comme je le pressentais dans le fichier contact-form.php.

J'avais ajouté ces 3 conditions "send" pour chaque champ ajouté, donc je recevais 4 emails séparés, chacun avec une information différente.

A supprimer:

if (Mail::Send(intval($cookie->id_lang), 'contact', 'Message from contact form', array('{email}' => $_POST['from'], '{nomPrenom}' => $_POST['nomPrenom'], '{message}' => stripslashes($message)), $contact->email))
       if (Mail::Send(intval($cookie->id_lang), 'contact', 'Message from contact form', array('{email}' => $_POST['from'], '{cpville}' => $_POST['cpville'], '{message}' => stripslashes($message)), $contact->email))
       if (Mail::Send(intval($cookie->id_lang), 'contact', 'Message from contact form', array('{email}' => $_POST['from'], '{tel}' => $_POST['tel'], '{message}' => stripslashes($message)), $contact->email))



La modification:

if (Mail::Send(intval($cookie->id_lang), 'contact', 'Message from contact form', array('{email}' => $_POST['from'], '{nomPrenom}' => $_POST['nomPrenom'],'{cpville}' => $_POST['cpville'],'{tel}' => $_POST['tel'],'{message}' => stripslashes($message)), $contact->email, $contact->name, $from, (intval($cookie->id_customer) ? $customer->firstname.' '.$customer->lastname : $from)))
           $smarty->assign('confirmation', 1);



J'ai supprimé les 3 lignes "send" ligne 22. j'ai modifié la ligne 26 et le "send" du formulaire d'origine en ajoutant les variables: '{cpville}' => $_POST['cpville']

Sachant qu'il faut remplacer 'cpville' par votre champ personnalisé.
A+

Link to comment
Share on other sites

  • 2 weeks later...

Bonjour

j'essaie de suivre l'exemple mais j'ai un soucis

je recois le message du champs texte mais rien d'autre

mon contact-form.tpl

        

{l s='Imprimante'}
            <textarea id="Imprimante" name="Imprimante" rows="1" cols="50"> </textarea>




{l s='Reference Cartouche'}
         <textarea id="Reference" name="Reference" rows="1" cols="50" /></textarea>




{l s='Message'}
            <textarea id="message" name="message" rows="7" cols="70">{if isset($smarty.post.message)}{$smarty.post.message|escape:'htmlall':'UTF-8'|stripslashes}{/if}</textarea>



et mon contact-form.php

        if (Mail::Send(intval($cookie->id_lang), 'contact', 'Message from contact form', array('{email}' => $_POST['from'], '{nomPrenom}' => $_POST['nomPrenom'],'{cpville}' => $_POST['cpville'],'{tel}' => $_POST['tel'], '{Imprimante}' => $_POST['Imprimante'], '{Reference}' => $_POST['Reference'], '{message}' => stripslashes($message)), $contact->email, $contact->name, $from, (intval($cookie->id_customer) ? $customer->firstname.' '.$customer->lastname : $from)))
           $smarty->assign('confirmation', 1); 



merci d'avance

Link to comment
Share on other sites

Au sujet de ton contact-form.tpl il faut que tu ajoutes les valeurs de tes nouveaux champs soit ceci 'value="{$Imprimante}" à cet endroit: <textarea id="Imprimante" name="Imprimante" value="{$Imprimante}" rows="1" cols="50">
et ainsi de suite...

Ensuite sur ton contact-form.php, tu as recopié exactement mon code et effectivement cela ne peut pas fonctionner. Tu dois remplacer les valeurs nomPrenom, cpville, tel, par les tiennnes ou les ajouter, mais chaque champ que tu ajoutes doit avoir sa valeur dans le fichier .tpl, dans le .php et dans l'email .html

Est ce que tu as défini les champs {imprimante}... dans le mail que tu reçois ?

Bonne chance

Link to comment
Share on other sites

bonjour et merci pour la modification

alors le fichier tpl est désormais conforme
le fichier php l'était bien, j'ai bien rajouté les champs correspondants, dans mon exemple ils y sont mais a la fin normalement

et oups j'ai oublié de modifier le fichier html

je le fais de suite et je teste

bon c'est super
j'ai ajouté des champs et testé ca marche nikel

(edit 1) mais j'ai un petit bug

les champs dans mon formulaire de contact ne sont pas vide (pas aligné a gauche lors de la saisie) on dirait qu'il y a des espaces dedans qui me décale mon texte

(edit 2) autant pour moi, j'avais laissé des espaces a la fin de ma ligne textearea, hum dur dur ce matin

et merci encore

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