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

XML/XSL et SOAP Discussion :

probleme boucle foreach simplexml


Sujet :

XML/XSL et SOAP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Points : 5
    Points
    5
    Par défaut probleme boucle foreach simplexml
    bonjour,

    je dois à partir d'un fichier xml récuperer les informations passées entre les balises et les mettre dans une requete sql.
    Cependant lorsque je fais mes boucles imbriquées la boucle qui est à l'intérieure de la premiere n'avance pas dans le fichier xml (ce sont toujours les premiers resultat qui sont renvoyés).

    voici le code source xml:
    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
     
    <?xml version="1.0" encoding="iso-8859-1"?>	
    <creatable>
    	<table>
    		<nomtable>maTable</nomtable>
    		<field>
    			<nomchamp>id</nomchamp>
    			<type>int</type>
    			<primary>1</primary>
    			<null>1</null>
    			<auto_increment>1</auto_increment>
    		</field>
    		<field>
    			<nomchamp>nom</nomchamp>
    			<type>char(20)</type>
    			<primary>0</primary>
    			<null>0</null>
    			<auto_increment>0</auto_increment>
    		</field>
    		<field>
    			<nomchamp>description</nomchamp>
    			<type>varchar(200)</type>
    			<primary>0</primary>
    			<null>1</null>
    			<auto_increment>0</auto_increment>
    		</field>
    	</table>
    	<table>
    		<nomtable>maTable2</nomtable>
    		<field>
    			<nomchamp>idnum2</nomchamp>
    			<type>int</type>
    			<primary>1</primary>
    			<null>0</null>
    			<auto_increment>1</auto_increment>
    		</field>	
    	</table>
    </creatable>
    Voici le code php:

    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
    <?php
    $xml = simplexml_load_file('./xml/ok.xml');
    $tables = ($xml->table);
    $fields = ($xml->table->field);
    foreach ($tables as $table) {
    $count=0;
    echo "create table " .$table->nomtable. " (<br/>";
    	foreach ($fields as $field) {
    		if ($count!=0) {echo ",<br/>";}
    		echo $field->nomchamp;
    		echo " ".$field->type;
    		if ($field->primary==1) {echo " PRIMARY KEY";}
    		if ($field->null==0) {echo " NOT NULL";}
    		if ($field->auto_increment==1) {echo " auto_increment";}
    		$count=$count+1;
     
    	}
    echo ");<br/><br/>";
    }
    ?>
    Résultat ça créé 2 table comme celles là:
    maTable
    id
    nom
    description

    maTable2
    id
    nom
    description

    au lieu de :

    maTable
    id
    nom
    description

    maTable2
    idnum2


    Merci :-)

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    voici le code permettant de faire cela!

    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
     
    $i=0;
    while ($xml->table[$i]) {
    echo $xml->table[$i]->nomtable. "<br/>";
    $j=0;
    while ($xml->table[$i]->field[$j]) {
    echo $xml->table[$i]->field[$j]->nomchamp."<br/>";
    echo $xml->table[$i]->field[$j]->type."<br/>";
    echo $xml->table[$i]->field[$j]->primary."<br/>";
    echo $xml->table[$i]->field[$j]->null."<br/>";
    echo $xml->table[$i]->field[$j]->auto-increment."<br/>";
    $j++;
    }
    $i++;
    }
    voilà j'ai trouvé l'auteur du code sur ce post:

    http://www.developpez.net/forums/d68...oeuds-foreach/

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

Discussions similaires

  1. Probleme Boucle foreach
    Par kataboy dans le forum Langage
    Réponses: 4
    Dernier message: 26/03/2012, 09h45
  2. probleme de boucle (foreach)
    Par papouuu86 dans le forum Langage
    Réponses: 15
    Dernier message: 21/10/2009, 15h46
  3. [C# 1.1]Boucles foreach imbriquees
    Par Nip dans le forum Windows Forms
    Réponses: 12
    Dernier message: 13/04/2006, 16h35
  4. [Tableaux] la boucle foreach
    Par jeanfrancois dans le forum Langage
    Réponses: 7
    Dernier message: 09/03/2006, 17h29
  5. [LG]Problême Boucle
    Par pierrOPSG dans le forum Langage
    Réponses: 1
    Dernier message: 29/04/2004, 16h48

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