écriture dans fichier.

Signaler
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
-
Messages postés
192
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
10 août 2009
-
Yop à tous,

Voila j'ai mon fichier de flux rss présenté comme ceci :

<?xml version="1.0" encoding="iso-8859-1" ?>

<rss version="2.0">
    <channel>
        <title>Ajout de programmes</title>
        <link>http://deck-bsd.eurower.net</link>
        <description>Ajout de programmes</description>

       
            <title>Test et notification des programme compatible windows vista.</title>
            <link>http://deck-bsd.eurower.net</link>
            <description>Test et notification des programme compatible windows vista.</description>
            Mon, 15 Apr 2007 12:00:00 GMT

       

    </channel>
</rss>

Et j'ai créer un formulaire pour me permettre d'ajouter un flux automatiquement . Seulement voila j'ai un problème. Je voudrait écrire mon nouvel item la ligne en dessous du dernié de mon fichier. J'ai donc crée le code suivant :

<?
$titre = $_POST['textfield'];
$url = $_POST['textfield2'];
$desc = $_POST['textfield2'];
$dpub = $_POST['textfield3'];

if(! $fichier = fopen("flux.xml","a+"))
{
    echo "Erreur fopen : flux.xml file";
}
else
{
    while (!feof($fichier))
    {
      $buffer = fgets($fichier,300);
      if(strcmp($buffer,"") == 0); // recherche du dernier
      {
        $posi = ftell($fichier); // on sauvegarde la position où on est arrivé.
      }
   }
   
    fseek($fichier,$posi,SEEK_SET);
   
    fwrite($fichier,"\n\t\t");
    fwrite($fichier,'<title>'.$titre.'</title>');
    fwrite($fichier,'<link>'.$url.'</link>');
    fwrite($fichier,'<description>'.$desc.'</description>');
    fwrite($fichier,''.$dpub.'

');
    fwrite($fichier,"\n\t\t");
   
fclose($fichier);
}
?>

Cela m'écri bien ce que je veux, mais pas à la bonne place. Il me l'écrit tjrs en fin de fichier . On dirait que mon fseek() n'est jamais pris en compte. Quelqu'un peut-il m'aider svp ?

Merci d'avance.

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]

5 réponses

Messages postés
2480
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
Salut,

Pourquoi ne pas utiliser SimpleXML ?
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
42
Salut
neigedhiver, fait des benchs, a mon avis, simplexml n'arrive pas a la cheville d'un code parse a la main...

une recherche sur exalead vous aurait peut-etre evite de poser cette question

In a dream, I saw me, drop dead...
U were there, U cried...
It was just a dream,
if I die, U won't cry, maybe, U'll be happy
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
Yop,

et ehu je devrai rechercher quoi sur exalead? Je ne voi pas en quoi cela résoudrait mon problème :D

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
Messages postés
1
Date d'inscription
dimanche 18 septembre 2005
Statut
Membre
Dernière intervention
5 juin 2007

au lieux d'utiliser le fseek ,supprimer le derner </channel> </rss> puis ajouter votre item puis fermer  le fichier par </channel></rss>

               
Messages postés
192
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
10 août 2009

L'erreur est la

if(! $fichier = fopen("flux.xml","a+"))

remplace a+ par r+

if(! $fichier = fopen("flux.xml","r+"))
et reessaye cela devrait marché.

Renseigne toi sur la fonction fopen sur intrnet pour comprendre les différents paramètre de la foncrion
a,a+,r,r+,w,w+