11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour l'équipe!
Je suis entrain de faire un formulaire de facturation, avec la possibilité d'ajouter des champs dynamiquement ou supprimer, pour ça tout va bien.
Mon probleme c'est de recuperer les valeurs des ses chmaps dynamique vers php Smiley confused .
Je vous remerci d'avace.
Ci-joint mon code:
<html>
<body onLoad="Create_Ligne(1)">
        <form method="post" action="test.php">
			<table id="fact-tablee" style="width:507px;margin-top:10px;" cellpadding="0" cellspacing="0">
                                        	<tr>
                                            	<th class="corn-fact-t-l"></th>
                                                <th style="width:166px;">DESIGNATION</th>
                                           	  	<th  style="width:58px;">Qt&eacute;</th>
                                                <th  style="width:82px;">P.U.</th>
                                            	<th  style="width:38px;">TVA</th>
                                                <th  style="width:60px;">PRIX HT</th>
                                            	<th  style="width:59px;">PRIX TTC</th>
                                                <th  style="width:30px;"></th>
                                                <th> </th>
                                            </tr>                                           
                                            
             </table>
	    <table>
		   <tr>
		   <th><input type="button" onClick="Create_Ligne(1)" value="Ajouter ligne" />    </th>
		<th><input type="submit" onClick="Enregistrer()" value="Enregister" /> </th>
		 </tr>
             </table>
			 			 
		</form>
   </body>
</html>


voila mon code js qui recupere les valeurs des champs créer. et c'est les valeurs qui sont ici que j'ai envie d'envoyer en php
<!--traitement de données------>
function Enregistrer(){
	
     var i=0,
      qtes,
      pus,
	  designs,
	  Qte;
	  
  //-- tant que l'objet existe
  qtes=document.getElementsByName('qte[]');
  for(i; i< qtes.length; i++)
  {
    Qte    = parseInt( qtes[i].value);
    pus   = parseFloat( document.getElementsByName('pu[]')[i].value);	
    designs=document.getElementsByName('designation[]')[i].value;
	alert(designs);
	
  }
 
}

<!-- fin -->


ici c'est juste pour vous montrer comment j'ai créer les champs dynamique du formulaire et comment il fonctionne


var Compteur = 0;
//--------------------------
function Delete_Ligne( obj_){
  var Parent;
  var Obj = obj_;
  if( Obj){
    //-- tant que pas la balise <TR>
    do{
       Obj = Obj.parentNode;
    }while( Obj.tagName != "TR")
    //-- Recup du parent
    Parent = Obj.parentNode;
    //-- Suppression de la ligne
    if( Parent){
      Parent.deleteRow( Obj.rowIndex)
    }
  }
}
//----------------------
function Create_Ligne(i){
  //-- compteur pour le FUN
 
  //-- Get objet tableau
  var O_Table = document.getElementById('fact-tablee');
  //-- Get nombre de ligne du tableau
  var NbrLigne = O_Table.rows.length;
  //-- Position d'insertion
  var Pos = NbrLigne;
  
  var ligne_a_creer= i;
  var j;
  for(j=0; j<ligne_a_creer; j++){
   Compteur++;
  //-- Insertion d'une ligne
  O_Row  = O_Table.insertRow( Pos);
  //-- Insertion des cellules
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '<div class="fact-b-l"></div>';
  
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '<div align="center"><input type="text"  name="designation[]" class="inp-design" value="designation n°' +Compteur +'"/></div><div class="separateur">&nbsp;</div>';
  
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '<div class="border" style="text-align:center;"><input type="text"  name="qte[]" class="inp-qte" onKeyUp="Calcul()"/></div><div class="separateur">&nbsp;</div>';
  
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '<div class="border" style="text-align:center;"><input type="text"  name="pu[]" class="inp-pu" onKeyUp="Calcul()"/></div><div class="separateur">&nbsp;</div>';
  
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '<div class="border" style="text-align:center;height:18px;"><input type="text" style  name="tva[]" class="totaux" class="inp-pu" onKeyUp="Calcul()"/> </div><div class="separateur">&nbsp;</div>';
  
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '<div class="border" style="text-align:center;height:18px;"><input type="text" style  name="montant[]" class="totaux" class="inp-pu" onKeyUp="Calcul()"/> &euro;</div><div class="separateur">&nbsp;</div>';
  
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '<div class="border" style="text-align:center;height:18px;"><input type="text" style  name="ttc[]" class="totaux" class="inp-pu" onKeyUp="Calcul()"/> &euro; </div><div class="separateur">&nbsp;</div>';
  
  if(NbrLigne==1){
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '<div class="border" style="text-align:center;height:18px;"> </div><div class="separateur">&nbsp;</div>';
  }
  else{
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '<div class="border" style="text-align:center;height:18px;"><input type="image" src="images/cross.png" onClick="Delete_Ligne(this)" /></div><div class="separateur">&nbsp;</div>';	  
  }
  
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '<div class="fact-b-r"></div>';

  }

}






[/i][/i][/i]
Modifié par Comodo (11 Mar 2011 - 18:31)
Je dois pas tout saisir...


foreach ($_POST['designation'] as $key => $value)
  echo 'Champ désignation : '.$key.' de valeur : '.$value;
Merci d'avoir donné suite à mon mail.
Mais mon probleme c'est plutot l'envoi que la reception.
 <form method="post" action="test.php"> 
     <table>         
        <tr> 
           <th><input type="button" onClick="Create_Ligne(1)" value="Ajouter ligne" />  </th> 
        <th><input type="submit" onClick="Enregistrer()" value="Enregister" /> </th> 
         </tr> 
             </table> 
                           
        </form> 


c'est à dire je voudrais que le bouton Enregistrer envoie les donnés de la fonction js Enregister() vers le fichier test.php

voila la fonction Enregistrer
<!--traitement de données------> 
function Enregistrer(){ 
     
     var i=0, 
      qtes, 
      pus, 
      designs, 
      Qte; 
       
  //-- tant que l'objet existe 
  qtes=document.getElementsByName('qte[]'); 
  for(i; i< qtes.length; i++) 
  { 
    Qte    = parseInt( qtes.value); 
    pus   = parseFloat( document.getElementsByName('pu[]')[i].value);     
    designs=document.getElementsByName('designation[]')[i].value; 
    alert(designs); 
     
  } 
  
} 
 
<!-- fin -->


Merci Smiley confused

[/i][/i]
Bonjour,

Je ne capte pas bien non plus, là.
A quoi sert ta fonction " enregistrer() " ?
Quand tu soumets le formulaire, les données sont normalement récupérées par ton fichier " test.php ". Pourquoi passes-tu par une fonction javascript? Traite les données du formulaire directement dans ton fichier php!

Cordialement
Oui Justement quand je soumet mon formulaire les données ne sont pas reçu par le fichier test.php.
Car les données sont sur les input qui se trouve dans la fonction Create_Ligne().
Mon probleme ce que les valeur ne sont pas transmit dans le fichier test.php
voila à nouveau le script sans la fonction enregistrer:

          
<html>
<body onLoad="Create_Ligne(1)">
        <form method="post" action="test.php">
			<table id="fact-tablee" style="width:507px;margin-top:10px;" cellpadding="0" cellspacing="0">
                                        	<tr>
                                            	<th class="corn-fact-t-l"></th>
                                                <th style="width:166px;">DESIGNATION</th>
                                           	  	<th  style="width:58px;">Qt&eacute;</th>
                                                <th  style="width:82px;">P.U.</th>
                                            	<th  style="width:38px;">TVA</th>
                                                <th  style="width:60px;">PRIX HT</th>
                                            	<th  style="width:59px;">PRIX TTC</th>
                                                <th  style="width:30px;"></th>
                                                <th> </th>
                                            </tr>
                                            
                                            
             </table>
             <script langage="javascript">	

var Compteur = 0;
//--------------------------
function Delete_Ligne( obj_){
  var Parent;
  var Obj = obj_;
  if( Obj){
    //-- tant que pas la balise <TR>
    do{
       Obj = Obj.parentNode;
    }while( Obj.tagName != "TR")
    //-- Recup du parent
    Parent = Obj.parentNode;
    //-- Suppression de la ligne
    if( Parent){
      Parent.deleteRow( Obj.rowIndex)
    }
  }
}
//----------------------
function Create_Ligne(i){
  //-- compteur pour le FUN
 
  //-- Get objet tableau
  var O_Table = document.getElementById('fact-tablee');
  //-- Get nombre de ligne du tableau
  var NbrLigne = O_Table.rows.length;
  //-- Position d'insertion
  var Pos = NbrLigne;
  
  var ligne_a_creer= i;
  var j;
  for(j=0; j<ligne_a_creer; j++){
   Compteur++;
  //-- Insertion d'une ligne
  O_Row  = O_Table.insertRow( Pos);
  //-- Insertion des cellules
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '<div class="fact-b-l"></div>';
  
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '<div align="center"><input type="text"  name="designation[]" class="inp-design" value="designation n°' +Compteur +'"/></div><div class="separateur">&nbsp;</div>';
  
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '<div class="border" style="text-align:center;"><input type="text"  name="qte[]" class="inp-qte" onKeyUp="Calcul()"/></div><div class="separateur">&nbsp;</div>';
  
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '<div class="border" style="text-align:center;"><input type="text"  name="pu[]" class="inp-pu" onKeyUp="Calcul()"/></div><div class="separateur">&nbsp;</div>';
  
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '<div class="border" style="text-align:center;height:18px;"><input type="text" style  name="tva[]" class="totaux" class="inp-pu" onKeyUp="Calcul()"/> </div><div class="separateur">&nbsp;</div>';
  
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '<div class="border" style="text-align:center;height:18px;"><input type="text" style  name="montant[]" class="totaux" class="inp-pu" onKeyUp="Calcul()"/> &euro;</div><div class="separateur">&nbsp;</div>';
  
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '<div class="border" style="text-align:center;height:18px;"><input type="text" style  name="ttc[]" class="totaux" class="inp-pu" onKeyUp="Calcul()"/> &euro; </div><div class="separateur">&nbsp;</div>';
  
  if(NbrLigne==1){
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '<div class="border" style="text-align:center;height:18px;"> </div><div class="separateur">&nbsp;</div>';
  }
  else{
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '<div class="border" style="text-align:center;height:18px;"><input type="image" src="images/cross.png" onClick="Delete_Ligne(this)" /></div><div class="separateur">&nbsp;</div>';	  
  }
  
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '<div class="fact-b-r"></div>';

  }

}
</script>
			 <table>
			    <tr>
				     <th><input type="button" onClick="Create_Ligne(1)" value="Ajouter ligne" /></th>
					 <th><input type="submit" value="Enregister" /> </th>
				</tr>
			 
			 
		</form>


</body>
</html>

Modifié par Comodo (12 Mar 2011 - 12:31)
Comodo a écrit :
Merci pour ton idée, j'ai resolu mon probleme avec ton idée.
Clt



Bonjour,

J'ai un problème identique. C'est quoi ton idée pour récupérer les valeur du formulaire avec ses champs créés dynamiquement ?

Merci