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 -
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:
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
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
-
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 />"; } } } ?> -
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. -