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 :

simpleXml et php


Sujet :

Langage PHP

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    Points : 46
    Points
    46
    Par défaut simpleXml et php
    Bonjour

    Alors j'ai fais un formulaire html, combiné avec un fichier php et un document xml.
    J'ai réussi a entré les données pour un utilisateur et à les afficher a l'ecran grâce au fichier php et a les garder en mémoire dans le fichier xml.

    Mais je n'arrive pas à garder ces informations de l'utilisateur. Donc a les enregistré dans le fichier xml. car quand je rentre les informations du 2eme utilisateur les 1eres informations sont écrasées pour mettre les informations du 2eme utilisateur.
    J'ai essayé de rajouter des éléments fils grâce à addchild et de faire une boucle pour pouvoir compléter mon fichier xml mais rien ne fonctionne.
    Et j'ai voulu enregistrer les données grace à : par exemple "$personnes-> asXML('copie.xml');"
    Mais je n'arrive pas à combiner tous ça pour que ça fonctionne!
    Pouvez vous m'aider?
    Merci
    Voici mon code html :
    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
     
    <html>
    <body>
    <form action="action2.php" method="post">
     
    Nom : <input type="text" name="nom" /></br/></br/>
    Prenom : <input type="text" name="prenom" /></br/></br/>
    Num_de_tel : <input type="text" name="num_de_tel" /></br/></br/>
    Adresse : <textarea name="adresse" rows="3" cols="34"></textarea></br/></br/>
    Email : <input type="text" name="email" /></br/></br/>
    Categorie : <select name="categorie">
                <option>ami</option>
                <option>parent</option>
                <option>enseignant</option>
                </select></br/></br/>
     
    <input name="valider" type="submit" value="OK"/>
    </form>
    </body>
    </html>
    Le code 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
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
     
    <personnes>
     
    <personne>
     
    <nom><?php echo $_POST['nom'];?></nom>
     
    <prenom><?php echo $_POST['prenom'];?></prenom>
     
    <num_de_tel><?php echo $_POST['num_de_tel'];?></num_de_tel>
     
    <adresse><?php echo $_POST['adresse'];?></adresse> 
     
    <email><?php echo $_POST['email'];?></email>
     
    <categorie><?php echo $_POST['categorie'];?></categorie>
     
    </personne>
     
    </personnes>
    Et mon 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    <?php
    $personnes = simplexml_load_file('action.xml');
    $personne= $personnes->personne;
    foreach($personnes->personne as $personne){
     
    if (isset($_POST['nom'])) {
    $personne->nom= $_POST['nom'];}
     
    if (isset($_POST['prenom'])) {
    $personne->prenom= $_POST['prenom'];}
     
    if (isset($_POST['num_de_tel'])) {
    $personne->num_de_tel= $_POST['num_de_tel'];}
     
    if (isset($_POST['adresse'])) {
    $personne->adresse= $_POST['adresse'];}
     
    if (isset($_POST['email'])) {
    $personne->email= $_POST['email'];}
     
    if (isset($_POST['email'])) {
    $personne->email= $_POST['email'];}
     
    if (isset($_POST['categorie'])) {
    $personne->categorie= $_POST['categorie'];}
     
    echo "<font color='navy'>Nom :</font> ".$personne->nom, '<br/>', "<font color='navy'>Prénom:</font> ".$personne->prenom, '<br/>', "<font color='navy'>Numéro de tel:</font> ".$personne->num_de_tel, '<br/>', "<font color='navy'>Adresse:</font> ".$personne->adresse, '<br/>', "<font color='navy'>Email:</font> ".$personne->email, '<br/>', "<font color='navy'>Categorie:</font> ".$personne->categorie, '<br/>', '<br/>', '<br/>';
    echo $personnes-> asXML('copie.xml');// je ne sais pas où le placer
     
    $personnes-> addchild("personne");
    $personne-> addchild("nom");
    $personne-> addchild("prenom");
    $personne-> addchild("num_de_tel");
    $personne-> addchild("adresse");
    $personne-> addchild("email");
    $personne-> addchild("categorie");
    }
    ?>

  2. #2
    Membre averti Avatar de BornBanane
    Homme Profil pro
    dev
    Inscrit en
    Mars 2007
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Mars 2007
    Messages : 284
    Points : 416
    Points
    416
    Par défaut
    Bonjour,

    La fin de ton code ne me semble pas correcte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $pers = $personnes->addchild("personne");
    $pers->addchild("nom");
    $pers->addchild("prenom");
    $pers->addchild("num_de_tel");
    $pers->addchild("adresse");
    $pers->addchild("email");
    $pers->addchild("categorie");
     
    $personnes->asXML('copie.xml');
    Bon courage.
    Smiley de Plomb 2009
    Anciennement FrancoisIT

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    Le problème même avec ton code que j'ai repris.
    C'est que ça boucle sur la personne que je rentre dans mon formulaire indéfiniment.
    Et je veux obtenir :
    j'entre les données d'une personne, je les enregistre dans la copie, puis je rentre les données d'une 2eme personne et je les enregistre dans la même copie a la suite de celle du 1er utilisateur et ainsi de suite...
    Mais je n'y arrive pas.

  4. #4
    Membre averti Avatar de BornBanane
    Homme Profil pro
    dev
    Inscrit en
    Mars 2007
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Mars 2007
    Messages : 284
    Points : 416
    Points
    416
    Par défaut
    Une chose que j'avais oublié de dire la 1ère fois, dans ton fichier xml, ne met pas de code PHP. Tout d'abord cela n'est pas logique d'en mettre puisque c'est du XML et non un script PHP.
    Enlève les Cela ne pourra faire que du bien. Ensuite dans ton code PHP, la ligne suivante ne sert à rien, puis que tu utilises ensuite un foreach.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $personne= $personnes->personne;
    A part cela, le code semble logique. Mais je peux pas tester pour voir ce qui bloque.

    Edit :

    Après avoir relu ton code, le foreach ne me semble pas correcte du tout. En gros ce que tu fais actuellement :
    Tu charges le fichier XML, et pour chaque entrée "personne" tu changes les données par les données envoyées en _POST. Or ce n'estpas ce que tu recherches.

    Il ne faut pas faire de foreach, mais juste insérer une entrée "personne" et mettre les données correspondantes.

    Soit :

    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
    <?php
    $personnes = simplexml_load_file('action.xml');
     
    $personne = $personnes-> addchild("personne");
    $personne->addchild("nom");
    $personne->addchild("prenom");
    $personne->addchild("num_de_tel");
    $personne->addchild("adresse");
    $personne->addchild("email");
    $personne->addchild("categorie");
     
     
    if (isset($_POST['nom'])) {
    $personne->nom= $_POST['nom'];}
     
    if (isset($_POST['prenom'])) {
    $personne->prenom= $_POST['prenom'];}
     
    if (isset($_POST['num_de_tel'])) {
    $personne->num_de_tel= $_POST['num_de_tel'];}
     
    if (isset($_POST['adresse'])) {
    $personne->adresse= $_POST['adresse'];}
     
    if (isset($_POST['email'])) {
    $personne->email= $_POST['email'];}
     
    if (isset($_POST['email'])) {
    $personne->email= $_POST['email'];}
     
    if (isset($_POST['categorie'])) {
    $personne->categorie= $_POST['categorie'];}
     
    echo "<font color='navy'>Nom :</font> ".$personne->nom, '<br/>', "<font color='navy'>Prénom:</font> ".$personne->prenom, '<br/>', "<font color='navy'>Numéro de tel:</font> ".$personne->num_de_tel, '<br/>', "<font color='navy'>Adresse:</font> ".$personne->adresse, '<br/>', "<font color='navy'>Email:</font> ".$personne->email, '<br/>', "<font color='navy'>Categorie:</font> ".$personne->categorie, '<br/>', '<br/>', '<br/>';
     
    $personnes-> asXML('copie.xml');// je ne sais pas où le placer
     
    ?>
    Voila, bon courage à toi !
    Smiley de Plomb 2009
    Anciennement FrancoisIT

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    Merci.
    Je vais essayer de réussir maintenant pour que dans ma copie plusieurs personnes puissent s'enregistrer.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    Voici mon nouveau code, il ne m'interprète pas mon code php mais il ne doit pas manquer grand chose et il doit y avoir une petite erreur dans la boucle.
    Mon idée est d'intégrer une boucle sur "personne " et qu'a la fin de mon code j'insère un bouton submit dans la boucle comme ça une fois que j'affiche ma page php j'ai le moyen de retourner sur la page html pour enregistrer une nouvelle personne dans ma copie et comme ça je peux enregistrer les données de chaque personne au fur et à mesure dans la copie.xml
    Pouvez vous m'aider à corriger mes erreurs?
    Merci

    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
     
     
    <html>
    <body>
    <?php
    $personnes = simplexml_load_file('action.xml');
     
    $personne = $personnes-> addchild("personne");
    foreach ($personnes-> addchild("personne") as $personne){
    $personne->addchild("nom");
    $personne->addchild("prenom");
    $personne->addchild("num_de_tel");
    $personne->addchild("adresse");
    $personne->addchild("email");
    $personne->addchild("categorie");
     
     
    if (isset($_POST['nom'])) {
    $personne->nom= $_POST['nom'];}
     
    if (isset($_POST['prenom'])) {
    $personne->prenom= $_POST['prenom'];}
     
    if (isset($_POST['num_de_tel'])) {
    $personne->num_de_tel= $_POST['num_de_tel'];}
     
    if (isset($_POST['adresse'])) {
    $personne->adresse= $_POST['adresse'];}
     
    if (isset($_POST['email'])) {
    $personne->email= $_POST['email'];}
     
    if (isset($_POST['email'])) {
    $personne->email= $_POST['email'];}
     
    if (isset($_POST['categorie'])) {
    $personne->categorie= $_POST['categorie'];}
     
    echo "<font color='navy'>Nom :</font> ".$personne->nom, '<br/>', "<font color='navy'>Prénom:</font> ".$personne->prenom, '<br/>', "<font color='navy'>Numéro de tel:</font> ".$personne->num_de_tel, '<br/>', "<font color='navy'>Adresse:</font> ".$personne->adresse, '<br/>', "<font color='navy'>Email:</font> ".$personne->email, '<br/>', "<font color='navy'>Categorie:</font> ".$personne->categorie, '<br/>', '<br/>', '<br/>';
     
     
     
    $personnes-> asXML('copie.xml');}?>
     
    <form action="formulaire_exo.html" method="post">
    <input name="valider" type="submit" value="OK"/>
    </form>
     
    // J'ai essayé de mettre ici la fin de la boucle mais mon navigateur m'affiche une page blanche dans ce cas là
     
    </body>
    </html>

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/09/2014, 16h45
  2. simpleXml et php
    Par lol88 dans le forum Langage
    Réponses: 6
    Dernier message: 25/11/2009, 19h03
  3. [SimpleXML] Comment passer de XML à MySQL et vice-versa avec PHP ?
    Par Ben42 dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 05/12/2005, 21h42
  4. [SimpleXML] Comment faire pour transformer un fichier XML en PHP ?
    Par magic8392 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 23/09/2005, 16h22

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