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é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 à 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)