Bonjour,

Je bloque sur un probleme a priori tout simple de lecture de fichier xml depuis une page php.
Je m'explique : ma page php recois un parametre lequel va me servir a ne garder pour affichage que les donnees lues correspondantes a mon parametre.

source de l'xml (il va etre amene a contenir un assez grand nombre de donnees.
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
<?xml version="1.0" encoding="UTF-8"?>
<Donnees>
	<tableau> 
		<id_tableau>totem3</id_tableau>
		<nom_tableau>Totem 3</nom_tableau>
		<dim_tableau>100 x 30</dim_tableau> 
 		<file_tableau>http://127.0.0.1/essai/images/tableau-011.jpg</file_tableau>
		<width_tableau>120</width_tableau>
		<height_tableau>400</height_tableau>
	</tableau>
	<tableau> 
		<id_tableau>arabesque</id_tableau>
		<nom_tableau>Arabesque</nom_tableau>
		<dim_tableau>120 x 40</dim_tableau> 
 		<file_tableau>http://127.0.0.1/essai/images/tableau-008.jpg</file_tableau>
		<width_tableau>80</width_tableau>
		<height_tableau>240</height_tableau>
	</tableau>
</Donnees>
Dans mon exemple, je recois le parametre "arabesque". le parametre correspond toujours a l'item "id_tableau"
Voici mon code (attention debutant). La fonction function lit_xml est un exemple vu sur le net, mais le
format du fichier xml donne dans l'exemple correspond au miens.
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
 
<?php
$param = $_GET["name"];
echo '$param = '.$param .' <br>';
 
$id_tableau='';
$nom_tableau='';
$dim_tableau='';
$file_tableau='';
$width_tableau='';
$height_tableau='';
 
function lit_xml($fichier,$item,$champs) {
   // on lit le fichier
   if($chaine = @implode("",@file($fichier))) {
      // on explode sur <item>
      // Dans l'exemple il s'agit de 'profil'
      $tmp = preg_split("/<\/?".$item.">/",$chaine);
      // pour chaque <item> donc tous les profils
      for($i=1;$i<sizeof($tmp)-1;$i+=2)
         // on lit les champs demandés <champ> donc il s'agit de 'id' et 'prenom'
         foreach($champs as $champ) {
            $tmp2 = preg_split("/<\/?".$champ.">/",$tmp[$i]);	
			// on ajoute l'élément au tableau
            $tmp3[$i-1][] = @$tmp2[1];			
         }
      // et on retourne le tableau dans la fonction
      return $tmp3;
   }
}
 
$xml = lit_xml("xml/tableaux.xml","tableau",array("id_tableau",
					"nom_tableau",
					"dim_tableau",
					"file_tableau",
					"width_tableau",
					"height_tableau"));
 
 
 
$i=0;
foreach($xml as $row) { 
	if ($row[0]=$param) {
		$id_tableau=$row[0];
		$nom_tableau=$row[1];
		$dim_tableau=$row[2];
		$file_tableau=$row[3];
		$width_tableau=$row[4];
		$height_tableau=$row[5];
		break;
	} 
} 
 
echo '$id_tableau =     '.$id_tableau.    ' <br>';
echo '$nom_tableau =    '.$nom_tableau.   ' <br>'; 
echo '$dim_tableau =    '.$dim_tableau.   ' <br>'; 
echo '$file_tableau =   '.$file_tableau.  ' <br>'; 
echo '$width_tableau =  '.$width_tableau. ' <br>'; 
echo '$height_tableau = '.$height_tableau.' <br>'; 
 
?>
Et la, je n'arrive pas a recuperer les donnees attendues.
les lignes echo me generent ces infos.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
$param = arabesque 
$id_tableau = arabesque 
$nom_tableau = Totem 3 
$dim_tableau = 100 x 30 
$file_tableau = http://127.0.0.1/essai/images/tableau-011.jpg
$width_tableau = 120 
$height_tableau = 400
Je ne comprend pas pourquoi il me renvoie ces donnees et surtout ce que je dois mettre pour que ca marche.
Merci d'avance pour vos conseils et votre aide

Oncle Pete