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 :

Code Php relié à un fichier xml


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de laureencrv
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2019
    Messages : 17
    Par défaut Code Php relié à un fichier xml
    Bonsoir,

    J'ai créé des personnages, j'ai relié les informations à un fichier xml.

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    <?php
     
     
    date_default_timezone_set('Europe/Paris');
    $date=["d M Y, G : i",filemtime("gps.txt")];
     
    $perso=$_POST["perso"];
    $lieu=$_POST["lieu"];
    $latitude=$_POST["latitude"]; 
    $longitude=$_POST["longitude"];
    $date=$_POST["date"];
    $monFichier = fopen("gps.txt", "w");
    fwrite($monFichier,$perso."\n");
    fwrite($monFichier,$lieu."\n");
    fwrite($monFichier,$latitude."\n");
    fwrite($monFichier,$longitude. "\n");
    fwrite($monFichier,$date."\n");
    fclose($monFichier);
     
    	$monFichier = fopen("./test.xml","a+");
     
    	$monFichier = new DOMDocument('1.0','utf-8'); 
    	$monFichier->formatOutput = true;
     
    	$root = $monFichier->createElement('utilisateurs'); 
    	$root = $monFichier->appendChild($root); 
     
    	$title1 = $monFichier->createElement('lieu'); 
    	$title1 = $root->appendChild($title1);
    	$title1->appendChild($monFichier->createTextNode($lieu));
     
    	$title2 = $monFichier->createElement('longitude');  
    	$title2 = $root->appendChild($title2);
    	$title2->appendChild($monFichier->createTextNode($longitude));
     
    	$title3 = $monFichier->createElement('latitude');  
    	$title3 = $root->appendChild($title3);
    	$title3->appendChild($monFichier->createTextNode($latitude));
     
    	$title4 = $monFichier->createElement('perso'); 
    	$title4 = $root->appendChild($title4);
    	$title4->appendChild($monFichier->createTextNode($perso));
     
    	$title5 = $monFichier->createElement('date'); 
    	$title5 = $root->appendChild($title5);
    	$title5->appendChild($monFichier->createTextNode($date));
     
    	$monFichier->save("test.xml"); 
     
    			date_default_timezone_set('Europe/Paris');
     
    			echo "<p>Ce qui a été envoyé :</p> <br/>
    			<br/>
    			<b>".$perso."</b> est <b>".$lieu."</b>, depuis le <b>". date("d M Y, G : i",filemtime("gps.txt"))."</b>
    			<br/>GPS : ".$latitude." | ".$longitude;
     
    		?>
    Ce que j'obtiens : (xml)

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="utf-8"?>
    <utilisateurs>
      <lieu>à la maison</lieu>
      <longitude>4.3877762</longitude>
      <latitude>45.423759499999996</latitude>
      <perso>Ron</perso>
      <date></date>
    </utilisateurs>

    Ce que j'aimerais :

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?xml version="1.0" encoding="utf-8"?>
    <utilisateurs>
     <identite id="1">
     <lieu>à la maison</lieu>
      <longitude>4.3877762</longitude>
      <latitude>45.423759499999996</latitude>
      <perso>Ron</perso>
      <date></date>
     </identite>
    </utilisateurs>

    J'aimerais mettre une identité pour chaque personnage, et que le lieu, longitude, latitude, date s'actualise à chaque fois, mais que l'ensemble des personnages soient présent. Là je n'ai seulement que le dernière personnage, pourtant j'ai bien mis sauvegardé donc je ne comprends pas.

    Je souhaite faire cela pour réaliser ce code par la suite :

    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
    <?php
    $latitude=$_POST["latitude"];
    $longitude=$_POST["longitude"];
    $perso= $_POST["id"];
    echo "Coordonnées GPS de l'identifiant : ".$perso." ".$latitude." | ".$longitude."<br />";//le petit affichage
    $test_xml = simplexml_load_file("test.xml");
    $date=date("d M Y, G : i");
    echo $date."";
     
     
    foreach ($test_xml->perso as $perso) {
    	if ($identite['id']==$id) {
    	$identite->latitude=$latitude;
    	$identite->longitude=$longitude;
        $identite->date=$date;
            }
    }
    $test_xml->asXML("test.xml");
    ?>
    Si vous avez une piste.. merci d'avance pour l'aide apportée

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 699
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 699
    Par défaut
    la modification à faire est par exemple au niveau de $root->appendChild($title1);. cela signifie que vous rajoutez le titre dans $root qui a la balise "utilisateurs" (d'ailleurs vous pourriez appelez cette variable $utilisateurs).
    pour avoir une balise "utilisateur" autour, c'est quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // création de la balise utilisateur
    $utilisateur = $monFichier->createElement("utilisateur"); 
     
    // ajout des informations de l'utilisateur
    $lieu = $monFichier->createElement('lieu'); 
    $utilisateur->appendChild($lieu);
    $lieu->appendChild($monFichier->createTextNode("nom du lieu"));
     
    // ... ici les autres informations de l'utilisateur
     
     
    // ajout de l'utilisateur dans la liste
    $utilisateurs->appendChild($utilisateur);

  3. #3
    Membre averti Avatar de laureencrv
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2019
    Messages : 17
    Par défaut
    Citation Envoyé par mathieu Voir le message
    la modification à faire est par exemple..
    Merci pour ta réponse, je comprends bien le principe.

    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
    <?php
     
     
    date_default_timezone_set('Europe/Paris');
    $date=["d M Y, G : i",filemtime("gps.txt")];
     
    $perso=$_POST["perso"];
    $lieu=$_POST["lieu"];
    $latitude=$_POST["latitude"]; 
    $longitude=$_POST["longitude"];
    $date=$_POST["date"];
    $monFichier = fopen("gps.txt", "w");
    fwrite($monFichier,$perso."\n");
    fwrite($monFichier,$lieu."\n");
    fwrite($monFichier,$latitude."\n");
    fwrite($monFichier,$longitude. "\n");
    fwrite($monFichier,$date."\n");
    fclose($monFichier);
     
    	$monFichier = fopen("./test.xml","a+");
    	$monFichier = new DOMDocument('1.0','utf-8');
    	$monFichier->formatOutput = true;
     
    // création de la balise utilisateur
    $utilisateur = $monFichier->createElement("utilisateur"); 
     
    // ajout des informations de l'utilisateur
    $lieu = $monFichier->createElement('lieu'); 
    $utilisateur->appendChild($lieu);
    $lieu->appendChild($monFichier->createTextNode("nom du lieu"));
     
    // ... ici les autres informations de l'utilisateur
     
     
    // ajout de l'utilisateur dans la liste
    $utilisateurs->appendChild($utilisateur);
     
    	$monFichier->save("test.xml");
     
     
    		?>
    Malheureusement ça ne fonctionne pas et affiche un message d'erreur..

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 324
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $monFichier = new DOMDocument('1.0','utf-8');
    va effacer ton handle de fichier contenu dans $nomFichier.

    Il te faut charger ton fichier XML déjà existant avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nomFichier->Load('nom du fichier xml');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $monFichier->save("test.xml");
    va écraser le précédent test.xml par le contenu actuel du DOMDocument $nomFichier, qui ne contient que ce que tu viens d'y mettre si tu n'a pas utilisé ->Load
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  5. #5
    Membre averti Avatar de laureencrv
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2019
    Messages : 17
    Par défaut
    @chrtophe

    Merci pour ta réponse, malheureusement je ne comprends pas bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
     
    	$monFichier = fopen("./test.xml","a+");
    	$monFichier = new DOMDocument('1.0','utf-8');
    	$monFichier->formatOutput = true;
     
    	$nomFichier->Load('test.xml');	
     
    		?>
    Cette partie là ne fonctionne pas du tout, avant j'avais quelque chose dans mon xml même si ça se changeait à chaque fois, là je n'ai plus rien du tout..
    et je ne comprends même pas à quoi ça corresponds $nomFichier..

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 324
    Par défaut
    Il ne faut pas utiliser fopen.

    Load va charger le contenu du XML dans le DOMDocument $nomfichier.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  7. #7
    Membre averti Avatar de laureencrv
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2019
    Messages : 17
    Par défaut
    Merci, je ne comprenais pas.. mais quand j'ai ajouté monfichier et non nomfichier ça fonctionne parfaitement

  8. #8
    Membre averti Avatar de laureencrv
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2019
    Messages : 17
    Par défaut
    En fait ça ne fonctionne pas, dépassé deux personnes ça n'enregistre plus et le pire c'est que j'ai un message d'erreur à chaque fois avec le load.

    DOMDocument::load(): Extra content at the end of the document
    est-ce lié à un élément racine que je devrais créer ?

    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
    $monFichier = new DOMDocument('1.0','utf-8'); 
    	$monFichier->formatOutput = true;
    	$monFichier->Load("test.xml");	
     
    	$root = $monFichier->createElement('utilisateurs'); 
    	$root = $monFichier->appendChild($root); 
     
    	$title1 = $monFichier->createElement('lieu'); 
    	$title1 = $root->appendChild($title1);
    	$title1->appendChild($monFichier->createTextNode($lieu));
     
    	$title2 = $monFichier->createElement('longitude');  
    	$title2 = $root->appendChild($title2);
    	$title2->appendChild($monFichier->createTextNode($longitude));
     
    	$title3 = $monFichier->createElement('latitude');  
    	$title3 = $root->appendChild($title3);
    	$title3->appendChild($monFichier->createTextNode($latitude));
     
    	$title4 = $monFichier->createElement('perso'); 
    	$title4 = $root->appendChild($title4);
    	$title4->appendChild($monFichier->createTextNode($perso));
     
    	$title5 = $monFichier->createElement('date'); 
    	$title5 = $root->appendChild($title5);
    	$title5->appendChild($monFichier->createTextNode($date));
     
    	$monFichier->save('test.xml');

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

Discussions similaires

  1. [CDATA]Mettre du code ASP dans un fichier XML
    Par Deejoh dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 23/11/2007, 10h04
  2. inclure un code php dans un fichier html
    Par killer_instinct dans le forum Langage
    Réponses: 5
    Dernier message: 12/03/2007, 14h13
  3. Probleme dans mon code recherche dans un fichier Xml
    Par dederfred dans le forum Delphi
    Réponses: 11
    Dernier message: 21/10/2006, 16h51
  4. [XML] Faire du php dans un fichier XML
    Par Oberown dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 04/02/2006, 14h17
  5. Réponses: 4
    Dernier message: 27/01/2006, 15h28

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