Une astuce pour un formulaire ? - en php

re salut, jai une question. Jai un stage qui peut se dérouler a plusieurs dates. Pour rentrer les données, je dois d’abord ajouter le stage et ensuite ajouter les dates une par une.
Est il possible par exemple, de demander le nombre de dates(ex:4 dates de stage), et ensuite de generer le bombre de champs pour mettre ces dates (ex:4 champs de saisies). Il faudrait ensuite ajouter ces dates dans mysql mais on ferait coment ??

Si qqn pourrait me renseigner.

merci d’avance !

bien sur qu’on peut le faire autrement la notion de dynamic ne servirait a rien.
donne un peu plus de detail et la structure de la table dans laquelle tes données doivent etre inserer.

ok!
alors voici mes tables stages et date_stage



CREATE TABLE DATE_STAGE (
  idDst INT(3) NOT NULL AUTO_INCREMENT,
  STAGE_ACTIVITE_idAct INT(3) NOT NULL,
  datedebutDst DATE NULL,
  datefinDst DATE NULL,
  horaireDst TIME NULL,
  PRIMARY KEY(idDst)
)
TYPE=InnoDB;

CREATE TABLE STAGE (
  ACTIVITE_idAct INT(3) NOT NULL,
  idStage INT(3) NOT NULL,
  SALLE_idSalle INT(3) NOT NULL,
  titreStage VARCHAR(50) NULL,
  typeStage VARCHAR(25) NULL,
  typepublicStage VARCHAR(25) NULL,
  tarifmbStage FLOAT NULL,
  tarifnonmbStage FLOAT NULL,
  pensionStage VARCHAR(25) NULL,
  hebergementStage VARCHAR(25) NULL,
  contenuStage TEXT NULL,
  intervenant1Stage VARCHAR(25) NULL,
  intervenant2Stage VARCHAR(25) NULL,
  intervenant3Stage VARCHAR(25) NULL,
  PRIMARY KEY(ACTIVITE_idAct)
)

Un stage peut contenir une ou plusieurs dates, et une date ne se refere que par rapport qu’à un seul stage.

Coment je dois faire dans mon formulaire plizz

je te propose un exemple de code que je viens de faire. teste le et adapte le a ton problem


<!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?quot;>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
<style type="text/css">
<!--
.Style1 {font-size: 12px}
-->
</style>
</head>

<body>
<table width="30%" border="1" align="center" cellspacing="0">
  <tr>
    <td bgcolor="#CCCCCC"><span class="Style1">Definir un stage </span></td>
  </tr>
  <tr>
    <td><form action="" method="post" name="form1" class="Style1" id="form1">
      Veuillez  entrez le nombre de date:
      <input name="nb" type="text" id="nb" size="3" maxlength="3" />
      <input type="submit" name="Submit" value="Ok" />
    </form>    </td>
  </tr>
</table><br />
<?php
 if (isset($_POST['nb'])){
  $nb=$_POST['nb'];
 $i=0;

echo'<form id="form2" name="form2" method="post" action="">
 <table width="30%" border="1" align="center" cellspacing="0">
   <tr><td>Stage</td><td><input type="text" name="textfield" /></td>
    </tr>';
  for ($i=1; $i<=$nb; $i++){
  echo '	<tr> <td>date'. $i.'</td> <td><input type="text" name="date"'.$i.' /></td></tr>';
  }
  echo '</table></form>';
}
?>
</body>
</html?gt;


meci bien, jvé voir maintenant pour ajouter dans sql.

salut, j’ai donc essayé et ça marche pas pour enregistrer dans sql.
Y a 3 étapes
la 1ere : ou je demande le nombre de date;
la 2eme ou je choisis ces dates :

$nb=$_POST['nb'];
    $_SESSION['nb']=$nb;
    $i=0;
    echo'<form name="form2" method="post" action="traitement_add_date.php">
    <table width="50%" border="1" align="center" cellspacing="0"></tr>';
    echo"<tr><td></td><td>Date début</td><td>Date fin</td>";
    	for ($i=1; $i<=$nb; $i++)
    {
      echo ' <tr> <td>Date '. $i.'</td>';	
    	$jourdeb="jourdeb".$i;
    	//echo"le jour deb est ".$jourdeb."";
    	echo'<td><select name="$jourdeb">';
    	for($j=1;$j<32;$j++)
    	{
      echo "<option value='$j'>$j</option>"; 
    	}
    	echo'</select>';
    	$moisdeb="moisdeb".$i;
    	echo'<select name="$moisdeb">';
    	for ($n=1;$n<13;$n++)
    	{
      echo "<option value='$n'>$n</option>";  
    	}
    	echo'</select>';
    	$anneedeb="annee".$i;
    	echo'<select name="$anneedeb">';
    	for ($m=2005;$m<2012;$m++)
    	{
      echo "<option value='$m'>$m</option>";  
    	}
    	
    	$jourfin="jourfin".$i;
    	echo'<td><select name="$jourfin">';
    	for($j=1;$j<32;$j++)
    	{
      echo "<option value='$j'>$j</option>"; 
    	}
    	echo'</select>';
    	$moisfin="jourfin".$i;
    	echo'<select name="$moisfin">';
    	for ($n=1;$n<13;$n++)
    	{
      echo "<option value='$n'>$n</option>";  
    	}
    	echo'</select>';
    	$anneefin="anneefin".$i;
    	echo'<select name="$anneefin">';
    	for ($m=2005;$m<2012;$m++)
    	{
      echo "<option value='$m'>$m</option>";  
    	}
    }
    echo'</td> </tr>';
    }
    	echo"<tr><td colspan=\"3\"><input type='submit' onClick='return verif()' value='Envoyez'></td></tr>"; 
    

