IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Lecture fichier XML avec PHP [PHP 4]


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Avatar de Oncle_Pete
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 246
    Points : 175
    Points
    175
    Par défaut 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 : 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
    Experience is the best teacher !!

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    c'est pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ($row[0]=$param)
    mais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ($row[0]==$param)
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  3. #3
    Membre habitué
    Avatar de Oncle_Pete
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 246
    Points : 175
    Points
    175
    Par défaut
    Merci Marcha


    Effectivement ca affiche biern ce que j'attend (je suis vert d'imaginer qu'il manquait un signe egal).

    Pour ma culture, pourquoi falliat-il un double signe = ?

    Merci encore

    Oncle_Pete
    Experience is the best teacher !!

  4. #4
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    = c'est l'affectation
    == la comparaison de valeur
    === la comparaison de valeur et de type
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DOM] création de fichier XML avec PHP
    Par cortex007 dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 09/12/2007, 11h31
  2. Probleme Lecture Fichier RSS avec PHP 4
    Par sirbaldur dans le forum Langage
    Réponses: 1
    Dernier message: 18/07/2006, 09h43
  3. [DOM XML] Insertion données dans fichier XML avec PHP pour Flash ?
    Par ExSter dans le forum Bibliothèques et frameworks
    Réponses: 17
    Dernier message: 10/05/2006, 11h16
  4. [XML] [EXPAT] Parser un fichier xml avec php
    Par Dargos dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 05/04/2006, 12h25
  5. [XML] lire un fichier xml avec php
    Par java_fun dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 31/03/2006, 12h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo