Partage
  • Partager sur Facebook
  • Partager sur Twitter

Création dynamique d'un input

à partir d'un Onclick

Sujet résolu
    20 décembre 2010 à 16:36:39

    Bonjour de Noël à tous les zéros ! ;)

    C'est en découvrant ce nouveau thème de Noël que je viens faire appel aux plus rusés d'entre vous !

    Je vous explique la situation :

    Je suis en train de créer un formulaire grâce auquel des visiteurs pourront recommander le site par un mail automatiquement. Je veux également, c'est le coeur du problème, donner la possibilité de cliquer sur un bouton pour créer/afficher un input/text pour entrer une adresse mail supplémentaire.

    Je croyais avoir trouver une solution en JS pour créer les input mais lors de la récupération des données en PHP, je remarque que seule la dernière adresse mail est recensée. :euh:

    Voici le code :

    JS :
    function Ajouter_mail()
    		{			
    			if(document.getElementsByName('email').length < 10)
    			{
    				document.getElementById('ajouts').innerHTML += "<input type='text' name='email' id='((document.getElementsByName('email').length)+1)' size='30'><br />";
    			}
    			else
    			{
    				alert("Le nombre maximum d'adresses mail est de 10.");
    			}
    		}
    


    HTML :

    <form action="#" method="POST" name="recommander">
    			<table style='margin:auto;'>
    			
    				<tr><td>Votre nom :</td>
    					<td><input type="text" name="nom" size="20"></td>
    				</tr>
    				
    				<tr><td>Votre pr&eacute;nom :</td>
    					<td><input type="text" name="prenom" size="20"></td>
    				</tr>
    				
    				<tr><td>Destinataire(s) ( <input onClick="Ajouter_mail();" type='button' value='(+) Ajouter'> ) : </td>
    					<td id="ajouts"><input type="text" name="email" id='1' size="30"><br /></td>
    				</tr>
    
    				<tr><td><?php dsp_crypt(0,1) ?></td></tr>
    				
    				<tr><td>Recopier le code :</td>
    					<td><input type="text" name="code"></td>
    				</tr>
    						
    				<tr><td><input type="submit" value="Valider" /></td>
    					<td><input type="reset" value="Remise &agrave; z&eacute;ro" /></td>
    				</tr>
    			
    			</table>
    			</form>
    


    Voilà et donc comme je vous le disais précédemment, à chaque clic sur le bouton d'ajout, un champ est bien créé (jusqu'à 10 maximum) mais quand je regarde le code source ou veut récupérer dans un tableau en PHP les différentes adresses, cela ne m'en répertorie qu'une, la dernière entrée :'(

    J'espère que cela va 'toquer' dans l'esprit de certains, je ne sais pas vraiment ce que je dois faire d'autres pour créer un input avec l'id qui s'incrémente, je pensais avoir trouvé la bonne solution ... Si cela marche ça ne sera plus très compliqué je pense, on les met dans un tableau et on sépare par un ; et c'est parti pour la fonction mail() :D Mais voilà, ça coince :o

    Je suis à votre écoute :ange:
    • Partager sur Facebook
    • Partager sur Twitter
      20 décembre 2010 à 18:24:06

      Il suffit que le name de ton input soit "email[]" au lieu de "email".
      • Partager sur Facebook
      • Partager sur Twitter
        21 décembre 2010 à 10:46:31

        Merci pour la réponse !

        Malgré mon enthousiasme de l'essayer en indiquant directement dans le name que email[] allait donc être un tableau, ... cela ne marche pas :(

        Je l'ai pourtant changé dans la partie JS, dans mon HTML, et dans la partie PHP (que je vais indiquer pour info d'ailleurs on ne sait jamais, même si je n'y fait pour l'instant pas grand chose), je ne vois pas ce qu'il manque ...

        <?php
        if(!empty($_POST["nom"]) && !empty($_POST["prenom"]) && !empty($_POST["email[]"]))
        				{
        					//DESTINATAIRES
        						if(preg_match('/^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,6}$/i',$destinataire))
        						{
        							echo $destinataire[0];
        						}
        }
        ?>
        


        Voilà, le PHP simple donc pour le moment, en créant un ou plusieurs mail supplémentaire j'essaie d'en afficher le 1er. Mais donc ni dans le code source ni dans la récupération PHP par la suite je ne retrouve mes adresses, au secooouurs :-°:'(
        • Partager sur Facebook
        • Partager sur Twitter
          21 décembre 2010 à 11:51:20

          Quand tu mets un name HTML genre email[] il faut que tu récupères en PHP les valeurs avec un foreach() sur le $_POST['email'] .
          • Partager sur Facebook
          • Partager sur Twitter
            21 décembre 2010 à 12:18:38

            Le foreach, comment ai-je pu oublier ... ça marche !

            Merci à toi Desolation ! ;)
            • Partager sur Facebook
            • Partager sur Twitter

            Création dynamique d'un input

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown