Bonjour,

Je recherche de l'aide concernant une insertion en php d'un fichier xml avec des sous noeuds identique.
Le fichier xml est envoyé automatiquement tous les jours sur un ftp.

Code fichier immo.xml :

Code xml : 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
<?xml version="1.0" encoding="iso-8859-15" standalone="yes"?> 
<biens> 
<bien id="0"> 
<reference>1234</reference> 
<code_agence>1</code_agence> 
<num_mandat>m1</num_mandat> 
<nom_agence>xxx</nom_agence> 
<code_postal>00000</code_postal> 
<ville>XXXX</ville> 
<type_bien>maison</type_bien> 
<prix>72000</prix> 
<images> 
<image>http://xxx.com/image/1234_1_1_M.jpg</image> 
<image>http://xxx.com/image/1234_1_2_M.jpg</image> 
<image>http://xxx.com/image/1234_1_3_M.jpg</image> 
<image>http://xxx.com/image/1234_1_4_M.jpg</image> 
<image>http://xxx.com/image/1234_1_5_M.jpg</image> 
</images> 
</bien> 
<bien id="1"> 
<reference>5678</reference> 
<code_agence>1</code_agence> 
<num_mandat>m2</num_mandat> 
<nom_agence>xxx</nom_agence> 
<code_postal>00000</code_postal> 
<ville>XXXX</ville> 
<type_bien>appartement</type_bien> 
<prix>52000</prix> 
<images> 
<image>http://xxx.com/image/5678_1_1_M.jpg</image> 
<image>http://xxx.com/image/5678_1_2_M.jpg</image> 
<image>http://xxx.com/image/5678_1_3_M.jpg</image> 
</images> 
</bien> 
</biens>

J'arrive à insérer tous les champs dans ma base de données sauf les images. C'est que la 1ère image qui est insérée. Mon problème se situe donc sur l'insertion des images.

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
 
Code insert.php : 
 
<?php 
function apo($s1) 
{ 
$s1 = trim($s1); // suppr les espaces 
$s1 = trim($s1, "\xA0" ); // suppr les nbsp 
$s1 = stripslashes($s1); // suppr les slashs avant les apostrophes 
$s1 = str_replace("'", "''", $s1); // remplace les guillemets 
 
// supprime les caractères non imprimables 
$s2 = ""; 
for ($i = 0; $i < strlen($s1); $i++) { 
$c = substr($s1, $i, 1); 
if (ord($c) >= 32) 
$s2 .= $c; 
} 
return($s2); 
} 
 
// Récupération du fichier 
$recup = simplexml_load_file("http://www.xxx.com/dossier/immo.xml"); 
 
// On lance la fonction 
frecur($recup); 
 
/** 
Fonction frecur 
*/ 
function frecur($racine, $niveau = 0) { 
// Pour chaque item 
foreach($racine as $nom=>$texte) { 
// Pour le noeud enfant 
if(trim($texte) == "") { 
for($i=1;$i<=$niveau;$i++) { echo " "; } 
// on affiche le nom 
echo "La balise <strong>".$nom."</strong>"; 
// on récupere les enfants 
$enfants = $texte->children(); 
// on récupere les attributs s'ils sont présents 
$str = ""; 
$attributs = $texte->attributes(); 
 
if(trim($attributs) != "") { 
$str = "("; 
foreach($attributs as $index=>$contenu) { 
$str .= "[<strong>".$index."</strong>] <em>".$contenu."</em>, "; 
} 
$str = substr($str, 0, -2).")"; // Pour la mise en forme 
} 
echo $str." 
"; 
 
// comme on a un enfant, on réappelle la fonction (le niveau sert juste à la mise en forme) 
frecur($enfants, $niveau + 0); 
 
$bien=$texte; 
} else { 
// si on n'a pas d'enfant, on affiche ce qu'il y a dedans 
for($i=1;$i<=$niveau;$i++) { echo " ";} 
echo "La balise <strong>".$nom."</strong> contient <em>".$texte."<br />\n</em> 
"; 
} 
mysql_query("INSERT INTO table SET BienReference='".apo($bien->reference)."' ,BienAgence='".apo($bien->code_agence)."' ,BienMandat='".apo($bien->num_mandat)."' ,AgenceNom='".apo($bien->nom_agence)."' ,BienCodePostal='".apo($bien->code_postal)."' ,BienVille='".apo($bien->ville)."' ,BienType='".apo($bien->type_bien)."' ,BienPrix='".apo($bien->prix)."' ,BienImages1='".apo($elem->images->image)."' ,BienImages2='".apo($elem->images->image)."' ,BienImages3='".apo($enfants->images->image)."' ,BienImages4='".apo($enfants->images->image)."' ,BienImages5='".apo($enfants->images->image)."'") or die("Erreur MySQL : ".mysql_error()); 
} 
} 
?>

Merci pour votre aide.