recuperation des champs dynamique js en php

Répondre
farouk
le 11/03/2011 à 17:41
farouk
Bonjour l'équipe!
J'ai formulaire qui crée les champs input dynamiquement en js et je voudrais recuperé ses champs en php.
Ci-joint mon code:
<html>
<body onload="Create_Ligne(1)">
<form method="post">
<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>


</form>

<script langage="javascript">

//--traitement de données je doit recuperé les variable à ceniveau pour envoyer en php------
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 -->


//----Supprimer un ligne-----//
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)
}
}
}
//---------Creér un ligne-------------//
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>
</body>
</html>
devWeb
LupusMic
le 12/03/2011 à 07:30
LupusMic
Et quelle est la question ?
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
farouk
le 12/03/2011 à 09:46
farouk
Au fait mon probleme c'est comment envoyé les valeurs des champs créer dynamiquement(toutes les lignes) vers un fichier php. Car mes champs ne sont pas dans un formulaire ordinaire mais plutot créer par la fonction js Create_Ligne().
Merci
devWeb
LupusMic
le 12/03/2011 à 13:02
LupusMic
C'est un formulaire ordinaire.

Par contre, j'ai l'impression que tu ne comprends pas quel est ton problème. En effet, le problème n'est pas l'envoie des données saisies dans le formulaire dynamique, mais plutôt sa récupération.

Regarde le contenu de $_POST pour voir ce que le navigateur envoie.
<?php var_dump($_POST) ;
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
farouk
le 12/03/2011 à 13:13
farouk
Oui effectivement LupusMic, j'avais mal compris où se trouait le probleme. C'est justement à la recuperation coté php. Je viens de me rendre compte que les données sont reçues, le probleme c'est plutot comment les recuperées pour mettre dans la base de donnée
Merci
devWeb
LupusMic
le 13/03/2011 à 07:33
LupusMic
C'est la partie la plus difficile ;) En fait, ici PHP te servira à décider ce que l'application doit faire des données reçues. Ces instructions dépendent de ce que tu veux faire exactement. En gros, le principe est :
[list]
[*] extraire les données transmises par le navigateur
[*] décider si les données reçues sont attendues
[*] traiter les données
[*] afficher le résultat
[/list]

Le code PHP dépendra entièrement de ce que tu veux faire, et quels sacrifices tu es prêt à faire.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
farouk
le 13/03/2011 à 07:58
farouk
Bon ce que je veux faire c'est extraire les données du tableau dynamique pour les inserés sur une table mysql.
Merci
devWeb
LupusMic
le 15/03/2011 à 12:18
LupusMic
En gros, tu peux faire quelque chose dans ce goût là :
<?php

$con = new mysqli(/* voir http://www.php.net/mysqli */) ;

// En assumant que la variable HTTP soit record[]
$datas = $_POST['record'] ;

// Protection anti-injection
$datas = array_map(array($con, 'real_escape_string'), $datas) ;

function quote($s) { return "'$s'" ; }
$datas = array_map('quote', $datas) ;

$sql = 'insert into my_table (record) values ' . implode($datas, ', ') ;

$con->query($sql) ;


J'assume que les données du formulaire peuvent être introduite sans logique métier
additionnelle, et donc injecte directement les données en base

Je ne fais aucun contrôle d'aucune sorte. Je te conseille de lire la documentation de chaque fonction que j'ai utilisé.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours