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 :

Créer un fichier xml dynamique


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Points : 460
    Points
    460
    Par défaut Créer un fichier xml dynamique
    Bonsoir à tous,
    Je souhaite créer un fichier xml et le remplir avec les données provenant d'une bdd. La page qui déclenche la création et le remplissage du xml reçoit en méthode GET un identifiant qui permet le remplissage du fichier xml. Ce fichier xml sera ultérieurement utilisé lors de l'affiche du html.

    Code : Partie 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
     
    if(!empty($_GET['id'])){
      //Création du fichier XML vide sur le serveur
    	//Exemple ./data.xml
     
      $connect = mysql_connect($host,$user,$pswd);
      mysql_select_db($bdd);
      $sql = 'SELECT titre, fichier FROM titres WHERE auteur='.$_GET['id'];
      $rst = mysql_query($sql);
      while($row = mysql_fetch_array($rst)){
      //Remplissage du fichier XML, ecriture dans data.xml
      }
     
    }
    Code : Partie HTML (Utilisation du fichier XML data.xml)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    <param name="flashvars" value="showtime=true&autoreplay=true&xml=data.xml" />
    ...
    Comment le faire?

    Merci d'avance...

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 211
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 211
    Points : 8 438
    Points
    8 438
    Billets dans le blog
    17
    Par défaut
    Salut !
    Où se situe ton problème ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Points : 460
    Points
    460
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Salut !
    Où se situe ton problème ?
    Création du fichier xml de ce genre avec la page php et son remplissage avec les données provenant de la bdd
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <playlist version="1" xmlns="http://xspf.org/ns/0/">
        <title>Ounage Playlist</title>
        <creator>Dew</creator>
        <link>http://www.blup.fr/</link>
        <info>The Best Playlist for Testing</info>
        <image>covers/tracklist.jpg</image>
     
        <trackList>
     
            <track>
              <location>mp3/cesaria.mp3</location>
              <creator>Cesaria Evora</creator>
              <album>Voz d'Amor (Cesaria Evora)</album>
              <title>Saia Travada</title>
              <annotation></annotation>
              <duration></duration>
              <image>covers/cesaria.jpg</image>
              <info></info>
              <link>http://fr.wikipedia.org/wiki/Cesaria_Evora</link>
            </track>
     
            <track>
              <location>mp3/katusha.mp3</location>
              <creator>Russian Red Army Choir</creator>
              <album>Best Of</album>
              <title>Katusha</title>
              <annotation></annotation>
              <duration></duration>
              <image>covers/redarmy.jpg</image>
              <info></info>
              <link>http://www.blup.fr/</link>
            </track>
     
        </trackList>
    </playlist>
    Merci d'avance...

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 211
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 211
    Points : 8 438
    Points
    8 438
    Billets dans le blog
    17
    Par défaut
    Tu peux faire un script dans le genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $xml = '<?xml version="1.0" encoding="UTF-8"?>' ;
    $xml .= '<playlist version="1" xmlns="http://xspf.org/ns/0/">' ;
    $xml .= '...' ;
    $xml .= '<trackList>' ;
     
    while($row = mysql_fetch_array($rst)){
        $xml .= '<track>...</track>' ;
    }
     
    $xml .= '</trackList></playlist>' ;
    file_put_contents('data.xml', $xml) ;

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Points : 460
    Points
    460
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Tu peux faire un script dans le genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $xml = '<?xml version="1.0" encoding="UTF-8"?>' ;
    $xml .= '<playlist version="1" xmlns="http://xspf.org/ns/0/">' ;
    $xml .= '...' ;
    $xml .= '<trackList>' ;
     
    while($row = mysql_fetch_array($rst)){
        $xml .= '<track>...</track>' ;
    }
     
    $xml .= '</trackList></playlist>' ;
    file_put_contents('data.xml', $xml) ;
    Merci déjà pour ce début de solution.
    Le but de mon script est de créer et remplir ce fichier data.xml pour chaque $_GET['id'], en fait pour chaque appel de la page auteur.php?id=x, x étant l'id de chaque auteur.
    Si mon algo est bon, ce fichier devrait être détruit lorsqu'on sort de cette page, car lorsqu'on change d'auteur le contenu de data.xml devrait être mis à jour en fonction de l'id de l'auteur.
    Comment vider data.xml lorsqu'on change d'identifiant?
    Voir aussi le cas où plusieurs personnes visitent le site. Chacun remplissant le data.xml en fonction de l'auteur qu'il souhaite écouter les mp3. Comment gérer les data.xml en fonction des visiteurs?

    merci d'avance...

  6. #6
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 211
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 211
    Points : 8 438
    Points
    8 438
    Billets dans le blog
    17
    Par défaut
    Si mon algo est bon, ce fichier devrait être détruit lorsqu'on sort de cette page
    Pour le moment, de ce que j'ai vu, l'ancien data.xml est détruit lorsque le nouveau est créé (écrasement).

    Comment vider data.xml lorsqu’on change d'identifiant?
    Pour le moment c'est file_put_contents( ) qui s'en charge.

    Voir aussi le cas où plusieurs personnes visitent le site. Chacun remplissant le data.xml en fonction de l'auteur qu'il souhaite écouter les mp3. Comment gérer les data.xml en fonction des visiteurs?
    Tu peux donner un autre nom que data.xml. Par exemple l'utilisateur n° 234 aurait un fichier playlist-234.xml, ainsi pas de conflit et chacun peut conserver sa playlist jusqu'à ce qu'il en définisse une nouvelle qui écrasera l'ancienne (file_put_contents( )).

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Points : 460
    Points
    460
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Tu peux donner un autre nom que data.xml. Par exemple l'utilisateur n° 234 aurait un fichier playlist-234.xml, ainsi pas de conflit et chacun peut conserver sa playlist jusqu'à ce qu'il en définisse une nouvelle qui écrasera l'ancienne (file_put_contents( )).
    Je suis d'accord pour playlist-234.xml pour l'auteur 234, mais je vois un cas où le visiteur X appelle auteur.php?id=234, X étant donc entrain d'écouter playlist-234.xml. Un autre visiteur Y appelle lui aussi auteur.php?id=234, cela a pour effet de recréer playlist-234.xml, cela ne causerait-il pas de préjudice à X qui lui était entrain de savourer la playlist playlist-234.xml, car le fichier a été détruit et recréé?

    Merci d'avance...

  8. #8
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 211
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 211
    Points : 8 438
    Points
    8 438
    Billets dans le blog
    17
    Par défaut
    Je suis d'accord pour playlist-234.xml pour l'auteur 234
    Non, playlist-234.xml est pour l'utilisateur 234.

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Points : 460
    Points
    460
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Non, playlist-234.xml est pour l'utilisateur 234.
    Comment générer ce nombre pour chaque utilisateur et pour qu'il n'y ait pas de conflit de non de fichier dans le serveur?
    Et en plus j'ai l'impression qu'il y aurait des fichiers utilisables qu'une seule fois, rien qu'à la création par l'utilisateur 234 par exemple.

  10. #10
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 211
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 211
    Points : 8 438
    Points
    8 438
    Billets dans le blog
    17
    Par défaut
    Comment générer ce nombre pour chaque utilisateur
    Si tes utilisateurs sont enregistrés en bdd cela peut correspondre à leur identifiant.

    et pour qu'il n'y ait pas de conflit de non de fichier dans le serveur?
    Si tes utilisateurs sont identifiés par un n° unique alors pas de conflit de fichier.

    Et en plus j'ai l'impression qu'il y'aurait des fichiers utilisables qu'une seule fois, rien qu'à la création par l'utilisateur 234 par exemple.
    Pas compris.

  11. #11
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Points : 460
    Points
    460
    Par défaut
    Mon site est ouvert à tous, n'importe qui peut écouter les titres d'un auteur. Comment donc identifier les utilisateurs pour la gestion des playlist?

  12. #12
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 211
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 211
    Points : 8 438
    Points
    8 438
    Billets dans le blog
    17
    Par défaut
    Tu lances une session
    Tu attribues un identifiant aléatoire à l'utilisateur
    Tu te serviras de cet identifiant pour la playlist

  13. #13
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Je ne sais si on perçois la même chose, mais il me semble qu'il y a un temps de latence qui peu être long entre le moment de la création du data.xml et au moment où le contenu XML sera réellement obtenu.
    Pour peu qu'il y ait 2 demande simultanée (accès concurrent), il peut avoir un problème comme le 2ème qui a fait la demande obtienne la playliste du 1er.


    Est-ce qu'il ne serait pas possible de faire pointer la playliste vers un fichier Php avec le paramètre (auteur_id) plutôt qu'un XML ?
    Exemple :
    <param name="flashvars" value="showtime=true&autoreplay=true&xml=playliste.php?auteur_id=12" />
    (12 serait la valeur de $_GET['id'])

    Ensuite, ça serait à cette page "playliste.php" de faire la requête pour rechercher la playliste selon la valeur du paramètre, et de générer "à la volée" le contenu XML.
    Au bout, il n'y a pas de fichier XML, c'est le même principe que images dynamiques (genre captcha), où des flux RSS (enfin là, pas toujours).
    Exemple : (playliste.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
     
    $auteur_id = $_GET['auteur_id'];
     
    // Requête SQL : On récupère la playliste
    $sql = 'SELECT titre, fichier FROM titres WHERE auteur = '.$auteur_id;
    ... etc ...
     
     
    // Partie XML : On génère le XML
    ... etc ...
    while($row = mysql_fetch_array($rst)){
        $xml .= '<track>...</track>' ;
    }
    ... etc ...
    Faut voir si le player Flash accepte comme paramètre xml un fichier Php avec un paramètre.
    Je ne vois pas de raison particulière, sans compter il doit être possible de "tricher" un peu avec Apache avec de la réécriture si tel est le cas.

  14. #14
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Points : 460
    Points
    460
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    ...
    Faut voir si le player Flash accepte comme paramètre xml un fichier Php avec un paramètre.
    Oui ca marche super bien.
    Merci à vous tous, voilà un bon nombre de post qui vont passer en résolus.

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

Discussions similaires

  1. [DOM] Créer un fichier XML indenté
    Par phoebe dans le forum Format d'échange (XML, JSON...)
    Réponses: 19
    Dernier message: 06/10/2009, 23h31
  2. créer des Fichiers XML dynamiquement
    Par bhahmed dans le forum C++Builder
    Réponses: 2
    Dernier message: 01/09/2006, 17h54
  3. [C#] [XML] Comment créer un fichier XML
    Par pc152 dans le forum Windows Forms
    Réponses: 12
    Dernier message: 28/09/2004, 13h41
  4. [C#] Créer un fichier Xml à partir d'un objet
    Par Troopers dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/09/2004, 13h23
  5. [DOM] est ce qu'on peut créer un fichier xml en java ?
    Par miloud dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 21/01/2004, 10h40

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