Bonjour,

Je suis entrain de développer un application Android en utilisant Phonegap.
J'ai une page d'ajout d'un article dans une base Mysql, cette page contient un bouton permettant d'ajouter une photo sur le serveur.

Le code que j'ai développé appelle la fonction d'upload de Phonegap suite à l'évènement Submit. Cette fonction insère aussi le nom du fichier (image) dans une table Image.
Par la suite, dans le même code du submit un appel Ajax exécute le script permettant d'ajouter un article dans une table Article. Pour faire correspondre l'image "uploaded" à l'article ajouté, mon script php contient une requête qui sélectionne la dernière ligne ajoutée dans la table Image et une autre "update" pour la mettre à jour au niveau du champs article.

Mon problème est quand je fais un test depuis l'émulateur Genymotion tout se passe normalement alors que par téléphone, la requête "update" s'exécute toujours avant la requête d'ajout du nom de l'image ce qui écrase la dernière ligne du table Image et ajoute une autre avec le champ article vide.Cependant, en testant sur Genymotion tout se passe normalement. Que pourrait être le problème s'il vous plaît?
Voici le code


Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
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
$("#submit").click(function() {
	image=0;		
	uploadPhotos();
	addArticleURL= urlServeur + "addArticle.php userID="+window.localStorage.getItem('userID')+"&titre="+title+"&etat="+state+"&prix="+price+"&desc="+desc+"&categorie="+categ+"&categ_r="+categ_r+"&gouv="+gouver+"&gouv_r="+gouv_r+"&img="+image+"&callback="; 
	$.ajax({
		url: addArticleURL, 
		contentType: "application/json;charset=utf-8", 
		dataType: 'jsonp', 
		success: function(resp){
			$('#popupAddProdPage').html('<h1>'+resp.message+'</h1>');
			$('#popupAddProdPage').popup('open');
			setTimeout(function(){
				$("#popupAddProdPage").popup('close');
			}, 3000);				
		}
	}); 
	return false;
});
function uploadPhotos() {
	var imageURI1 = document.getElementById('browsedImg').getAttribute("src");
	var imageURI2 = document.getElementById('capturedImg').getAttribute("src");
	var items = [imageURI1,imageURI2];
	for(var i= 0; i < items.length; i++){
		if(items[i]){
			image=1;
			uploadPhoto(items[i]);
		}
	}
}
function uploadPhoto(imageURI) {
	var options = new FileUploadOptions();
	options.fileKey = "file";  
	var imagefilename = Number(new Date()) + ".jpg";
	options.fileName = imagefilename;    
	options.mimeType = "image/jpg";
	var params = new Object();
	params.value1 = "test";
	params.value2 = "param";
	options.params = params;
	options.chunkedMode = false;
	var url = urlServeur + "upload.php";
	var ft = new FileTransfer();
	ft.upload(imageURI, url, win, fail, options);
}

coté serveur :
fichier upload.php

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
print_r($_FILES);
  $new_image_name = 'image_' . date('d-m-Y-H-i-s') . '_' . uniqid() . '.jpg';
  $moveResult = move_uploaded_file($_FILES["file"]["tmp_name"], "../images_articles/timbre/".$new_image_name);
 
  if ($moveResult == true) {
        $query = "INSERT INTO smsimage (Visuel) VALUES ('".$new_image_name."');";
        $result = mysqli_query($link,$query);
  }
fichier addArticle.php

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$query1 = "INSERT INTO smsarticles (id_inscrit, categorie, famille, gouvernorat, departement, prix, etat, date_insert, titre, description, source_depot) VALUES ($userID, $category, $category_r, $gouvernorat, $gouvernorat_r, $price, $etat, NOW(), '$title', '$description', 'mob');" ;
$res1 = mysqli_query($link,$query1);
if($res1){
	  $msg = 'Félicitations! votre produit a été ajouté avec succès.';
	  if($image==1){	 
	        $query2 = "UPDATE smsimage SET id_article = LAST_INSERT_ID(), id_inscrit='".$userID."' ORDER BY Num DESC LIMIT 1;";			
	        $res2 = mysqli_query($link,$query2);				 
		if ($res2) 
	            $msg = 'Félicitations! votre produit a été ajouté avec succès.';
		else 
		    $msg = "Une erreur s'est produite.";    		
        }	
   }
   else {
	   $msg = "Une erreur s'est produite.";
     }
Merci pour votre aide.