problème caractères spéciaux avec php pour générer xml

Petit nouveau ! | 3 Messages

09 mars 2005, 14:24

Bonjour à tous :D ,
Voilà je me suis mis au php (génial), mais voilà... Les problèmes arrivent :
Je fais une sortie xml de ma base mysql à l'aide d'un script php suivant :

<?php
//connexion à la base

//************************************

//Ecrire une requête ($q) pour récupérer les données de la table
$requete = "SELECT * FROM livres ORDER BY id";
$resultat = mysql_query($requete);


$xml = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'
.'<?xml-stylesheet type="text/xsl" href="style.xsl"?>'
.'<bibliotheque>';
while ($row = mysql_fetch_array($resultat)) {

$xml .= '<livres>';
$xml .= '<id>'.$row['id'].'</id>';
$xml .= '<inventaire>'.$row['inventaire'].'</inventaire>';
$xml .= '<titre>'.$row["titre"].'</titre>';
$xml .= '<auteur>'.$row["auteur"].'</auteur>';
$xml .= '<editeur>'.$row["editeur"].'</editeur>';
$xml .= '<collection>'.$row['collection'].'</collection>';
$xml .= '<matiere>'.$row['matiere'].'</matiere>';
$xml .= '<classement>'.$row['classement'].'</classement>';
$xml .= '</livres>';
}
$xml .= '</bibliotheque>';

$fp = fopen("xml/livres.xml", 'w+');
fputs($fp, $xml);
fclose($fp);

echo 'Export XML effectue !<br><a href="xml/livres.xml">Voir le fichier</a>';
?>

Cela fonctionne très bien mais je constate que lorsque je veux ouvrir le fichier xml, les caractères spéciaux comme "&" calent ! Je sais qu'il doivent se tranformer en "&"... alors j'ai pensé retraivailler ce fichier avec un autre script php :

<?php
$fichier = "livres.xml";

// Ouverture du fichier

$fp = fopen($fichier,"w");
//$flong = filesize($fp);

//$fp = fopen($fichier, "w");
if (!$fp) die("Impossible d'ouvrir le fichier XML");

// Lecture ligne par ligne
while ( $ligneXML = fgets($fp, 4096)) {
$ligneXML = htmlspecialchars($ligneXML);

}

// attention la variable est vide après ceci :-/...
// écrire les résultats dans le fichier

if (fwrite($fp,$ligneXML) === FALSE) {
echo "Impossible d'écrire dans le fichier ($fichier)";
exit;
}
//echo "le contenue est : "."$ligneXML"." et voilà <br>";
echo "L'écriture dans le fichier a réussi";
fclose($fp);
?>

<br>
<a href="livres.xml"> voir le fichier </a>

le script fonctionne à merveille jusqu'à fwrite qui n'inscrit qu'une variable vide !!!
Alors mon fichier xml est aussi vide... Comment faire ???
J'ai vraiment besoin d'aide - au secour ! et un grand merci d'avance :wink:
Et mes félicitations pour ce forum extra !!!

Mammouth du PHP | 1339 Messages

09 mars 2005, 15:14

fputs($fp, htmlentities($xml)); 
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Invité
Invité n'ayant pas de compte PHPfrance

09 mars 2005, 16:14

merci je vais essayer ;-)

Mammouth du PHP | 1339 Messages

09 mars 2005, 16:16

Si ca ne marche pas (ce que je crois :p) rajouter un htmlentites() autour de tout tes $row['champ'].
Bon sinon tu me fais un message privé et on se fait un TeamViewer