form dans un autre form...

Mammouth du PHP | 702 Messages

19 avr. 2012, 09:27

Bonjour à tous, j'ai un soucis, en fait ne connaissant pas javascdript j'essaie de faire un formulaire dans un formulaire.

j'ai donc dans le premier formulaire un input de type text, qui affiche cela:
<input name="date_action" type="text" value="<?php
		
		$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);
   if isset($j) {  echo $ladate; }
      
        ?>" size="12">
ensuite ce que je souhaiterais faire, c'est pouvoir flexiblement décaler la date de n jours, j'ai donc créer le formulaire sous-jacent ci dessous:
<form action="index.php" method="post"><p>Décalage des dates:
    <input type="submit" value="-"><input type="text" name="j" size="6"><input type="submit" value="+">&nbsp; </p></form>
ce formulaire est inclut dans le formulaire global et en fonction de ce nombre la date devrait être décallée, le soucis c'est que il y a confusion avec les balises form et les input de type sbmit donc je suis perdu...

ViPHP
xTG
ViPHP | 7331 Messages

19 avr. 2012, 10:51

Tu ne peux pas mettre un formulaire dans un formulaire. ;)
Donc il faut jouer dans le même formulaire mais en distinguant les actions avec le name du bouton submit.

Mammouth du PHP | 702 Messages

19 avr. 2012, 11:16

je vais essayer en tentant de changer l'orientation du formulaire se;lon le bouton cliqué grace a aune condition, vous en pensez quoi ?

ViPHP
xTG
ViPHP | 7331 Messages

19 avr. 2012, 13:47

Cela va être une belle galère.
Par contre j'ai dit une bêtise dans mon message précédent, c'est surtout l'attribut value qui va faire la différence.

Exemple :
<?php
  if( isSet($_POST['submit']) && $_POST['submit'] == 1 ){
    echo 'Traitement submit 1';
  }
  if( isSet($_POST['submit']) && $_POST['submit'] == 2 ){
    echo 'Traitement submit 2';
  }
?>
<form action="#" method="POST">
  <input type="submit" name="submit" value="1" />
  <input type="submit" name="submit" value="2" />
</form>

Mammouth du PHP | 702 Messages

19 avr. 2012, 15:18

est-ce que cette structure est correcte?
<form action="savedata.php" method="post"><?php
  if( isSet($_POST['submit']) && $_POST['submit'] == 1 ){
    echo 'Traitement submit 1';
  }
  if( isSet($_POST['submit']) && $_POST['submit'] == 2 ){
    echo 'Traitement submit 2';
  }
?>
<form action="#" method="POST">
  <input type="submit" name="submit" value="1" />
  <input type="submit" name="submit" value="2" />
</form><input type="submit" value="valider"></form>

ViPHP
ViPHP | 2577 Messages

19 avr. 2012, 15:38

Pourquoi tu n'as pas repris le modèle de xTG ?
Tu as ajouter un form imbriqué dans l'exemple de xTG, et tu retourne au problème précédent.

Mammouth du PHP | 702 Messages

19 avr. 2012, 15:50

j'ai essayé de faire comme cela mais ça ne marches pas...
<input type="text" value="<?php
  if( isSet($_POST['submit']) && $_POST['submit'] == `-` ){
  $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'] == `+` ){
    $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>
<form action="charger_scenario2.php" method="POST">
 <input type="hidden" name="code_s" value="<?php
      echo $_POST['code_s'];
     
        ?>">
  <input type="submit" name="submit"  value="-" />
  <input name="jours" type="text" value="" size="5" />
  <input type="submit" name="submit" value="+" />
en fait je tiens absolument à ce qu'apparaissent "+" et "-" mais bon quand c'était marqué 1 et 2 ça fonctionnait mais la avec les signes ça me fonctionne plus du tout, pourtant j('ai bien mis les `` d'usages lorsque l'ont met un signe... quelqu'un aurait une idée ? d'avance merci.

Mammouth du PHP | 702 Messages

19 avr. 2012, 15:55

bah pmarce que en fait j'ai cela.:
<table cellpadding="5" cellspacing="5">
<tr><td><strong>CODE SCENARIO</strong></td>
  <td><strong>LIBELLE</strong></td>
  <td><strong>ACTION</strong></td>
  <td><strong>DESCRIPTION</strong></td>
  <td><strong>DATE</strong></td>
</tr>
<?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>
<input type="text" value="<?php
  if( isSet($_POST['submit']) && $_POST['submit'] == `-` ){
  $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'] == `+` ){
    $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>
et une fois qu'on a les bonnes dates on valide le vrai formulaire.

Mammouth du PHP | 702 Messages

23 avr. 2012, 10:52

y'a pas un moyen que le traitement se fasse sur une aitre page, car j'ai bien mon décallage de date, grâce au form mais après comment je fais pour enregistrer les données? car sur la même page c'est pas possible...

Mammouth du PHP | 702 Messages

23 avr. 2012, 15:38

j'ai essayé de faire cela, mais ça ne fonctionne pas...
<form action="<?php  if (isset($_POST['submit']) && $_POST['submit'] == 'moins' OR $_POST['submit'] == 'plus' ) { ?>#<?php } else {?>go.php<?php } ?>" method="post">

ViPHP
xTG
ViPHP | 7331 Messages

23 avr. 2012, 20:14

Pour faire absolument ce que tu veux (de ton dernier message) il faut faire cette condition, mais avec un traitement Javascript.