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

Résolu
gahmed Messages postés 79 Statut Membre -  
gahmed Messages postés 79 Statut Membre -
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. Alain_42 Messages postés 5413 Statut Membre 904
     
    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
  2. jojo150393 Messages postés 365 Statut Membre 23
     
    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
  3. gahmed Messages postés 79 Statut Membre 3
     
    Merci beaucoup Alain_42 mon problème est résolu
    0