Lecture fichier XML avec PHP
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:
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:
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:
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