action du bouton différente de action du form ?

Eléphanteau du PHP | 15 Messages

06 févr. 2006, 02:46

Bonjour à tous :wink:

En gros, j'essaye de me faire "un formulaire pour ajouter un sondage" et j'aimerais poster mon formulaire vers une autre page à celle défini par le champ "action" du form. Est-ce possible ?

Je met la source de ma page ci-dessous avec ce que j'ai fais déjà...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>SONDAGE</title>
</head>

<body>



<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="form1" id="form1">
<fieldset><legend>FORMULAIRE</legend>
Question : <input name="question" type="text" value="<?php if(isset($_POST['question'])) { echo $_POST['question']; } ?>" /><br />
<?php
$plus=1;
//if(isset($_GET['option']) && $_GET['option']!='') {
if(isset($_POST['ajoute']) || isset($_POST['del_option']) || isset($_POST['edite_option'])) {
//$opt=$_GET['option'];
  foreach($_POST['option'] as $clef => $valeur) {
    if(isset($_POST['del_option'][$clef])) {
	  $_POST['option'][$clef]=='';
	} else {
	  if($_POST['option'][$clef]!='') {
?>
	  :: OPTION <?php echo $clef; ?> : <input name="option[<?php echo $clef; ?>]" type="text" value="<?php echo $valeur; ?>" /> <input type="submit" name="edite_option[<?php echo $clef; ?>]" value="Modifier" /> 
<input type="submit" name="del_option[<?php echo $clef; ?>]" value="Supprimer" /><br />
<?php
	  }
    }
	$plus=$clef+1;
  }
}

//if(isset($_POST['option'])) { $plus=count($_POST['option']!='')+1; }
?>
:: OPTION <?php echo $plus; ?> : 
<input type="text" name="option[<?php echo $plus; ?>]" value="" /> 
<input type="submit" name="ajoute" value="Ajouter une option" /><br />
<input type="button" name="submit" onclick="this.form.submit('page2_2.php');" value="Nouveau" /><br /><br />
</fieldset>
</form>

</body>
</html>
Ma page fonctionne très bien dans l'ensemble, mais comme je ne m'y connais pratiquement pas en "JavaScript", je croyais qu'en transformant le bouton "submit" en "button" et en lui affectant un "onclick" avec la fonction jascript "this.form.submit()" (en précisant une URL) que sa posterait vers une autre page.
Et bien : non :cry:

Dommage ! Donc si on peut me donner une méthode sa serait sympa :lol:

Merci d'avance à tous pour votre aide :D

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

06 févr. 2006, 15:13

Salut,

En principe suffit de récupérer le nom du bouton cliqué ce que tu fait d'ailleurs:
if(isset($_POST['ajoute']) || isset($_POST['del_option']) || isset($_POST['edite_option']))
mais tu exécute le même code avec touts les boutons.

Tu peux donc très bien effectuer plusieurs traitements sur la même page en différenciant les boutons.
if(isset($_POST['ajoute'])
{
   //code d'ajout
}
elseif (isset($_POST['del_option']))
{
   //code de modifs
}

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 15 Messages

06 févr. 2006, 15:41

Salut "truc"

Oui, effectivement je peux faire ainsi si je veux traiter le formulaire sur "la même" page mais je voulais absolument que la page soit traiter par une autre page.

Je dit "je voulais" car je viens de trouver la solution sur un autre forum :wink:, mais merci quand même pour ta proposition :)

Donc, au cas où sa intéresse, pour que mon bouton nommé "submit" puisse envoyer mon formulaire à une autre page, je l'ai construit ainsi :

Code : Tout sélectionner

<input type="submit" name="submit" onclick="document.form1.action='page2_2.php';" value="Nouveau" />
J'ai donc remplacé le type "button" par "submit", puis la valeur du onclick par :
document.form1.action='page2_2.php';

Trop content, je suis ! :D

Au plaisir de se relire prochainement, et à bientôt.