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.
Dans mon exemple, je recois le parametre "arabesque". le parametre correspond toujours a l'item "id_tableau"
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>
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.
Et la, je n'arrive pas a recuperer les donnees attendues.
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>'; ?>
les lignes echo me generent ces infos.
Je ne comprend pas pourquoi il me renvoie ces donnees et surtout ce que je dois mettre pour que ca marche.
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
Merci d'avance pour vos conseils et votre aide
Oncle Pete
Partager