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 :

Génération d'un fichier xml


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 318
    Points : 81
    Points
    81
    Par défaut Génération d'un fichier xml
    Bonjour à tous,

    je veux commencer par un exemple simple afin de savoir comment ça marche pour générer un fichier xml,

    Voilà j'ai 2 champs nom_user et prenom_user je veux remplir ces deux champs et quand je clique sur valider, je veux qu'un fichier xml soit généré.

    Merci bcp d'avance

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par maserati Voir le message
    Bonjour à tous,

    je veux commencer par un exemple simple afin de savoir comment ça marche pour générer un fichier xml,

    Voilà j'ai 2 champs nom_user et prenom_user je veux remplir ces deux champs et quand je clique sur valider, je veux qu'un fichier xml soit généré.

    Merci bcp d'avance
    et un xml de quelle forme ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 318
    Points : 81
    Points
    81
    Par défaut
    le plus simple possible

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 406
    Points : 380
    Points
    380
    Par défaut
    Pour faire simple alors:

    considérons que t'as le formulaire suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form action="generer_xml.php" method='post'>
    Nom: <input type='text' name='nom_user' />
    Prénom: <input type='text' name='prenom_user' />
    <input type='submit' />
    </form>
    Ensuite, du côté du fichier generer_xml.php, tu récupères tes données que tu exportes à la volée en XML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php 
    header("Content-type: text/xml");
    echo ('<result>');
    echo ('<user');
    echo ('<nom_user>'. $_POST['nom_user']. '</nom_user>');
    echo ('<nom_user>'. $_POST['prenom_user']. '</prenom_user>');
    echo ('</user>');
    echo ('</result>');
    ?>
    On va dire que c'est simpliste.
    L'idéal, c'est d'utiliser SimpleXML.

  5. #5
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Le fichier generer_xml.php pourrait ressemble à

    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
     
    //création d'un document XML
    $documentXML = new DOMDocument();
    $documentXML->formatOutput = true; 
     
    //création de l'élément racine
    $elementRacine = $documentXML->createElement( 'list' );
     
    //création de l'élément nom et prenom
    $nomElement = $doc->createElement( 'nom', $_POST['nom_user'] );
    $prenomElement = $doc->createElement( 'prenom', $_POST['prenom_user'] )
     
    $elementRacine->appendChild( $nomElement );
    $elementRacine->appendChild( $prenomElement );
     
    $documentXML->appendChild( $elementRacine );
     
    //affichage au navigateur
    $documentXML->saveXML();

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 318
    Points : 81
    Points
    81
    Par défaut formulaire php vers fichier XML
    Bonjour,

    Je voudrais envoyer directement dans un fichier xml le contenu des données du formulaire de ma page php. j'ai trouvé ce code, mais quand je l'execute il me dit 'XML enregistrer" et je sais pas où il met le fichier person.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
                 if ( ! empty($_POST) ) {
                 $xml = '<?xml version="1.0" ... ?>' ;
                 $xml .= '<person>' ;
                 $xml .= '<name>' . htmlentities($_POST['name']) . '</name>' ;
                 $xml .= '<surname>' . htmlentities($_POST['surname']) . '</surname>' ;
                 $xml .= '</person>' ;
                 file_put_contents('person.xml', $xml) ;
                 echo '<p>XML enregistré !</p>' ;
    }
    ?>
    mon formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form method="post" action=""> 
      <input type="text" name="name"> 
      <input type="text" name="surname"> 
      <input type="submit" value="Go" />
    </form>
    merci

  7. #7
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    Il ne se trouve pas dans le même répertoire que le script PHP ?

    Edit:
    Même si une erreur se produit, le message s'affiche.

    Tentes à nouveau avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error_reporting(E_ALL);
    Pour voir l'erreur... (problême de droit d'écriture à mon avis).

    Ou avec ce code...
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(@file_put_contents('person.xml', $xml))
    	echo '<p>XML enregistré !</p>' ;
    else
    	echo '<p>Erreur ! XML non enregistré !</p>' ;

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 318
    Points : 81
    Points
    81
    Par défaut Boucle / formulaire
    Bonjour,

    ce code est pour créer un seul formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <form method="post" action="">
     
      <input type="text" name="name">
      <input type="text" name="surname">
      <input type="submit" value="Go" />
     
    </form>
    Moi je veux faire une boucle pour créer par exemple 20 ligne de champs name et surname.

    Pouvez vous montrer comment le faire svp.

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Un simple boucle for() qui repete tes lignes.

    La seule astuce consiste a nommer tes champs en tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="text" name="name[]">
      <input type="text" name="surname[]">

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 318
    Points : 81
    Points
    81
    Par défaut
    comme ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for($i=0; $i < 7 ; $i++){
    <form method="post" action="">
     
      <input type="text" name="name[]">
      <input type="text" name="surname[]">
      <input type="submit" value="Go" />
     
    </form>
    }

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 318
    Points : 81
    Points
    81
    Par défaut
    c bon ça marche avec ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <form method="post" action="">
    <?php for($i=0; $i < 7 ; $i++){ ?>
     
       <input type="text" name="name[$i]">
      <input type="text" name="surname[$i]">
    <?php } ?>
    </form>
    Merci beaucoup.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 318
    Points : 81
    Points
    81
    Par défaut Boucle / XML
    Bonjour à tous,

    j'ai un formulaire qui se crée automatiquement avec le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <form method="post" action="">
    <?php for($i=0; $i < 2 ; $i++){ ?>
     
       <input type="text" name="name">
      <input type="text" name="surname">
    <?php } ?>
      <input type="submit" value="Go" />
    </form>
    Puis j'ai un code xml qui transfert les données vers un fichier XML person, qui ne marche pas quand j'ai rajouté la boucle (avant il marchait juste avec un seul champs )
    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
    <?php
                 if ( ! empty($_POST) ) {
                 $xml = '<?xml version="1.0" ... ?>' ;
               for($i=0; $i < 2 ; $i++){
                 $xml .= '<person>' ;
                 $xml .= '<name>' . htmlentities($_POST['name[$i]']) . '</name>' ;
                 $xml .= '<surname>' . htmlentities($_POST['surname[$i]']) . '</surname>' ;
                 $xml .= '</person>' ;
                }
                 if(@file_put_contents('person.xml', $xml))
    	echo '<p>XML enregistré !</p>' ;
    else
    	echo '<p>Erreur ! XML non enregistré !</p>' ;
                error_reporting(E_ALL);
     
    }
    ?>
    Voici ce que je trouve dans mon fichier XML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" ... ?><person><name></name><surname></surname></person><person><name></name><surname></surname></person>
    Pouvez vous m'aider à trouver une solution

  13. #13
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ton tableau est comme ça :

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 318
    Points : 81
    Points
    81
    Par défaut
    j'ai modifié mon code :
    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
    <?php
               if ( ! empty($_POST) ) {
                 $xml = '<?xml version="1.0" ... ?>' ;
               for($i=0; $i < 2 ; $i++){
                 $xml .= '<person>' ;
                 $xml .= '<name>' . htmlentities($_POST['name'][$i]) . '</name>' ;
                 $xml .= '<surname>' . htmlentities($_POST['surname'][$i]) . '</surname>' ;
                 $xml .= '</person>' ;
                }
                 if(@file_put_contents('person.xml', $xml))
    	echo '<p>XML enregistré !</p>' ;
    else
    	echo '<p>Erreur ! XML non enregistré !</p>' ;
                error_reporting(E_ALL);
     
    }
    ?>
    et j'ai toujours rien dans mon fichier XML.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" ... ?><person><name></name><surname></surname></person><person><name></name><surname></surname></person>

  15. #15
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Bonjour,
    Il faut passer par des tableaux côté html (name="name[]") que tu récupères dans un tableau php $_POST['name'][].
    Ce qui donne pour le formulaire :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <form method="post" action="">
    <?php 
    for($i=0; $i < 2 ; $i++){ 
    ?>
    	<input type="text" name="name[]">
    	<input type="text" name="surname[]">
    <?php 
    } 
    ?>
    	<input type="submit" value="Go" />
    </form>
    et pour son traitement :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     if ( ! empty($_POST) ) {
    	$xml = '<?xml version="1.0" ... ?>' ;
    	for($i=0; $i < 2 ; $i++){
    		$xml .= '<person>' ;
    		$xml .= '<name>' . htmlentities($_POST['name'][$i]) . '</name>' ;
    		$xml .= '<surname>' . htmlentities($_POST['surname'][$i]) . '</surname>' ;
    		$xml .= '</person>' ;
    	}
    if(@file_put_contents('person.xml', $xml))
    	echo '<p>XML enregistré !</p>' ;
    else
    	echo '<p>Erreur ! XML non enregistré !</p>' ;
    error_reporting(E_ALL);
    }
    MiCetF

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 318
    Points : 81
    Points
    81
    Par défaut
    Oui enfin ça marche merci beaucoup pour vos réponses

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 318
    Points : 81
    Points
    81
    Par défaut
    Bonjour,

    j'ai un champs dans lequel l'utilisateur rentre un chiffre,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form method="post" action="">
       <input type="text" chiffre="chiffre">
        <input type="submit" value="Go" />
    </form>
    Je veux stocker dans une variable (globale) ce que l'utilisateur met dans ce champs, qui sera utiliser dans une autre page phtml.

    Merci

  18. #18
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    C'est plutôt l'attribut name...
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name="chiffre" />

    Pour transporter des variables de page en page, nous avons les Sessions et cookies en PHP.

    On doit démarrer les sessions au début du script (avant tout affichage) afin de pouvoir accéder au tableau $_SESSION.

    Traitement du formulaire
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // Démarrage de la session
    session_start();
     
    // Récuperation du nombre ou 0 si non saisi
    $chiffre=(isset($_POST['chiffre']))?$_POST['chiffre']):0;
     
    // Mémorisation du nombre dans le tableau $_SESSION
    $_SESSION['chiffre']=$chiffre;

    Page quelconque ayant besoin de la variable.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    // Démarrage de la session
    session_start();
     
    // Récuperation du nombre préalablement sauvegardé
    $chiffre=(isset($_SESSION['chiffre']))?$_SESSION['chiffre']):0;

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 318
    Points : 81
    Points
    81
    Par défaut
    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
    <html><body>
    <form method="post" action="xml">
    Nombre : <input type="text" name="chiffre" size="12"><br>
    <input type="submit" value="OK">
    </form>
    <?php
    //$number = $_POST['number'];
     
            // Démarrage de la session
    session_start();
    // Récuperation du nombre ou 0 si non saisi
    $chiffre=(isset($_POST['chiffre']))?$_POST['chiffre']):0;
     
    // Mémorisation du nombre dans le tableau $_SESSION
    $_SESSION['chiffre']=$chiffre;
    ?>
                    </body></html>
    Il y a une erreur au niveau de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $chiffre=(isset($_POST['chiffre']))?$_POST['chiffre']):0;
    il me dit Syntaxe error, expected instance of ....

  20. #20
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    of ... ?

    Le session_start() doit etre placé au début du fichier.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XML] Surcharge de la mémoire à la génération d'un fichier XML
    Par phy4me dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 21/12/2008, 12h15
  2. [JDOM] Génération d'un fichier XML avec JDOM
    Par demcoul dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 27/11/2008, 13h50
  3. génération d'un fichier XML
    Par k_boy dans le forum XQUERY/SGBD
    Réponses: 9
    Dernier message: 13/06/2008, 15h25
  4. Problème génération d'un fichier XML
    Par sw_spring dans le forum Jasper
    Réponses: 1
    Dernier message: 19/03/2008, 09h32
  5. génération automatique de fichier xml vide
    Par ecdxml dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 03/07/2006, 10h57

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