Bonjour,

J'aimerai savoir s'il est possible de remplacer ma boucle foreach() par une boucle for() pour le traitement des informations provenant d'un tableau créé avec des données venant d'un fichier XML.

A l'heure actuelle, j'ai une boucle foreach dans laquelle je fais deux insertions dans une base de donnée et le redimensionnement d'images.

Le traitement du fichier XML prend donc pas mal de temps et je voudrais trouver un moyen de savoir si tout c'est bien passé à chaque boucle.

Donc je pense faire un test en remplaçant ma boucle foreach() avec une boucle for() et tester le nombre de boucles en fonction du nombre total d'enregistrements présents dans le tableau.

Est-ce possible ?

Voici mon code (la boucle concernée est en gras et rouge) :
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
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
//---TRAITEMENT DU FICHIER XML---//
$xml_path = "monfichier.xml";
if (!$dom = domxml_open_file($xml_path,DOMXML_LOAD_DONT_KEEP_BLANKS)) {
	//the above requires absolube path
	exit("Could not access the XML source.");
}
$root = $dom->document_element(); //obtain the root
$array_entry = $root->get_elements_by_tagname("product"); //gets all <entry> DomElems
print_r($array_entry);

$i=0;
foreach ($array_entry as $entry_dom_elem) {   
	
	$childnodes = $entry_dom_elem->child_nodes();
	$childatr = $entry_dom_elem->get_attribute('place');
	//echo 'Place :'.$childatr.'<br>';
	
	$tab = array();
	foreach ($childnodes as $child) { //cycle thru <word>, <meaning>, <example>
	   //echo "node name: ".$child->tagname()."; contains: " . $child->get_content()."<br>";
			array_push($tab,$child->get_content());	
	}
	//on regarde si il existe déjà un produit dans la base.
	$sel_nber = "SELECT * FROM produits WHERE id_produit LIKE('$tab[0]') AND product_place = $childatr";
	//echo $sel_nber.' -> ';
	$res_sel = mysql_query($sel_nber,$link);
	$rows = mysql_num_rows($res_sel);
	if($rows>0){
		//echo $rows.'<br>';
	}
	if($rows==0){	
		$req = "INSERT INTO produits (id_produit,product_place) VALUES ('$tab[0]','$childatr')";
		$res = mysql_query($req,$link) or die(mysql_error());
		//echo $req.'<br>';
		
		//On récupère les images
		$url = $tab[7]; // L'url du fichier
		$id_product = $tab[0];
		//echo $id_product;
		$path = 'images/netude/'; // Le chemin de sauvegarde
		$name = array_pop(explode('/',$url)); // On recup le nom du fichier
		copy($url,$path.'/'.$name); // On copie le fichier
		
		$image = "images/netude/".$name."";
		//echo $image.'<br>';
		$ext_fichier = strrchr($image,'.');
		//echo $ext_fichier.'<br>';
		
		//------------------------------------------//
		//-------SI LE FICHIER EST UNE IMAGE--------//
		//------------------------------------------//
		if($ext_fichier == '.jpg' || $ext_fichier == '.jpeg' || $ext_fichier == '.JPG' || $ext_fichier == '.gif' || $ext_fichier == '.png'){
			
			//echo 'Image<br>';
			
			$date = date("YmdHis");
			//echo $date.'<br>';
			
			$taille = filesize('images/netude/'.$name.'');
			//echo $taille.'<br>';
			
			$type = getimagesize('images/netude/'.$name.'');
			//print_r($type).'<br>';
			$type = $type['mime'];
			//echo $type;
			
			if(($type == "image/jpeg") || ($type == "image/pjpeg"))
			{
				$format = 'jpeg';
				$type = '.jpg';
			}
			elseif($type == "image/gif")
			{
				$format = 'gif';
				$type = '.gif';
			}
			elseif($type == "image/x-png")
			{
				$format = 'png';
				$type = '.png';
			}
			
			//echo $format.'<br>';
			//echo $type.'<br>';
				
			/* DEFINITION VARIABLES */
			$dossier = "images/netude/";
			$f = $dossier.$date."_original-image.".$format;
			
			if(!isset($format))
			{
				$erreur_image = "<tr><td height=\"20\" bgcolor=\"#FFFFFF\" class=\"texte_erreur\">Le fichier que vous avez téléchargé n'est pas reconnu. Vous devez fournir un visuel (photo ou image) au format GIF, JPEG ou PNG. Veuillez recommencer svp !</td></tr>";
			}
			elseif($taille>2097152)
			{
				$erreur_image = "<tr><td height=\"20\" bgcolor=\"#FFFFFF\" class=\"texte_erreur\">Le fichier que vous avez téléchargé est trop lourd. Veuillez recommencer svp !</td></tr>";
			}
			
			if(!isset($erreur_image)){
				
				/* UPLOAD DU FICHIER */
				copy($image, $f);
				
				$image_name = $date."_image_".$id_product.".".$format;
							
				$requete ="UPDATE produits SET image='$image_name' WHERE id_produit = '$tab[0]'";
				//echo '<br>'.$requete.'<br>';
				$result = mysql_query($requete);
				//echo $req_A;
				
				unlink($image);
				
			}	
		}
		/* GENERATION DES FICHIERS */
		$f1 = $dossier."b".$date_."_image_".$id_product.".".$format;
		$f2 = $dossier."m".$date_."_image_".$id_product.".".$format;
		$f3 = $dossier."s".$date_."_image_".$id_product.".".$format;
		
		if(file_exists($f))
		{
			redimage($f,$f1,800,605,$format);
			redimage($f,$f2,400,305,$format);
			redimage($f,$f3,100,75,$format);
			unlink($f);
		}
					
	}
	//print_r($tab);
	echo 'Enregistrement n°'.$i.' effectué<br>';
$i++;
}