Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/12/2010, 19h05   #1
Membre éclairé
 
Homme Gérard Okono
Développeur Web
Inscription : juillet 2006
Messages : 707
Détails du profil
Informations personnelles :
Nom : Homme Gérard Okono
Localisation : Cameroun

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

Informations forums :
Inscription : juillet 2006
Messages : 707
Points : 328
Points : 328
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 :
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 :
1
2
3
4
 
...
<param name="flashvars" value="showtime=true&autoreplay=true&xml=data.xml" />
...
Comment le faire?

Merci d'avance...
okoweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2010, 19h11   #2
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 817
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

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

Informations forums :
Inscription : mars 2005
Messages : 2 817
Points : 3 442
Points : 3 442
Salut !
Où se situe ton problème ?
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2010, 19h19   #3
Membre éclairé
 
Homme Gérard Okono
Développeur Web
Inscription : juillet 2006
Messages : 707
Détails du profil
Informations personnelles :
Nom : Homme Gérard Okono
Localisation : Cameroun

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

Informations forums :
Inscription : juillet 2006
Messages : 707
Points : 328
Points : 328
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 :
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...
okoweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2010, 19h27   #4
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 817
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

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

Informations forums :
Inscription : mars 2005
Messages : 2 817
Points : 3 442
Points : 3 442
Tu peux faire un script dans le genre :

Code :
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) ;
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2010, 19h45   #5
Membre éclairé
 
Homme Gérard Okono
Développeur Web
Inscription : juillet 2006
Messages : 707
Détails du profil
Informations personnelles :
Nom : Homme Gérard Okono
Localisation : Cameroun

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

Informations forums :
Inscription : juillet 2006
Messages : 707
Points : 328
Points : 328
Citation:
Envoyé par Séb. Voir le message
Tu peux faire un script dans le genre :

Code :
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...
okoweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2010, 19h57   #6
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 817
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

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

Informations forums :
Inscription : mars 2005
Messages : 2 817
Points : 3 442
Points : 3 442
Citation:
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).

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

Citation:
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( )).
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2010, 20h12   #7
Membre éclairé
 
Homme Gérard Okono
Développeur Web
Inscription : juillet 2006
Messages : 707
Détails du profil
Informations personnelles :
Nom : Homme Gérard Okono
Localisation : Cameroun

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

Informations forums :
Inscription : juillet 2006
Messages : 707
Points : 328
Points : 328
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...
okoweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2010, 20h32   #8
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 817
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

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

Informations forums :
Inscription : mars 2005
Messages : 2 817
Points : 3 442
Points : 3 442
Citation:
Je suis d'accord pour playlist-234.xml pour l'auteur 234
Non, playlist-234.xml est pour l'utilisateur 234.
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2010, 20h42   #9
Membre éclairé
 
Homme Gérard Okono
Développeur Web
Inscription : juillet 2006
Messages : 707
Détails du profil
Informations personnelles :
Nom : Homme Gérard Okono
Localisation : Cameroun

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

Informations forums :
Inscription : juillet 2006
Messages : 707
Points : 328
Points : 328
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.
okoweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2010, 21h16   #10
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 817
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

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

Informations forums :
Inscription : mars 2005
Messages : 2 817
Points : 3 442
Points : 3 442
Citation:
Comment générer ce nombre pour chaque utilisateur
Si tes utilisateurs sont enregistrés en bdd cela peut correspondre à leur identifiant.

Citation:
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.

Citation:
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.
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2010, 21h22   #11
Membre éclairé
 
Homme Gérard Okono
Développeur Web
Inscription : juillet 2006
Messages : 707
Détails du profil
Informations personnelles :
Nom : Homme Gérard Okono
Localisation : Cameroun

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

Informations forums :
Inscription : juillet 2006
Messages : 707
Points : 328
Points : 328
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?
okoweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2010, 22h49   #12
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 817
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

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

Informations forums :
Inscription : mars 2005
Messages : 2 817
Points : 3 442
Points : 3 442
Tu lances une session
Tu attribues un identifiant aléatoire à l'utilisateur
Tu te serviras de cet identifiant pour la playlist
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2010, 11h30   #13
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 697
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 697
Points : 3 264
Points : 3 264
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 :
Citation:
<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 :
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.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 10h44   #14
Membre éclairé
 
Homme Gérard Okono
Développeur Web
Inscription : juillet 2006
Messages : 707
Détails du profil
Informations personnelles :
Nom : Homme Gérard Okono
Localisation : Cameroun

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

Informations forums :
Inscription : juillet 2006
Messages : 707
Points : 328
Points : 328
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.
okoweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h46.


 
 
 
 
Partenaires

Hébergement Web