[AJAX] XHR dans une boucle
Bonjour,
je veux enregistrer les données d'un tableau dynamique dans la base de données.
donc le nombre des lignes est inconnu.
j'ai mis XHR dans une boucle for pour enregistrer les données.
le problème est que parfois aucune ligne n'est enregistrée et parfois seulement quelques lignes sont enregistrées.
voici le code :
JS :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| function PostData(ref) {
var xhr;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
else {
throw new Error("Probleme avec ce naviguateur");
}
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
if (xhr.status == 200 && xhr.status < 300) {
//document.getElementById('div1').innerHTML = xhr.responseText;
}
}
}
var i=0,
nom,
description,prix,
total, remise;
articles =document.getElementsByName('Varticle[]');
for(i; i< articles.length; i++)
{
xhr.open('POST', 'Vente.php');
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
nom = document.getElementsByName('Varticle[]')[i].value;
description = document.getElementsByName('Vdescription[]')[i].value;
prix = document.getElementsByName('Vprix[]')[i].value;
quantite = document.getElementsByName('Vquantite[]')[i].value;
remise = document.getElementsByName('Vremise[]')[i].value;
total = document.getElementsByName('Vtotal[]')[i].value;
xhr.send("nom="+nom+"&prix="+prix+"&description="+description+"&quantite="+quantite+"&remise="+remise+"&total="+total+"&ref="+ref);
}
} |
PHP:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| <?php
$conn = mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("wordpress",$conn) or die(mysql_error());
if (isset($_POST["nom"]))
{ $ref = $_POST["ref"];
$nom = $_POST["nom"];
$prix = $_POST["prix"];
$description = $_POST["description"];
$quantite = $_POST["quantite"];
$total = $_POST["total"];
$remise = $_POST["remise"];
/* </br>'; echo $prix.'</br>'; echo $description.'</br>'; echo $quantite.' </br>'; echo $remise.'</br> '; echo $total.' </br>';*/
$result = mysql_query("INSERT INTO wordpress.wp_Devis_Vente(reference,article,prix,description,remise,quantite,total) VALUES('$ref','$nom', '$prix','$description','$remise','$quantite','$total')") or die(mysql_error());
if($result){echo "</br></br> succes !";}
}
if (isset($_POST['Enregistrer']))
{
$date = $_POST["date"];
$client = $_POST["client"];
$ref = $_POST["reference"];
$remarques = $_POST["remarques"];
$sommeTotale=$_POST["sommeTotale"];
$result = mysql_query("INSERT INTO wordpress.wp_infos_commande(reference,dateC,client,remarques,somme_totale,type) VALUES('$ref','$date', '$client','$remarques','$sommeTotale','Devis De Vent')") or die(mysql_error());
if($result){
echo
"</br> succes infos commande !";
//recuperation de numero de devis
$ReqNumRf = mysql_query("SELECT num_dv FROM wp_parametres ; ");
while ($refNum = mysql_fetch_array($ReqNumRf))
{$num = $refNum[0]; }
//incrementation de numeros de devis
$num=$num+1;
$ReqIncr=mysql_query("UPDATE wordpress.`wp_parametres` SET num_dv='$num' ")or die("erreur d incrementation");
}
}
?>
html
....
<input type="submit" value="Enregistrer" name="Enregistrer" style="width:120px" onclick="PostData(leform.reference.value);" ></input>
......... |
Pourriez quelqu un m 'aider ?
merci.