Récupération des variables avec méthode post

Résolu
Bonjour tout le monde,
j'ai un problème pour récupérer les données que j'ai saisi sur un tableau. Voici mon script en HTML:
<html>
<script language="javascript1.5">
function ajouterLigne()
{
	var tableau = document.getElementById("tableau");

	var ligne = tableau.insertRow(-1);

	var colonne1 = ligne.insertCell(0);
	colonne1.innerHTML += document.getElementById("lib").value;
	
	var colonne2 = ligne.insertCell(1);
	colonne2.innerHTML += document.getElementById("pu").value;
	
	var colonne3 = ligne.insertCell(2);
	colonne3.innerHTML += document.getElementById("qte").value;

	var colonne4 = ligne.insertCell(3);
	colonne4.innerHTML += colonne2.innerHTML * colonne3.innerHTML ;

	
}
</script>
<form method="post" action="save.php">
	<input type="text" name="lib" id="lib"  />
	<input type="text" name="pu" id="pu" />
	<input type="text" name="qte" id="qte" />

	<input type="button" onclick="ajouterLigne();" value="Enregistrer"/>

<table id="tableau" border="1">
	<thead>
		<tr>
			<th>Libelle</th>
			<th>Prix Unitaire</th>
			<th>Quantité</th>
			<th>Prix Total</th>
		</tr>
	</thead>
	<tbody>
		
	</tbody>
</table>
</form>
</html>


Le problème est que je ne sais pas comment faire pour récupérer les valeurs du tableau avec la méthode POST sur le fichier save.php

Merci d'avance

3 réponses

  1. Merci beaucoup Alain_42 mon problème est résolu
    0
    1. voir commentaires et exemple:
      <html>
      <script language="javascript1.5">
      function ajouterLigne()
      {
      	var tableau = document.getElementById("tableau");
      
      	var ligne = tableau.insertRow(-1);
      
      	var colonne1 = ligne.insertCell(0);
      	colonne1.innerHTML += document.getElementById("lib").value; //la je ne vois pas ccomment ça peut rajouter une ligne ??, il faut rajouter un inpuit
      	
      	var colonne2 = ligne.insertCell(1);
      	colonne2.innerHTML += document.getElementById("pu").value;
      	
      	var colonne3 = ligne.insertCell(2);
      	colonne3.innerHTML += document.getElementById("qte").value;
      
      	var colonne4 = ligne.insertCell(3);
      	colonne4.innerHTML += colonne2.innerHTML * colonne3.innerHTML ;
      
      	
      }
      </script>
      <form method="post" action="save.php">
      	<input type="text" name="lib" id="lib"  />
      	<input type="text" name="pu" id="pu" />
      	<input type="text" name="qte" id="qte" />
      	<!-- plutot bizarre ce bouton il affiche Enregitrer alors que sa fonction est d'ajouter une ligne ?? -->
      	<input type="button" onclick="ajouterLigne();" value="Enregistrer"/>
      
      <table id="tableau" border="1">
      	<thead>
      		<tr>
      			<th>Libelle</th>
      			<th>Prix Unitaire</th>
      			<th>Quantité</th>
      			<th>Prix Total</th>
      		</tr>
      	</thead>
      	<tbody>
      		
      	</tbody>
      </table>
      </form>
      </html>
      
      VOILA une solution
      
      <html>
      <head>
      <title>Insertion de lignes en JS</title>
      <?php
      /
      ?>
      <script type="text/javascript">
      <!--
      //init variables JS globales
      
      //i elle conserve sa valeur entre chaque appel de la fonction
      //c a d après le premier appel elle va passer à 1 etc...
      i=0;
      
      function create_champ(){
      	//on increment la variable globale i, numero de produit
      	i++;	
      	// en JS on peut atteindre les elements de la page HTML par document.getElementById
      	// creation de l'objet tableau avec lequeml on va travailler
          var obj_tableau=document.getElementById("tableau_produits"); 
      	//lecture des lignes du tableau actuel, JS le met dans un array
      	var arrayLignes = obj_tableau.rows;
      	//pour avoir le nombre de lignes, avec  .length on a la taille de l'array
      	var nbr_de_lignes=arrayLignes.length;
      	//on insere une nouvelle ligne de tableau juste avant celle contenant le bouton
      	var nouvelleLigne = obj_tableau.insertRow(nbr_de_lignes-1);
      	//ensuite on remplit chacune des cellules <td></td> du tableau avec les input
      	var colonne1=nouvelleLigne.insertCell(0);
      	colonne1.innerHTML='<input type="text" name="lib_produit['+i+']" value="" />';;	
      	var colonne2=nouvelleLigne.insertCell(1);
      	colonne2.innerHTML='<input type="text" name="prix_unit_produit['+i+']" value="" />';
      	var colonne3=nouvelleLigne.insertCell(2);
      	colonne3.innerHTML='<input type="text" name="qte_produit['+i+']" value="" />';
      	var colonne4=nouvelleLigne.insertCell(3);
      	colonne4.innerHTML='<input type="text" name="prix_total_produit['+i+']" value="" />';
      	
      	//tu peux rajouter des colonnes, modifier le name, mais garde sa forme name="lib_produit['+i+']"
      	//ainsi tu pourra facilement récuper par $_POST['lib_produit'] qui est un array, donc boucler pour insertion dans BDD
      }
      -->
      </script>
      </head>
      <body onload="javascript:create_champ();">
      <!-- au chargement de la page on ajoute la premiere ligne produit -->
      <form name="form_ajaout_cde" method="post" action="save.php" >
      <table width="800" id="tableau_produits" >
          <tr>
              <th>Libelle</th>
      		<th>Prix Unitaire</th>
      		<th>Quantité</th>
      		<th>Prix Total</th>
              
          </tr>
          <tr>
              <td colspan="4">
      			<input name="button" type="button" class="input2" onClick="javascript:create_champ()" value="Ajouter une ligne produit">
      		</td>
          </tr>
      	<tr>
              <td colspan="4">
      			<input name="enregistrer" type="submit" class="input2" value="Enregistrer">
      		</td>
          </tr>
      </table>
      
      </form>
      </body>
      </html>
      
      et le fichier save.php
      
      <?php
      if(isset($_POST['enregistrer'])){
      	//on recupere les valeurs postées, les produits sont dans un array ex: $_POST['lib_produit'] est un array parce qu'on a mis dans les input un name de la forme lib_produit[i]
      	//pour visualiser cela: (tu enlèves ça ensuite bien sur)
      	echo '<pre>';
      	print_r($_POST);
      	echo '</pre>';
      	$nb_produits=sizeof($_POST['lib_produit']);
      	if( $nb_produits>0){
      		for($i=1; $i <= $nb_produits; $i++){
      			//par exemple avec un echo 
      			echo "Produit ".$i." Lib: ".$_POST['lib_produit'][$i]." px unit: ".$_POST['prix_unit_produit'][$i]." qte: ".$_POST['qte_produit'][$i]." prx total: ".$_POST['prix_total_produit'][$i]."<br />";
      			
      		}
      	}
      }
      ?>
      
      1
      1. Tous ce qui est envoyé par post est contenu dans la variable système $_POST.
        Fait un petit print_r($_POST) pour voir ce que contient ce tableau.
        0