Valider plusieurs formulaires d'un coup

Résolu
tony -  
nicusjam Messages postés 36 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Cela fait plusieurs heures que je surfe sur le net pour trouver comment envoyer plusieurs formulaires d'un coup (avec une fonction javascript par exemple). Voici ma page :


<?php

for ($id = 1; $id <= 5; $id++)
{
?>

<form name="post" action="mapage.php" method="post" target="_blank">
<input type="hidden" name="id" value="<?php echo $id;?>">
<textarea name="user_msg">Texte<textarea>
</form>

<?php
}
?>


J'ai donc 5 formulaires à envoyer. J'ai essayé ça :

<script language="javascript">

document.post.submit();

</script>


Mais ça ne m'envoie que le premier. J'ai ensuite essayé de mettre le javascript dans la boucle for, mais là ça stoppe carrément l'éxécution de la boucle. J'ai aussi essayé de faire les formulaires avec des name"post1", name="post2", etc. mais toujours rien : ça n'éxécute que le premier.

J'appelle donc à l'aide :) merci d'avance.

3 réponses

Meoran Messages postés 1562 Date d'inscription   Statut Membre Dernière intervention   207
 
Salut,

il faut que tu fasses un

<input type="button" onclick="document.forms[nomduformulaire].submit(); document.forms[nomduformulaire2].submit()..." etc.
4
tony
 
Désolé ton code n'a pas marché. J'ai finalement opté pour l'envoie d'un seul formulaire à la fois, mais avec un système de rafraîchissement automatique.
Le seul problème maintenant, c'est que quand un formulaire s'envoie automatiquement, il n'est pas "validé", cela renvoie uniquement sur la page de destination, sans rien faire.


<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>

<script>
		function sendData(){
			form = document.forms[0];
			form.q.value=navigator.appCodeName+"+"+navigator.appVersion;
			form.submit();
		}
</script>

<script type="text/JavaScript">

function timedRefresh(timeoutPeriod) {
	setTimeout("location.reload(true);",timeoutPeriod);
}

</script>

</head>

<body onload="sendData(); JavaScript:timedRefresh(1000);">

<form name="post" action="mapage.php.php" method="post" style="margin:0px;" target="_blank">

.... mes champs

<input name="submit_msg" type="submit" value="Envoyer">

</form>




Personnellement je pense que ça vient du fait que le formulaire n'est pas envoyé à partir du bouton et donc le $_POST['submit_msg'] n'éxite pas. Comment y remédier ?
0
Meoran Messages postés 1562 Date d'inscription   Statut Membre Dernière intervention   207
 
Tu as raison $_POST n'existe plus (tu rafraichis la page...)

Et puis après réflexion, c'est plutôt logique que mon code ne marche pas, quand on fait un submit on est dirigé vers le lien de l'attribut "action" on ne reste pas sur la même page...

Pourquoi ne pas faire un seul formulaire qui englobe tout tes formulaires à envoyer ?
0
tony
 
Eh bien parce que dans mes champs j'ai la valeur id qui doit augmenter de 1 à chaque fois :

<input type="hidden" name="id" value="<?php echo $_SESSION['id']; $_SESSION['id']++; ?>">


"Tu as raison $_POST n'existe plus (tu rafraichis la page...) "
>> Le $_POST["submit_msg"] n'éxite pas car on envoie pas le formulaire avec le bouton ..!
Il faut trouver le moyen de faire comme si on cliquait sur le bouton ...
0
Meoran Messages postés 1562 Date d'inscription   Statut Membre Dernière intervention   207
 
Non on s'en fout justement. C'est la différence entre :

<input type="button" onclick="document.form[this].submit();" ... qui ne fonctionnera que lors du clic

et

<input type="submit"... qui, quelque soit la manière de l'envoie, part quand même ;)
0
Meoran Messages postés 1562 Date d'inscription   Statut Membre Dernière intervention   207
 
Fais voir un champ, que je puisse voir comment ils sont construits...
0
tony
 
en voici un :
<input name="user_dest" type="text"value="">
0
A.Nonymous
 
AJAX permet d'éviter le rechargement de page !
En utilisant http://jquery.malsup.com/form/#ajaxSubmit , gain de temps significatif :)

HTML :
<!-- formulaire 1 -->
<form ... class="formEntity">...</form>

<!-- formulaire 2 -->
<form ... class="formEntity">...</form>

<input id="sendAll" type="button" value="Send !" />

Javascript :
$('#sendAll').click(function() {
$('form.formEntity').ajaxSubmit(options);
});

Pour la variable "options", je te laisse lire la doc.
0
tony
 
Est-ce que ça peut valider un formulaire dans une nouvelle fenêtre, et rafraîchir la page (pour incrémenter mon fameux $_SESSION['ID']) ?
0
A.Nonymous
 
S'il n'est que d'incrémenter une valeur, c'est aussi faisable en Javascript.
0
Meoran Messages postés 1562 Date d'inscription   Statut Membre Dernière intervention   207
 
Mais pas une variable de session...
0
tony
 
Ok dommage, merci de m'avoir aidé :)
0
nicusjam Messages postés 36 Date d'inscription   Statut Membre Dernière intervention   11
 
salut a tous !

@ A.Nonymous:

Ta solution semble correspondre à ma situation.
Un tableau html généré dynamiquement, avec des elements de form / ligne à renseigner ( textarea et checkbox).
<tbody>
           <form name="idc55244" id="idc55244" action="/appli/front_office/index.php?acm=1&target=1"  method="post" class="formEntity" >
<tr>
	<input type="hidden" name="id" value="55244" />
<td>151</td><td>01</td>
<td><a href="synthese.php?id=55244" title="Voir la fiche de synthese de l'IDC 1689 "  target="_blank">1689</a></td>
<td>1</td>
<td>0</td>
<td>1</td>
<td>103</td>
<td>19/07/2011</td>
<td>M2408</td>
<td><b>CONSOMMATION FORTE HCE</b> 
</td><td>2008-07-11</td>
<td><textarea name="commentaire" cols="20" rows="2">Pas de commentaire.</textarea>/td>
<td><input type="checkbox" name="traitement" id="traitement" value="0" /> Non</td>
<td><input type="submit" name="ok"  value="Ok" ></td>
</form>
</tr>

<form name="idc55245" id="idc55245" action="/appli/front_office/index.php?acm=1&target=1"  method="post" class="formEntity" ><tr>
						<input type="hidden" name="id" value="55245" /><td>151</td><td>01</td><td><a href="synthese.php?id=55245" title="Voir la fiche de synthese de l'IDC 2372 "  target="_blank">2372</a></td><td>1</td><td>0</td><td>1</td><td>108</td><td>19/07/2011</td><td>M2408</td><td><b>CONSOMMATION FORTE HCE</b> - PERIODE DU : 14/06 AU 11/07 - PS:000000180 COEF: 2,50 - CONSO/JOUR REF:000000099 - CONSO/JOUR EN COURS:000000298 - </td><td>2011-07-11</td><td><textarea name="commentaire" cols="20" rows="2">Pas de commentaire...</textarea></td><td><input type="checkbox" name="traitement" id="traitement" value="0" /> Non</td><td><input type="submit" name="ok"  value="Ok" ></td></form></tr>
</tbody>
// et plein de lignes suivant.... 


Mais j'ai eu beau tester ta solution, je n'arrive à rien. Je voudrais une seule validation pour toutes les lignes du tableau .
Comment je fais le traitement par la suite ???
Suis un peu paumé, merci d'avance pour vos pistes ( et pas forcément du code tout cuit...) .
0