11550 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous !

J'ai un ptit soucis de formulaire.
J'ai un simple formulaire en html qui renvoie sur un script php par la méthode POST.
Y'a un bouton qui permet d'ajouter des champs dont le nom est repX ou X est une variable incrémentée.

Le soucis est que quand j'envoie mon formulaire, dans mon script j'affiche $_POST et je ne vois pas mes champs créés par le bouton pour ajouter les champs mais je vois les autres.

Si quelqu'un pouvait m'éclairer sur la solution Smiley smile

Merci à tous !
Modérateur
Bonjour et bienvenue huji, Smiley smile

Aurais-tu une page en ligne ainsi que le code car en l'état, on ne peut que supposer...
Donc en fait, en php/html j'ai

while($quest=mysql_fetch_array($q))
{
     echo "
               <form method='POST' action='quest.php?action=modification'>
                       <textarea name='question' cols=25 >".$quest['question']."</textarea>
                       <input type='button' STYLE='width: 200px' value='Ajouter une r&eacute;ponse' onclick='func(\"".$quest['id_question']."\");' />
                       <div id='reponses'.$quest['id_question']>
     $c=0;
     while($rep=mysql_fetch_array($r))
                $output .="<input type='text' STYLE='width: 233px' name='rep".++$c."' value='".$rep['reponse']."' />
                                   <br>";
                $output .="</td></tr><tr><td>
                                   <input type='hidden' name='id_question' value='".$quest['id_question']."' />
                                   <input type='submit' STYLE='width: 200px' value='Mettre &agrave; jour la question' />
</form>"
}


Et pour le code JavaScript :

count = new Array();
function func(id_q)
{
     count[id_q]++;
     $('reponses'+id_q).insert({bottom: "<input STYLE='width:233px;' type='text' name='rep"+count[id_q]+"' />"+count[id_q]+"<br>"});
}
function init(id_q,rep_rows)
{
 if(!count[id_q])
          count[id_q]=rep_rows;
}


En gros c'est ça. En fait j'ai un champs question, et des champs réponses. Les champs réponses sont créés en cliquant sur un bouton 'ajout' qui appelle la fonction func ci-dessus avec comme argument l'ID de la question (stockée dans une db). func ajoute un input text dans la div reponses.'id_question' et on le rempli (jusque là tout fonctionne bien). A la validation, le formulaire est envoyé à un script php qui affiche $_POST. Mais $_POST ne contient pas les champs réponses... (que les champs question).
La fonction init sert a incrémenter les réponses pour leur donner un nom différent à chaque fois. lorsqu'elle est appelée pour la première fois par la question, elle est initialisé à rep_rows qui est une simple variable. Tout fonctionne sauf l'envoi des données des champs réponses.

Je précise enfin que j'ai fait un autre truc du genre, qui fonctionne nickel, mais en beaucoup plus simple :



<html><head>
        <script src='Prototype.js' type='text/javascript'></script>
        <script type='text/javascript'>
                var count=0;
                function func(){
                        count++;
                        $('reponses').insert({bottom: "<input STYLE='width:233px;' type='text' name='rep"+count+"' /><br>"});
                }
        </script>
</head>
<body>
	form action='quest.php?action=ajout' method='POST'>
		<table>
			<tr>
				<td width='450px'>
        				<input type='button' STYLE='width: 200px;' value='Votre question :' />
        			</td><td>
        				<textarea cols=25 name='question'></textarea>
        			</td>
        		</tr>
			<tr>
				<td valign='top'><input STYLE='width: 200px;' type='button' value='Ajouter une réponse' onclick='func();' />
				</td><td id='reponses'></td>
			</tr>";
			<tr>
				<td>
					<input STYLE='width: 200px;' type='submit' value='Enregistrer la question' />
				</td>
			</tr>
		</table>
	</form>

</body></html>


Mais celui-ci fonctionne.

Merci encore.
Modifié par huji (12 Mar 2008 - 16:16)