écrire dans un fichier avec php
joujma
-
foobar47 Messages postés 13654 Statut Contributeur -
foobar47 Messages postés 13654 Statut Contributeur -
bonjour les amis,
je voulais modifier un fichier xml de façon que j'y ajoute des données existant dans ma base de données, ce fichier xml représente une liste d'écoute de chanson que je lirai après avec un lecteur media construit avec flash.le problème est que je n'ai réussi qu'à écrire la dernière ligne de la table existante dans ma base de données.
Voici le code que j'utilise:
<?php
$link=mysql_connect("localhost","root","") or die("echec serveur");
$db=mysql_select_db('musique') or die("echec base");
$req=mysql_query("select * from liste")or die ("echec requete1");
$count=mysql_num_rows($req);
$Fnm = "playlist.xml";
$inF = fopen($Fnm,"r+");
//La position du pointeur est dans :
$ptr = ftell($inF);
//et est modifiable par :
$ptr = fseek($inF,$ptr);
$texte='<?xml version="1.0" encoding="iso-8859-1"?>
<playlist>';
while($tab=mysql_fetch_row($req))
{
$text1=$tab[0].$tab[1].$tab[2];
}
$text2='</playlist>';
fwrite($inF,$texte.$text1.$text2);
//Enfin fermer le fichier
fclose($inF); ?>
je voulais modifier un fichier xml de façon que j'y ajoute des données existant dans ma base de données, ce fichier xml représente une liste d'écoute de chanson que je lirai après avec un lecteur media construit avec flash.le problème est que je n'ai réussi qu'à écrire la dernière ligne de la table existante dans ma base de données.
Voici le code que j'utilise:
<?php
$link=mysql_connect("localhost","root","") or die("echec serveur");
$db=mysql_select_db('musique') or die("echec base");
$req=mysql_query("select * from liste")or die ("echec requete1");
$count=mysql_num_rows($req);
$Fnm = "playlist.xml";
$inF = fopen($Fnm,"r+");
//La position du pointeur est dans :
$ptr = ftell($inF);
//et est modifiable par :
$ptr = fseek($inF,$ptr);
$texte='<?xml version="1.0" encoding="iso-8859-1"?>
<playlist>';
while($tab=mysql_fetch_row($req))
{
$text1=$tab[0].$tab[1].$tab[2];
}
$text2='</playlist>';
fwrite($inF,$texte.$text1.$text2);
//Enfin fermer le fichier
fclose($inF); ?>
A voir également:
- écrire dans un fichier avec php
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
1 réponse
Salut,
Ton fwrite($inF,$texte.$text1.$text2); est en dehors de ta boucle, donc au final, tes variables sont remplies avec les dernières valeurs de la boucle...
Essaye de mettre ton fwrite($inF,$texte.$text1.$text2); dans ta boucle, tout en adaptant tes écritures précédentes comme ceci peut-être, à valider :
Ton fwrite($inF,$texte.$text1.$text2); est en dehors de ta boucle, donc au final, tes variables sont remplies avec les dernières valeurs de la boucle...
Essaye de mettre ton fwrite($inF,$texte.$text1.$text2); dans ta boucle, tout en adaptant tes écritures précédentes comme ceci peut-être, à valider :
#debut de la liste
$texte='<?xml version="1.0" encoding="iso-8859-1"?>
<playlist>';
fwrite($inF,$text);
#la liste
while($tab=mysql_fetch_row($req))
{
$text1=$tab[0].$tab[1].$tab[2];
fwrite($inF,$text1);
}
#fin de la liste
$text2='</playlist>';
fwrite($inF,$text2);