Salut tout le monde !
Une question sans doute un peu triviale pour certains mais qui me laisse assez perplexe.
J'expose la situation. J'ai un fichier XML que j'utilise via simplexml et qui ressemble à :Du coté du PHP, je cherche à obtenir la valeur du champ "name" de l'objet dont le numéro est passé en argument au script via l'adresse (donc en get) de cette façon :
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<?xml version="1.0" encoding="iso-8859-1"?> <liste> <objet> <name>Objet 1</name> <file>test_objet1.txt</file> </objet> <objet> <name>Objet 2</name> <file>test_objet2.txt</file> </objet> <objet> <name>Objet 3</name> <file>test_objet3.txt</file> </objet> </liste>
Mais ça ne fonctionne pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $xml->objet[$_GET['num']]->name
Je suis assez étonné, puisque avec une valeur numérique, ça passe.
J'ai donc tenté ça :
Et là il y a un comportement normal.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 $pouet = array (1,2,3,4); $acces = 2; echo "Avec acces : ".$pouet[$acces]; // Affiche 3 echo "Avec GET : ".$pouet[$_GET['num']]; // Affiche 3 également // Avec come argument adresse : ?num=2
Du côté simplexml j'ai fait :
Qui me donne mon objet $xml suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part $xml = simplexml_load_file("objets.xml");
Est-ce que le fait que $xml soit un objet gênerait ?
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 echo var_dump($xml); object(SimpleXMLElement)#1 (1) { ["objet"]=> array(3) { [0]=> object(SimpleXMLElement)#4 (2) { ["name"]=> string(7) "Objet 1" ["file"]=> string(15) "test_objet1.txt" } [1]=> object(SimpleXMLElement)#3 (2) { ["name"]=> string(7) "Objet 2" ["file"]=> string(15) "test_objet2.txt" } [2]=> object(SimpleXMLElement)#2 (2) { ["name"]=> string(7) "Objet 3" ["file"]=> string(15) "test_objet3.txt" } } }
Bref help please , je commence à manquer d'imagination pour régler ça.
Partager