formulaire avec double destination selon le bouton -

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : formulaire avec double destination selon le bouton -

Re: formulaire avec double destination selon le bouton -

par Ripat » 23 avr. 2012, 19:03

Un belle occasion de s'intéresser à la balise button en HTML5 et de son attribut formaction. Mais attention, cette balise est mal supportée dans les versions IE < 8. Ok pour Chrome, FF, Safari etc...

http://developers.whatwg.org/the-button ... on-element
http://www.w3schools.com/html5/att_butt ... action.asp

Re: formulaire avec double destination selon le bouton -

par moogli » 23 avr. 2012, 18:26

Ceci ne peux fonctionner qu'après une validation du formulaire.
Je te conseil de lire le tuto zéro de phpdebutant.orf afin de voir ou est ton erreur.

Solution :
- tu fait un if et traite en fonction de la valeur du bon (faut leur donne le même nom et traite suivant la valeur).
- tu fait la validation en Ajax


@+

formulaire avec double destination selon le bouton -

par piotrowski-s » 23 avr. 2012, 16:33

bonjour à tous j'essaie de faire un formulaire dont la destination varie selon le clic sur les boutons, j'ai donc le code suivant qui permet de changer le module action de la balise form en fonction des desiderata.
<form action="<?php  if (isset($_POST['submit']) && ($_POST['submit'] == 'moins' OR $_POST['submit'] == 'plus' )) echo '#'; else echo 'go.php'; ?>" method="post">

et voici le code dans son intégralité avec les boutons.
<form action="<?php  if (isset($_POST['submit']) && ($_POST['submit'] == 'moins' OR $_POST['submit'] == 'plus' )) echo '#'; else echo 'go.php'; ?>" method="post">

<?php 
$sql = "SELECT * FROM scenarii where code_s='".mysql_real_escape_string($_POST['code_s'])."'";
$result = mysql_query($sql) or die(__LINE__.mysql_error().$sql); 
?>
    <?php
     while($donnees2 = mysql_fetch_assoc($result)) {
      
        ?>      
  <tr>
    <td>
      <input name="code_s" type="text" value="<?php
      echo $donnees2['code_s'];
     
        ?>" size="10">  </td><td>  <input name="titre" type="text" value="<?php
      echo $donnees2['titre'];
      
        ?>" size="45"> </td>
      <td>       <input name="titre" type="text" value="<?php
      echo $donnees2['action'];
      
        ?>" size="15"> </td>
      <td>  <input name="libelle" type="text" value="<?php
      echo $donnees2['libelle'];
      
        ?>" size="55"></td><td> <script type="text/javascript">
function ajouter()
{
var datedep = document.getElementById('dat').value;
var date_temp = datedep.split('-');
date_temp[2]++;
datefin=new Date(date_temp[1]+'/'+date_temp[2]+'/'+date_temp[0]);
var dateres=datefin.getFullYear()+'-'+(datefin.getMonth()+1)+'-'+datefin.getDate();
document.getElementById('dat').value=dateres;
}
function soustraire()
{
var datedep = document.getElementById('dat').value;
var date_temp = datedep.split('-');
date_temp[2]--;
datefin=new Date(date_temp[1]+'/'+date_temp[2]+'/'+date_temp[0]);
var dateres=datefin.getFullYear()+'-'+(datefin.getMonth()+1)+'-'+datefin.getDate();
document.getElementById('dat').value=dateres;
}
</script>

<input type="text" value="<?php
  if( isSet($_POST['submit']) && $_POST['submit'] == "moins" ){
  $today = mktime(0,0,0, date("m"),date("d"),date("Y"));
//le nombre de seconde depuis le 1er janvier 1970 à aujourd hui 00h00. (les 3 premiers 0);
//ensuite pour ajouter xjours jours 
$today += (3600 * 24 * ($donnees2['jour'] - $_POST['jours']) ); 
// 1h * 24 = 1 jour * 20 = 20 jours
//et pour avoir la date correspondante  tout simplement
$ladate = date("d-m-Y", $today);
    echo $ladate; 
  }
  elseif( isSet($_POST['submit']) && $_POST['submit'] == "plus" ){
    $today = mktime(0,0,0, date("m"),date("d"),date("Y"));
//le nombre de seconde depuis le 1er janvier 1970 à aujourd hui 00h00. (les 3 premiers 0);
//ensuite pour ajouter xjours jours 
$today += (3600 * 24 * ($donnees2['jour'] + $_POST['jours']) ); 
// 1h * 24 = 1 jour * 20 = 20 jours
//et pour avoir la date correspondante  tout simplement
$ladate = date("d-m-Y", $today);
    echo $ladate; 
  }
  else  {    
                $today = mktime(0,0,0, date("m"),date("d"),date("Y"));
//le nombre de seconde depuis le 1er janvier 1970 à aujourd hui 00h00. (les 3 premiers 0);
//ensuite pour ajouter xjours jours 
$today += (3600 * 24 * $donnees2['jour'] ); 
// 1h * 24 = 1 jour * 20 = 20 jours
//et pour avoir la date correspondante  tout simplement
$ladate = date("d-m-Y", $today);
    echo $ladate; 
	  
  }
?>
<?php
            
      
        ?>" size="12"></td></tr>
<?php } ?></table>
    <p>
       
    </p>
 <p><strong>Décalage des date </strong>

  <table width="150" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td align="center" bgcolor="#FFFF99"><input type="hidden" name="code_s" value="<?php echo $_POST['code_s']; ?>">
        <input type="image" src="images/minus_remove_green.png" width="22" height="22" name="submit"  value="moins" >
        <input name="jours" type="text" value="" size="5" />
      <input type="image" src="images/plus_add_green.png" width="22" height="22"
  name="submit" value="plus" /></td>
    </tr>
  </table>

</p>
  <p></p> <p align="right">
  <input type="image" src="images/right.png" width="28" height="28"> </p></fieldset>
</form>
Bien entendu le soucis c'est que ce code ne fonctionne pas....

je ne sais pas ce qui cloche. d'avance merci pour votre aide.