écriture dans fichier.

deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 - 2 juin 2007 à 16:22
dvdstory Messages postés 192 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 10 août 2009 - 11 juin 2007 à 17:57
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

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
2 juin 2007 à 19:53
Salut,

Pourquoi ne pas utiliser SimpleXML ?
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
2 juin 2007 à 22:27
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
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
3 juin 2007 à 10:04
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]
0
amim_123 Messages postés 1 Date d'inscription dimanche 18 septembre 2005 Statut Membre Dernière intervention 5 juin 2007
3 juin 2007 à 23:10
au lieux d'utiliser le fseek ,supprimer le derner </channel> </rss> puis ajouter votre item puis fermer  le fichier par </channel></rss>

               
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dvdstory Messages postés 192 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 10 août 2009
11 juin 2007 à 17:57
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+
0
Rejoignez-nous