1 formulaire à 2 boutons

Mammouth du PHP | 545 Messages

21 sept. 2007, 23:05

Salut,

J'essaye depuis un certain temps de faire un formulaire disposant de 2 boutons : un pour effacer le test et l'autre pour utiliser le test dans la création d'un plan d'entraînement !

Je ne suis pas fortiche en JS et, pourtant, cela à l'air de fonctionner mais la page attendu ne s'affiche pas ... je penche plus pour un formulaire foireux !

Mes fonctions JS:

Code : Tout sélectionner

function deltest(){ var Itemid = document.forms.testview.Itemid.value; var test_id = document.forms.testview.test_id.value; var del = 'index.php?option=com_cattest' + '&Itemid=' + Itemid + '&task=delete&id=' + test_id; //alert ("Id du test " + test_id); alert ("del = " + del); document.forms.testview.testviewac.value = String( del ); document.forms.testview.submit(); } function plantest(){ var Itemid = document.forms.testview.Itemid.value; //alert ("Itemid " + Itemid); var test_id = document.forms.testview.test_id.value; var plan = 'index.php?option=com_cattest' + '&Itemid=' + Itemid + '&task=plan&id=' + test_id; alert ("plan = " + plan); document.forms.testview.testviewac.value= String ( plan ); document.forms.testview.submit(); }
Le code HTML
<tr>
	<td height="50" colspan="2">
	  <div align="center">
	    <form id="testview" name="testviewac" method="post" action="">
	      <input type="hidden" name="Itemid" value="<?php echo $Itemid;?>"/>
	      <input type="hidden" name="test_id" value="<?php echo $test->test_id;?>" />
	      <input type="submit" name="delete" onClick="deltest(this.test_id);" value="<?php echo _DELETE;?>" />
	      <input type="submit" name="plan"  onClick="plantest(this.test_id);" value="<?php echo _BOUTONPLAN;?>" />
		    </form>
      </div></td>
Je ne sais pas expliquer mon erreur, est-ce que quelqu'un peut m'aider ?

Merci
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

22 sept. 2007, 01:54

Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "Javascript, AJAX".



Remplace déjà tes boutons submit qui ont pour effet de soumettre le formulaire par des input de type "button" qui ne feront qu'exécuter le onclick :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 545 Messages

22 sept. 2007, 08:27

Remplace déjà tes boutons submit qui ont pour effet de soumettre le formulaire par des input de type "button" qui ne feront qu'exécuter le onclick :)
Ok j'ai fait mais cela ne fonctionne pas.

J'ai pas trop le temps maintenant car je vais bosser mais ce soir j'orienterai de nouvelles recherches avec 'button' mais, si quelqu'un a une proposition, elle sera la bien-venue ... un grand merci
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

22 sept. 2007, 14:11

Dans tes fonctions tu essaye de mettre à jour la valeur du champ "testviewac" :

Code : Tout sélectionner

document.forms.testview.testviewac.value = ...
or il n'existe aucun champ de ce nom dans ton formulaire... dont le nom par ailleurs est testviewac et pas testview.

Essaye comme ceci pour récupérer la variable $_POST['testviewac'] et renseigner sa valeur et soumettre le formulaire correctement :

Code : Tout sélectionner

<form id="testview" name="testview" method="post" action=""> <input type="hidden" name="testviewac" /> ... document.testview.testviewac.value = ... ; document.testview.submit();
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 545 Messages

23 sept. 2007, 07:57

Salut et merci pour le coup de main,

J'ai essayé de faire ce que tu m'as demandé mais voilà rien ne se passe et c'est la même page qui est rechargé et pas la variable del ... je suis certain qu'elle passe grâce à l'alert mais après ?

Merci
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 sept. 2007, 09:47

Lorsque tu ne spécifies pas d'action dans ton formulaire, celui-ci est soumis à la page actuelle (donc la même page est rechargée). Cependant tu dois à ce moment là récupérer les valeurs de ton formulaire et donc avoir $_POST['testviewac'] de renseigné.

Tu peux donc soit conserver cette méthode et faire la redirection en php (avec un header()) au début de ton script, soit faire la redirection en javascript. Dans cas le plus simple est de rediriger directement l'utilisateur vers l'url demandée sans se soucier d'envoyer le formulaire :
//au lieu de 
document.testview.testviewac.value = url; 
document.testview.submit();

// tu fais simplement
document.location = url;
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 545 Messages

23 sept. 2007, 22:13

Ok un grand merci pour ce coup de main ... je mets le code finit au cas où quelqu'un désire faire la même chose !

Code PHP/HTML
<form id="testview" name="testview" method="post" action="">
     <input type="hidden" name="Itemid" value="<?php echo $Itemid;?>"/>
      <input type="hidden" name="test_id" value="<?php echo $test->test_id;?>" />
      <input type="hidden" name="testviewac" size="50" />
      <input type="button" name="delete" onClick="if(confirm('<?php echo _DELTEST;?>')) deltest(this.test_id);" value="<?php echo _DELETE;?>" />
      <input type="button" name="plan"  onClick="plantest(this.test_id);" value="<?php echo _BOUTONPLAN;?>" />
</form>
Code JS

Code : Tout sélectionner

function deltest(){ var Itemid = document.forms.testview.Itemid.value; var test_id = document.forms.testview.test_id.value; var del = 'index.php?option=com_cattest' + '&Itemid=' + Itemid + '&task=delete&id=' + test_id; //alert ("del = " + del); document.location = del; } function plantest(){ var Itemid = document.forms.testview.Itemid.value; //alert ("Itemid " + Itemid); var test_id = document.forms.testview.test_id.value; var plan = 'index.php?option=com_cattest' + '&Itemid=' + Itemid + '&task=plan&id=' + test_id; //alert ("plan = " + plan); document.location = plan; }
Merci et A+
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!