j’enregistre le nombre dans une session pour savoir combien jai de dates a traiter.

La 3eme étape qui est l’insertion dans mysql des données

for($i=1;$i<$nb+1;$i++)
{
	$jourdebut=$_POST['$jourdeb'];
	$moisdebut=$_POST['$moisdeb'];
	$anneedebut=$_POST['$anneedeb'];
	$datedebut="".$anneedebut."-".$moisdebut."-".$jourdebut."";
	echo"".$datedebut."";
	$jourfin=$_POST['$jourfin'];
	$moisfin=$_POST['$moisfin'];
	$anneefin=$_POST['$anneefin'];
	$datefin="".$anneefin."-".$moisfin."-".$jourfin."";
	echo"".$datefin."";
	
	$query="INSERT into date_stage (idDst, STAGE_ACTIVITE_idAct ,datedebutDst ,datefinDst,horaireDst )
  	VALUES ('','$idstage','$datedebut','$datefin','')  ";
	$send=mysql_query($query);
	
}

Il ne ù’enregistre dans la base que la derniere date que jai choisi. Et il me l’enregistre 3 fois. Qu’est ce qui va pas dans mon code?

merci davance de votre aide

ya plein d’erreur dans ton code. des erreurs syntaxique en plus. regarde au niveau de là ou tu recupére les variables de ton formulaire


    //cette syntaxe n'est pas correcte
      $jourdebut=$_POST['$jourdeb']; //faux
     $moisdebut=$_POST['$moisdeb']; //faux

commence par enlever le dollar devant comme ceci


     $jourdebut=$_POST['jourdeb'];//vrai
     $moisdebut=$_POST['moisdeb'];//vrai

finalement jai changé de méthode et jai fais comme ça :

 for ($i=1; $i<=$nb; $i++) 
            { 
                echo ' <tr> <td>Date '. $i.'</td>';    
              
               echo'<td><select name="jourdeb[]">'; 
               for($j=1;$j<32;$j++) 
               { 
                  echo "<option value='$j'>$j</option>"; 
               } 
               echo'</select>'; 
              
               echo'<select name="moisdeb[]">'; 
               for ($n=1;$n<13;$n++) 
               { 
                  echo "<option value='$n'>$n</option>";     
               } 
               echo'</select>'; 
               
               echo'<select name="anneedeb[]">'; 
               for ($m=2005;$m<2012;$m++) 
               { 
                  echo "<option value='$m'>$m</option>";     
               } 
                
               
               echo'<td><select name="jourfin[]">'; 
               for($j=1;$j<32;$j++) 
               { 
                  echo "<option value='$j'>$j</option>"; 
               } 
               echo'</select>'; 
              
               echo'<select name="moisfin[]">'; 
               for ($n=1;$n<13;$n++) 
               { 
                  echo "<option value='$n'>$n</option>";     
               } 
               echo'</select>'; 
               
               echo'<select name="anneefin[]">'; 
               for ($m=2005;$m<2012;$m++) 
               { 
                  echo "<option value='$m'>$m</option>";     
               } 
            } 
            echo'</td> </tr>'; 
          } 
             echo"<tr><td colspan=\"3\"><input type='submit' onClick='return verif()' value='Envoyez'></td></tr>"; 

le problème cest que jarrive pas à recuperer les valeurs sur la 3eme page.

jfai comment svp ?

puisq tu as changé de méthode, reaffiche le code de ta 3 ieme page

je teste comme ça :

for($i=1;$i<$nb+1;$i++) 
{ 
   for($j=0; $j<$nb; ++$j){ 
      echo 'le jour deb est '.$_POST['jourdeb'][$j].'<br/>'; 
      echo 'le mois deb est '.$_POST['moisdeb'][$j].'<br/>'; 
      echo 'l\'année deb est '.$_POST['anneedeb'][$j].'<br/>'; 
      echo 'le jour fin est '.$_POST['jourfin'][$j].'<br/>'; 
      echo 'le mois fin est '.$_POST['moisfin'][$j].'<br/>'; 
      echo 'l\'année fin est '.$_POST['anneefin'][$j].'<br/>'; 
   } 
}

et il me dit qu’il ne connais pas jourdeb

excuse j’etais occupé. tu dis il connais pas jourdeb mais dis moi est qu’il connait le reste des variables au moins? et dis moi comment tu passes ton formulaire (Post ou Get?)