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 :

PHP => XML écrire entre <root></root>


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut PHP => XML écrire entre <root></root>
    Bonjour,

    Voila je suis complètement débutant en php je suis orienté Flash
    et j'ai un petit problème avec du php

    donc ma question(problème) est que je voudrai ecrire d'office dans mon xml
    les balise <root> </root>, de les ecrire jai réussi

    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
     <?
    // Fonction pour l envoi des valeurs a Flash
    FUNCTION Parse($variable,$valeur)
    {
         echo "&$variable=$valeur";
    }
    //----------------------------------------------
     
    // Fonction pour ecrire $content dans un fichier
     
    FUNCTION writeFile( $filename,$content ) 
    {
     
      @$fp = fopen( $filename, "a"); 
      IF ( $fp ) 
      {
         fputs($fp,"<root>\n");
         fputs($fp,$content);
         fputs($fp,"</root\n");
     
     
        fclose( $fp ); 
        RETURN 1; 
      } 
      RETURN false; 
    }
    //-----------------------------------------------
    $NewMess=urldecode($NewMess);
     
    // ON ecrit les nouvelle news
    writeFile('Clips.xml',$NewMess);
     
    // ON envoi une var de fin a flash
    Parse("retour","1");
     
    ?>
    mais le probleme c'est quan je fait appelle a ma fonction dans Flash j'envoie le texte saisie dans Flash vers le PHP qui lui ecrie dans mon xml donc a chaque fois que jecrie une "news" il me met les <root>, or jaimerai quil ne me l'ecrive qu'une seule fois


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <root>
     
    <news>salut salut</news><titre> salut1</titre>
    <news>salut2 salut2</news><titre> salut12</titre>
     
    </root>
    alors que pour linstant quan j'ecrie une news il me m'ecrie ça dans le xml


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <root>
     
    <news>salut salut</news><titre> salut1</titre>
     
    </root>
    <root>
     
    <news>salut2 salut2</news><titre> salut2</titre>
     
    </root>
    j'espère que j'ai était asser claire merci beaucoup

  2. #2
    Membre éclairé
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Points : 654
    Points
    654
    Par défaut
    fonctions :
    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
     
    <?php
     
    // retourne le couple ($varName, $value) sous la forme '&$varName=$value'
    function parseVar(string $varName, $value)
    {
       return '&'.$varName.'='.urlencode($value);
    }
     
    /* modifie le fichier XML $fileName en lui ajoutant un noeud <$nodeName>
    avec le contenu $content */
    function addNodeToFile(string $fileName, string $content, string $nodeName) 
    {
      $res = FALSE;
     
      // chargement du fichier XML
      $xml = new SimpleXMLElement($fileName);
      if ($xml)
      {
        // ajout d'un noeud <message>$content</message> au noeud root
        $xml->addChild($nodeName, $content);
     
        // écriture du fichier
        file_puts_content($fileName, $xml->asXML());
     
        $res = TRUE;
      }
     
      return $res;
    }
     
    // EOF
    utilisation :
    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
     
    <?php
     
    // nom du fichier XML
    $fileName = 'news.xml';
     
    // récupération des variables POST
    $news_title = addslashes(trim($_POST['news[title]']));
    $news_content = addslashes(trim($_POST['news[content]']));
     
    // écriture de la news (le titre puis le contenu)
    $res = FALSE;
    if (strlen($news_title) && strlen($news_content))
    {
       $res = addNodeToFile($fileName, $news_title, 'title');
       $res &= addNodeToFile($fileName, $news_content, 'content');
    }
     
    // écriture du résultat (1 ou 0)
    echo parseVar('retour', $res);
     
    // EOF

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Merci pour cette réponse plus que rapide mais je met tous ça ou ? lol

    merci encore

  4. #4
    Membre éclairé
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Points : 654
    Points
    654
    Par défaut
    j'ai fait des modifications désolé :p

    tu peux mettre les fonctions dans un fichier "fonctions.inc.php'

    dans ton fichier où tu récupères tes variables, tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
     
    require_once('fonctions.inc.php');
     
    // mettre ici le contenu du code d'utilisation
     
    // EOF
    j'espère ne pas avoir fait d'erreur(s). si c'est le cas, n'hésites-pas. en tout cas, tu devrais comprendre la logique de traitement si tu veux modifier le code.

    N.B. : l'extension simple XML doit être activée par défaut.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    ok alors je comprend encore moins donc enfete deja jai pas donnée la vrai strucutre xml pour pas vous induire en erreur et pour donnée un exemple simple

    Vrais structure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <Play_list>
    	<Clip>
    		<Chemin value='video/salut'/>
    		<Titre value='salut'/>
    	</Clip>
    </Play_list>
    deuxieme choses
    ça je le met dans fonction.inc.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
    <?php
     
    // retourne le couple ($varName, $value) sous la forme '&$varName=$value'
    function parseVar(string $varName, $value)
    {
       return '&'.$varName.'='.urlencode($value);
    }
     
    /* modifie le fichier XML $fileName en lui ajoutant un noeud <$nodeName>
    avec le contenu $content */
    function addNodeToFile(string $fileName, string $content, string $nodeName) 
    {
      $res = FALSE;
     
      // chargement du fichier XML
      $xml = new SimpleXMLElement($fileName);
      if ($xml)
      {
        // ajout d'un noeud <message>$content</message> au noeud root
        $xml->addChild($nodeName, $content);
     
        // écriture du fichier
        file_puts_content($fileName, $xml->asXML());
     
        $res = TRUE;
      }
     
      return $res;
    }
     
    // EOF
    mais ça ?

    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
    <?php
     
    // nom du fichier XML
    $fileName = 'news.xml';
     
    // récupération des variables POST
    $news_title = addslashes(trim($_POST['news[title]']));
    $news_content = addslashes(trim($_POST['news[content]']));
     
    // écriture de la news (le titre puis le contenu)
    $res = FALSE;
    if (strlen($news_title) && strlen($news_content))
    {
       $res = addNodeToFile($fileName, $news_title, 'title');
       $res &= addNodeToFile($fileName, $news_content, 'content');
    }
     
    // écriture du résultat (1 ou 0)
    echo parseVar('retour', $res);
     php
    // EOF
    Vraiment dur le Rhoooo je suis meilleur en AS Vache ^^

  6. #6
    Membre éclairé
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Points : 654
    Points
    654
    Par défaut
    le code d'utilisation peut être placé à l'endroit où tu souhaites utiliser les fonctions, tout simplement.

    concernant le code, on peut le modifier à notre guise pour adapter à tes besoins.

    Voici comment créer en PHP, un fichier contenant
    l'exemple que tu as donné :
    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
     
    <?php 
     
    // création du noeud root
    $playList = new SimpleXMLElement('Play_list');
    /*
    <Play_list/>
    */
     
    // création d'un fils de type clip
    $clip1 = $playList->addChild('Clip');
    /*
    <Play_list>
      <Clip/>
    </Play_list>
    */
     
    // fils de clip1 Chemin
    $chemin1 = $clip1->addChild('Chemin');
    $chemin1->addAttribute('value', 'video/salut');
    /*
     <Play_list>
      <Clip>
        <Chemin value="video/salut'/>
      </Clip>
    </Play_list>
     */
     
    // fils de clip1 Titre
    $titre1 = $clip1->addChild('Titre');
    $titre1->addAttribute('value', 'salut');
    /*
      <Play_list>
       <Clip>
        <Chemin value="video/salut'/>
        <Titre value="salut"/>
      </Clip>
     </Play_list>
      */
     
    // résultat stocké dans un fichier
    file_puts_content('Playlists.xml', $playList->asXML());
     
    // EOF
    avec ceci, tu peux tout comprendre normalement.

    a toi de voir pour modifier les fonctions comme il te convient.
    il faut bien que tu t'exerces un peu :p

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup jvai essayer d'appliquer ça tout en conservant mon code existant Merci

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Merci vraiment de m'aider mais la jmenfonce plus qu'autre choses ^^

    effectivement j'ai compris votre exemple ça parait simple mais le soucie c'est que j'ai deja un code, j'ai vraiment beaucoup de mal a comprendre le php et son fonctionnement enfin bref
    je ne comprend pas comment je peux faire pour rajouter tous ça a mon fichier car si j'essaye de bidouiller votre code ce que j'ai fait dailleur il ne vas pas me recuperer mes valeur de Flash...


    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
     <?
     
     
     
    // Fonction pour l envoi des valeurs a Flash
    function Parse($variable,$valeur)
    {
         echo "&$variable=$valeur";
    }
    //----------------------------------------------
     
    // Fonction pour ecrire $content dans un fichier
     
    function writeFile( $filename,$content ) 
    {
     
      @$fp = fopen( $filename, "a"); 
      if ( $fp ) 
      {
     
         fputs($fp,$content);
     
     
     
        fclose( $fp ); 
        return 1; 
      } 
      return false; 
    }
    //-----------------------------------------------
    $NewMess=urldecode($NewMess);
     
    // On ecrit les nouvelle news
    writeFile('Clips.xml',$NewMess);
     
    // On envoi une var de fin a flash
    Parse("retour","1");
     
    ?>

    je suis vraiment désole c'est la première fois que je touche du php donc c'est vraiment très compliqué (ne vous inquiétez pas je ne vous demande pas de l'écrire a ma place )

  9. #9
    Membre éclairé
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Points : 654
    Points
    654
    Par défaut
    bon, je vais te donner le code complet adapté à ton utilisation

    tu peux appelé ce script à partir de ton flash :
    (paramètres dans l'URL)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /chemin/vers/ajouterClip.php?titre=mon+titre&chemin=chemin%2Fvers%2Fmon+titre


    le script te retournera 1 si le clip a bien été ajouté, 0 sinon.

    (ou plutôt, le rendu de la page sera '1' ou '0')

    ajouterClip.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
     
    <?php
     
    // récupération des paramètres GET 'titre' et 'chemin'
    $titre = addslashes(trim(urldecode($_GET['titre'])));
    $chemin = addslashes(trim(urldecode($_GET['chemin'])));
     
    /* vérification du titre et du chemin.
    on sort si erreur il y a... */
    if (!strlen($titre) || !strlen($chemin))
    {
       echo FALSE;
       exit(1);
    }
     
    // nom du fichier XML avec les clips
    $fileName = 'Clips.xml';
     
    // objet XML de type Play_List (root)
    $playList = simplexml_load_file($fileName);
     
    // si le fichier n'existait pas, on créé l'élement root
    if (!$playList)
    {
      $playList = new SimpleXMLElement('<Play_List/>');
    }
     
    // création d'un noeud de type Clip
    $clip = $playList->addChild('Clip');
     
    // ajout des fils Titre et Chemin à Clip
    $clip->addChild('Chemin', $chemin);
    $clip->addChild('Titre', $titre);
     
    // écriture du fichier
    file_puts_content($fileName, $playList->asXML());
     
    echo TRUE;
     
    // EOF
    donne par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <Play_List>
      <Clip>
        <Titre>Un titre</Titre>
        <Chemin>chemin/titre1</Chemin>
      </Clip>
      <Clip>
        <Titre>Un autre titre</Titre>
        <Chemin>chemin/titre2</Chemin>
      </Clip>
    </Play_List>

  10. #10
    Membre éclairé
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Points : 654
    Points
    654
    Par défaut
    j'ai testé, çà marche correctement mais il faut faire une petite modification :
    remplacer :
    echo FALSE et echo TRUE
    par (respectivement) echo '0' et echo '1'

    on obtient donc :
    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
     
    <?php
     
    // récupération des paramètres GET 'titre' et 'chemin'
    $titre = addslashes(trim(urldecode($_GET['titre'])));
    $chemin = addslashes(trim(urldecode($_GET['chemin'])));
     
    /* vérification du titre et du chemin.
    on sort si erreur il y a... */
    if (!strlen($titre) || !strlen($chemin))
    {
          echo '0';
          exit(1);
    }
     
    // nom du fichier XML avec les clips
    $fileName = 'Clips.xml';
     
    // objet XML de type Play_List (root)
    $playList = simplexml_load_file($fileName);
     
    // si le fichier n'existait pas, on créé l'élement root
    if (!$playList)
    {
        $playList = new SimpleXMLElement('<Play_List/>');
    }
     
    // création d'un noeud de type Clip
    $clip = $playList->addChild('Clip');
     
    // ajout des fils Titre et Chemin à Clip
    $clip->addChild('Chemin', $chemin);
    $clip->addChild('Titre', $titre);
     
    // écriture du fichier
    file_puts_content($fileName, $playList->asXML());
     
    echo '1';
     
    // EOF

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Bonjour désole jai etait en week donc je ne pouvais pas repondre donc aprés avoir tester le script d'abord merci beaucoup

    voila l'erreur que jobtient

    Fatal error: Call to undefined function: simplexml_load_file() in /homepages/18/d267675593/htdocs/testPHP2/ajouterClip.php on line 19

    jai fait sur mon bouton Flash
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getURL('ajouterClip.php?titre=mon+titre&chemin=chemin%2Fvers%2Fmon+titre'),'' ,'GET');

  12. #12
    Membre éclairé
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Points : 654
    Points
    654
    Par défaut
    SimpleXML n'est pas activé. Tournes-tu bien sous PHP5 ?

    Fais un fichier phpinfo.php avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
     
    phpinfo();
     
    // EOF
    Et lances cette page. Recherches ensuite "SimpleXML" pour voir si l'extension est disponible et activée. Sinon tu dois l'installer.

Discussions similaires

  1. PHP => XML écrire entre <root>
    Par KenSh_Powa dans le forum Débuter
    Réponses: 0
    Dernier message: 07/08/2009, 13h31
  2. Réponses: 11
    Dernier message: 17/01/2006, 16h54
  3. oracle accepte t'il du xml en entrée?
    Par dahno_fr dans le forum Oracle
    Réponses: 2
    Dernier message: 11/01/2006, 16h02
  4. [Wamp] Cherche plateforme pour développer en php, mysql, xml, xsl
    Par ibtisss dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 10
    Dernier message: 18/10/2005, 17h31
  5. PHP dans XML ou XSL
    Par mathieu dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 31/08/2003, 21h07

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