Envoi d’un Email après validation d’un formulaire (Créer un compte)

  • Statut : non résolu
15 sujets de 1 à 15 (sur un total de 41)
  • Auteur
    Messages
  • #548071
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    Bonjour,

    Ma configuration WP actuelle
    – Version de WordPress : 4.1.1
    – Version de PHP/MySQL :
    – Thème utilisé : le mien
    – Extensions en place :
    – Nom de l’hebergeur : STRATO
    – Adresse du site :

    Problème(s) rencontré(s) :

    Bonjour,

    Je n’arrive pas à envoyer un Email à la suite d’un validation de formulaire car l’adresse Email n’arrive pas jusqu’à ce point du code.

    En résumé :

    Dans mon tpl-accueil.php, je fais une boucle sur mes évènements (car je les affiches tous).
    Pour chaque évènements, je récupère 2 variables de custom post type (événements) et j’apelle mon formulaire

    //boucle sur les événements
    while ($the_query->have_posts()) : 
    	$the_query->the_post();
    	global $nom_evenement, $email_evenement;
           $nom_evenement = get_post_meta($post->ID,’nom_evenement’,true);
          $email_evenement = get_post_meta( $post->ID, ’email_evenement’, true );
    
       <h3> <a href="#" data-width="630" data-rel="formulaire-inscriptionenligne" class="poplight" > <?php echo $texte_inscriptionenligne; ?> </a></h3>
       <?php include("inscriptionenligne-evenement.php"); ?>
    endwhile;
    wp_reset_postdata();

    Dans mon inscriptionenligne-evenement.php, si je fais afficher ces 2 variables, elles s’affichent.
    Quand je valide le formulaire de inscriptionenligne-evenement.php, j’apelle un autre fichier php qui doit envoyer un Email.
    Mais apparement, même avant d’appeler ce fichier php, les variables sont perdues, enfin , plus précisément, ces variable sont passées à l’évènement suivant, c’est à dire que je n’ai plus le bon nom d’évenement et la bonne adresse Email.

    Je ne vois pas comment garder les bonnes variables pour l’envoi d’un Email.

    si vous avez une idée, un conseil … merci beaucoup pour votre aide

    Timama

    #998531
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    Bonjour,

    J’ai trouvé une solution.
    j’ai inclu le code dans le fichier php qui envoi l’email à la fin du code du formulaire.

    Et là les variables passent bien : ce sont les bonnes variables du bon évènements.

    AU départ, je pense que le code d’envoi de l’Email était mal “placé” dnas le programme par rapport à l’évolution des évènements.

    voilà !

    #998532
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    heu alors non, ce n’est pas tout à fait résolu ! 😳

    Mes valeurs passent bien maintenant mais j’ai donc une boucle sur les évènement, et il me prend toujours que le premier évènement (nom et Email) pour tous les autres évènements.

    Donc quand j’ai plusieurs évènement, ça bloque …

    avez vous une idée? un indice ?
    merci

    Timama

    #998533
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    rebonjour, j’ai trouvé quelquechose mais j’ai encore besoin de votre aide:

    Alors, j’ai donc une boucle sur des évènements.
    Pour chaque évènement, j’ai un formulaire.
    Dans ce formulaire doit apparaître le nom de l’évènement.

    La liste de mes évènements s’affichent bien MAIS quand j’ouvre le formulaire correspondant à un évènement, ils ont tous le même nom que le premier évènement de la liste.

    Chose bizarre, c’est que quand je regarde le code source de la page sur mon navigateur, et bien, le bon nom d’évènement s’écrit !

    Pourquoi cela ne s’affiche pas bien “hors code source” ? avez vous une idée sur ce sujet?

    merci beaucoup pour votre aide….

    Timama

    #998534
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    :search:

    alors, autres indices, j’ai ma boucle

    while
    evenement –> formulaire (pour inscription)
    fin while

    Mes évènement s’affichent bien, j’ai la liste:
    evenement 1
    evenement 2
    evenement 3

    Si je clique sur le formulaire evenement 1 –> bon nom d’évènement qui s’afiche
    Si je clique sur le formulaire evenement 2 –> nom d’évènement1 qui s’affiche
    Si je clique sur le formulaire evenement 3 –> nom d’évènement1 qui s’affiche

    Si je remplie le formulaire d ‘évènement 2 et que je l’envoi –> envoi un Email à l’adresse Evenement 1 avec nom evenement 1 + envoie un Email à l’adresse Evenement 2 avec nom evenement 2

    Si je remplie le formulaire d ‘évènement 3 et que je l’envoi –> envoi un Email à l’adresse Evenement 1 avec nom evenement 1 + envoie un Email à l’adresse Evenement 2 avec nom evenement 2 + envoie un Email à l’adresse Evenement 3 avec nom evenement 3

    AUriez vous un indice qui me permettrait :
    1- d’afficher les bon nom dans le formulaire ?
    2- d’envoyer 1 seul formulaire?

    merci pour vos conseils..

    Timama :search:

    #998535
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    alors, comme cela semblait être du à la boucle while le problème, j’ai mis la partie (formulaire/envoi de mail) en dehors de la boucle.

    Le problème c’est que si je le met à la suite de la boucle while, tous mes évènements on le nom de l’évènement 3 (le dernier) et si je le place avant la boucle while, là forcement, il n’y a plus rien (enfin, pas de nom qui s’affiche).

    avez vous un conseil à me donner? je ne vois pas du tout comment faire !
    je cherche encore :search:

    merci si vous pouvez m’aider

    #998536
    mathieu789
    Participant
    Maître WordPress
    1084 contributions

    dans le 5e message, tu parles de “clic sur sur le formulaire evenement 2”
    quand tu cliques, tu changes de page ou bien il se page quelque chose en JavaScript ?

    #998537
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    merci mathieu9512 d’intervenir.

    Oui, effectivement, quand je clique sur le formulaire, il est en popup et fait appel à du javascript pour de “l’overlay FADE”.

    Là, je suis en train de tester cela :
    – lire une première fois tous les évènements et mettre dans un tableau là où il y aura formulaire
    – lire une deuxième fois tous les évènements et les afficher en utilisant le tableau pour les formulaires.

    Je voulais faire plus rapide dans le sens que ça va allonger le temps d’exécution tout ça mais bon…. .. je teste…
    Je dirais si ça fonctionne

    #998538
    mathieu789
    Participant
    Maître WordPress
    1084 contributions

    est ce que tu peux nous montrer un peu plus de code du formulaire parce que j’ai du mal à me représenter comment ça fonctionne et comment les données sont transmises aux différents endroits du code

    #998539
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    Merci mathieu9512 pour ton soutien. Tu as raison.

    J’ai donc essayé de traiter “le formulaire” à part, créer un tableau en plus mais sans succès pour le moment.
    Alors, voici le code de ma page d’accueil (j’ai pas tout mis, juste l’essentiel).

    /** Mise dans tableau des évènements avec inscription en ligne */
    	$argsinscription= array(
    		‘post_type’ => ‘evenements’,
    		‘posts_per_page’ =>-1,
    		‘meta_query’ => array(
    		array(
    			‘key’     => ‘inscriptionenligne_evenement’,
    			‘value’   => ‘1’,
    			),
    		array(
    			‘key’     => ‘accueil_evenement’,
    			‘value’   => ‘1’,
    			),
    		array(
    			‘key’     => ‘affichage_evenement’,
    			‘value’   => ‘1’,
    			),
    		)
    	);
    	
    	$the_inscription = new WP_Query($argsinscription);
    	$i=0;
    	while ($the_inscription->have_posts()) : 
    		$the_inscription->the_post();
    		$nom_evenement = get_post_meta($post->ID,’nom_evenement’,true);
    		$email_evenement = get_post_meta( $post->ID, ’email_evenement’, true );
    		
    		$tab_formulaire[$i] = array ($nom_evenement,$email_evenement) ;
    		$i=$i+1;
    	endwhile;
    	wp_reset_postdata(); 	
    
    
    /** AFFICHAGE des  EVENEMENTS les plus récents*/
    
    	$args= array(
    		‘post_type’ => ‘evenements’,
    		‘orderby’   => ‘meta_value’,
    		‘meta_key’  => ‘date_evenement’,
    		‘order’     => ‘asc’,
    		‘posts_per_page’ =>-1,
    		‘meta_query’ => array(
    		array(
    			‘key’     => ‘accueil_evenement’,
    			‘value’   => ‘1’,
    			),
    		array(
    			‘key’     => ‘affichage_evenement’,
    			‘value’   => ‘1’,
    			),
    		)
    	);
    	
    	$the_query = new WP_Query($args);
    	$fond = 0;
    
    	while ($the_query->have_posts()) : 
    		$the_query->the_post();
    	
    		$nom_evenement = get_post_meta($post->ID,’nom_evenement’,true);
    		$inscriptionenligne =  get_post_meta($post->ID,’inscriptionenligne_evenement’,true);
    		$email_evenement = get_post_meta( $post->ID, ’email_evenement’, true );
    
    	
                        
                        	<?php 
    	 				echo 'email_evenement000 = ' .$email_evenement. '</br>‘;
    					echo ‘nom_evenement000 = ‘ .$nom_evenement.’</br>‘;	
    					
    					$ligne=0;
    					foreach ($tab_formulaire as $ligne => $valeur)
    					{
    						echo $ligne.’<br />‘;
    							if ($valeur[0] == $nom_evenement)
    							{
    								
    								
    								$nom_event = $valeur[0] ;
    								$email_event = $valeur[1] ;
    					echo ‘nom_event = ‘ .$nom_event. ‘</br>‘;
    	 				echo ’email_event = ‘ .$email_event. ‘</br>‘;
    
    							}
    					} 
    
    										
    						?>
                           
                          <h3> <a href="#" class="poplight">  </a></h3>
                        <?php
                        }

    et inscriptionenligne-evenement.php est le suivant :

    <?php
    					echo 'nom_event = ' .$nom_event. '</br>‘;
    	 				echo ’email_event = ‘ .$email_event. ‘</br>‘;
    
    ?>
    <!-- FORMULAIRE ENTREPRISE -->
    <div id="formulaire-inscriptionenligne" class="popup_block">
    	<div class="titre">
    
        	<h1> <img src="/images/lion.png” alt=”lion”>   	</h1>
    		<div class="titre-underline"> </div>
       </div> 
    
    <form class="forminscriptionenligne"  method="post"  action="” id=”inscriptionenligneform”>
    	<?php 
    	echo 'email_evenement1 = ' .$email_evenement. '</br>‘;
    	echo ‘nom_evenement1= ‘ .$nom_evenement.’</br>‘;	
    		?>
            
    		<p id="intro-form">  </p>
            
            <div id="cadrebleu_inscriptionenligne">
            </br>
                <ul class="inline">
                    <li><p><label id="inscriptionenligneouinon_membre">  </label></p></li>
                    <li><p> </p></li>
                    <li><p><label class="membreoui" for="oui"></label><br /></p></li>
                    <li><p> </p></li>
                    <li><p><label class="membrenon" for="non"></label><br /></p></li>
                    <li><p><label for="inscriptionenligne_nummembre" class="num_membre">:</label></p></li>
                    <li><p></p></li>
                 </ul>
            </br>
            </div>
           	<br class="clear"></br>
            <fieldset id="inscriptionenligne1">
            <p id="text-form">
            <br class="clear">   
              	<label for="anrede"></label>
        		
        			
        			——-
        			
        			
        		
           	<br class="clear"></br>
            	<label for="inscriptionenligne_titel"></label>
            		
            <br class="clear"></br>
            	<label for="inscriptionenligne_vorname">*</label>
            		
            <br class="clear"></br>
            	<label for="inscriptionenligne_nachname">*</label>
            	
            <br class="clear"></br>
                 <label for="inscriptionenligne_rue1">*</label>
            	
           	<br class="clear"></br>
            	<label for="inscriptionenligne_rue2"> </label>
                
            <br class="clear"></br>
            	<label for="inscriptionenligne_plz">*</label>
            		
           <br class="clear"></br>
            	<label for="inscriptionenligne_ville">*</label>
            		
            <br class="clear"></br>
            	<label for="inscriptionenligne_pays">*</label>
            		
                </p> <!-- texte form -->
    		</fieldset>
    
            <fieldset id="inscriptionenligne2">
            <p id="text-form">
            <br class="clear"></br>
            <br class="clear">
                <label for="inscriptionenligne_email">*</label>
            		
            <br class="clear"></br>
                <label for="inscriptionenligne_tel">*</label>
            		
            <br class="clear"></br>
                <label for="inscriptionenligne_societe"></label>
            		
            <br class="clear"></br>
    		<label for="inscriptionenligne_kommentar"></label>
            	  <textarea name="inscriptionenligne_kommentar" id="inscriptionenligne_kommentar"></textarea>
            <br class="clear"></br>
            </p> <!-- texte form -->
    		</fieldset>
            
            <fieldset id="inscriptionenligne3">
            <p id="text-form">
            <label for="inscriptionenligneantispam" class="antispam">*</label>
            	
            <br class="clear"></br>
            <label for="submit"></label>
            	<input type="submit" name="submitinscriptionenligne" id="submit" value="”  class=”submit”  />
            </p> <!-- texte form -->
    		</fieldset>
            
            <p id="text-form"> 
            <strong>  </strong> 
            <br class="clear"></br>
             
    	    </p>
            
            <div id="pb-technique">
                <h3><a href="mailto:info@club-d-affaires.de"> info@club-d-affaires.de </a></h3>
            </div>
        </form> 
     </div>
           
            
    <?php    
    	
     if (isset($_POST['submitinscriptionenligne'])) 
     {
        //Pop up affirmant l'inscription à l'événement
    	$popupincriptionevent = $lang['popup_incriptionevent'];
    	echo 'window.alert(“‘.$popupincriptionevent.'”);’;
    	
    
    	// Récupération des variables et sécurisation des données
    	$ouinon = $_POST[‘ouinon’];
    	$inscriptionenligne_nummembre = $_POST[‘inscriptionenligne_nummembre’]; 
    	$anrede = $_POST[‘anrede’]; 
    	$titel = $_POST[‘inscriptionenligne_titel’];
    	$vorname = $_POST[‘inscriptionenligne_vorname’];
    	$nom = $_POST[‘inscriptionenligne_nachname’]; 
    	$strasse1 = $_POST[‘inscriptionenligne_rue1’];
    	$strasse2 = $_POST[‘inscriptionenligne_rue2’];
    	$plz = $_POST[‘inscriptionenligne_plz’]; 
    	$ort = $_POST[‘inscriptionenligne_ville’]; 
    	$land = $_POST[‘inscriptionenligne_pays’];
    	$email = $_POST[‘inscriptionenligne_email’];
    	$tel = $_POST[‘inscriptionenligne_tel’]; 
    	$firma = $_POST[‘inscriptionenligne_societe’];
    	$kommentar = $_POST[‘inscriptionenligne_kommentar’];
    	
    	
    	// Code PHP pour traiter l’envoi de l’email – header général
    		if (!preg_match(“#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#”, $email))
    		{
    		$passage_ligne = “rn”;
    		}
    		else
    		{
    		$passage_ligne = “n”;
    		}
    		
    	// Sélection du mail suivant la langue
    		if ($langue == ‘de’)
    		{
    		$user = get_user_by( ‘login’, ’emailinscriptionde’); 
    		$emailinscription = $user->user_email;
    		}
    		else
    		{
    		$user = get_user_by( ‘login’, ’emailinscriptionfr’); 
    		$emailinscription = $user->user_email;
    		}
    	
    
    	$headers = ‘From: Club d’affaires franco-allemand du Bade-Wurtemberg e.V. ‘.$passage_ligne;
    	$headers .= “MIME-Version: 1.0”.$passage_ligne;
    	$headers .= ‘Content-type: text/html; charset=UTF-8’ .$passage_ligne;  
    
    	// EMAIL AU CLUB D’AFFAIRES
    	// header le même qu’au dessus
    	$destinataire = $email_evenement; 
    	$sujet = $lang[‘sujet_inscriptionenligne’];
    	$sujet = $sujet; // Titre de l’email
    	$contenu = ‘<title>Titre du message</title>‘;
    	$contenu .= ‘<p>Bonjour, vous avez reçu un message à partir du site web du club d’affaires franco-allemand du Bade-Wurtemberg .</p>‘;
    	$contenu .= ‘<p>Inscription en ligne pour l’évènement’ .$nom_evenement.’ </p>‘;
    	$contenu .= ‘<p>—————————————-</p>‘;
    	$contenu .= ‘</br>‘;
    	$contenu .= ‘<p><strong>Membre</strong>: ‘.$ouinon.’</p>‘;
    	$contenu .= ‘<p><strong>Numéro de membre</strong>: ‘.$inscriptionenligne_nummembre.’</p>‘;
    	$contenu .= ‘</br>‘;
    	$contenu .= ‘<p>—————————————-</p>‘;
    	$contenu .= ‘</br>‘;
    	$contenu .= ‘<p><strong>Anrede</strong>: ‘.$anrede.’</p>‘;
    	$contenu .= ‘<p><strong>titel</strong>: ‘.stripslashes($titel);’</p>‘;
    	$contenu .= ‘<p><strong>Vorname</strong>: ‘.stripslashes($vorname);’</p>‘;
    	$contenu .= ‘<p><strong>Nachname</strong>: ‘.stripslashes($nom);’</p>‘;
    	$contenu .= ‘<p><strong>Strasse</strong>: ‘.stripslashes($strasse1);’</p>‘;
    	$contenu .= ‘<p><strong>Strasse</strong>: ‘.stripslashes($strasse2);’</p>‘;
    	$contenu .= ‘<p><strong>Plz</strong>: ‘.$plz.’</p>‘;
    	$contenu .= ‘<p><strong>Ort</strong>: ‘.stripslashes($ort);’</p>‘;
    	$contenu .= ‘<p><strong>Land</strong>: ‘.stripslashes($land);’</p>‘;
    	$contenu .= ‘</br>‘;
    	$contenu .= ‘<p>—————————————-</p>‘;
    	$contenu .= ‘</br>‘;
    	$contenu .= ‘<p><strong>Email </strong>: ‘.$email.’</p>‘;
    	$contenu .= ‘<p><strong>Tel fixe </strong>: ‘.$tel.’</p>‘;
    	$contenu .= ‘<p><strong>Tel mobile </strong>: ‘.stripslashes($firma).’</p>‘;
    	$contenu .= ‘<p><strong>Commentaire</strong>: ‘.stripslashes($kommentar);’</p>‘;
    	$contenu .= ‘</br>‘;
    	$contenu .= ‘<p>—-FIN données inscription particulier—–</p>‘;
    	$contenu .= ‘</br>‘;
    	$contenu .= ”; // Contenu du message de l’email (en XHTML)
    	 
    	// Envoyer l’email au club d’affaires
    	mail($destinataire, $sujet, $contenu, $headers); 
    	//  Fin du code pour traiter l’envoi de l’email
    	
    
    }
    ?>

    Je fais afficher
    echo ‘nom_event = ‘ .$nom_event. ‘‘;
    echo ’email_event = ‘ .$email_event. ‘‘;
    en début de formulaire, mais je n’arrive toujorus pas à récupérer les bons nom d’évènement et adresse Email qui doivent s’afficher dans le formulaire. Cela me met toujours le dernier évènement.

    Ppourtant, là, j’ai placé les évènements, qui propose un formulaire d’inscription, dans un tableau, avant la boucel d’affichage. Mais je n’arrive toujorus pas à avoir le bon nom et Email de l’évènement correspondant.

    Peut être que je recherche mal dans mon tableau…

    :search:

    #998540
    mathieu789
    Participant
    Maître WordPress
    1084 contributions

    pour passer des données au code qui va envoyer l’e-mail, tu peux par exemple mettre des balise “input type=hidden” dans le formulaire et tu récupèreras l’information dans le tableau $_POST

    #998541
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    merci mathieu9512 pour ta réponse. Mon problème est complexe, ej n’arrive pas à l’expliquer.

    J’ai des évènements dans mon wordpress sous forme de CPT, et vie ces CPT, je donne un nom et une adresse Email à chaque évènement.

    Dans ma page accueil, je fais afficher mes évènements. Et je propose un formulaire d’inscription.
    Pour l’affichage, j’utilise une boucle while.

    Dans ma page d’accueil, les données “nom” et “Email” pour chaque évènement sont corrects si je les fait afficher.
    Mais si je les fait afficher dans le formulaire, dans ce cas, si je clique sur les formulaires de chaque évènements pour voir cet affichage, et bien je vois le nom et l’adresse Email correspondant au dernier évènement de la liste.

    Tout ce qui se passe après dans le formulaire et l’envoi d’Email sont bon.
    Sauf que ça aura reçu (de la page d’accueil) un mauvais nom et une mauvaise adresse Email.

    J’ai donc essayé de mettre les données (nom et adresse Email) dans un tableau à part, faire une boucle supplémentaire à part, mais quand je fais appel à ce tableau apparemment, cela ne change rien (ou je le fais mal c’est possible). C’est pas toi qui me disait de me mettre aux tableaux parce qu’il y en a partout ? 🙂

    Je continue à chercher……
    :search:

    #998542
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    peut être que c’est dans l’appel à mon formulaire

    que les variables passent mal…

    je cherche encore

    :search:

    #998543
    mathieu789
    Participant
    Maître WordPress
    1084 contributions

    tu as essayé ce que j’ai marqué dans le message 11 ?

    Timama wrote:
    peut être que c’est dans l’appel à mon formulaire

    il y a quoi dans la variable $texte_inscriptionenligne ? le formulaire ?

    #998544
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    merci mathieu9512 d’être toujours là 😉

    pour , c’est juste le texte qui s’affiche en plusieurs langue. c’est en gros “inscription en ligne” où la personne va cliquer et là où ça ouvrira la formulaire pour l’inscription.

    Dans ton message 11, si j’ai bien compris, c’est le passage de variable du formulaire à l’email. c’est ça ?
    Mais ce n’est pas ça mon problème (si j’ai bien compris ton message 11).

    J’ai des évènements dans mon wordpress sous forme de CPT, et vie ces CPT, je donne un nom et une adresse Email à chaque évènement.

    Dans ma page accueil, je fais afficher mes évènements. Et je propose un formulaire d’inscription.
    Pour l’affichage, j’utilise une boucle while.

    Dans ma page d’accueil, les données “nom” et “Email” pour chaque évènement sont corrects si je les fait afficher.
    Mais si je les affiche dans le formulaire, dans ce cas, si je clique sur les formulaires de chaque évènements pour voir cet affichage, et bien je vois le nom et l’adresse Email correspondant au dernier évènement de la liste.

    Tout ce qui se passe après dans le formulaire et l’envoi d’Email sont bon.
    Sauf que ça aura reçu (de la page d’accueil) un mauvais nom et une mauvaise adresse Email.

15 sujets de 1 à 15 (sur un total de 41)
  • Le forum ‘Utilisation spécifique de WordPress’ est fermé à de nouveaux sujets et réponses.