IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[XML] Génération fichier XML pour RSS via PHP, problème lors de l'écriture


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 30
    Points
    30
    Par défaut [XML] Génération fichier XML pour RSS via PHP, problème lors de l'écriture
    bonjour,

    j'ai un fichier maj-rss.php qui me génére un fichier fluxrss.xml devant affichier les 10 derniers articles de la base.

    Probléme, il me génére bien le départ avec les infos, mais ne m'insére pas les dix derniers articles !

    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    38
    39
    40
    41
    42
    43
    44
    45
    <?php
    $xml = '<?xml version="1.0" encoding="iso-8859-1"?><rss version="2.0">';
    $xml .= '<channel>'; 
    $xml .= '<title>Militaria.fr</title>';
    $xml .= '<link>http://www.militaria.fr</link>';
    $xml .= '<description>Achat et vente de militaria de collection </description>';
    $xml .= '<copyright>© Militaria.fr</copyright>';
    $xml .= '<language>fr</language>';
    $xml .= '<image>';
    $xml .= '    <title>Militaria.fr</title>';
    $xml .= '    <url>http://www.militaria.fr/rss/rss.gif</url>';
    $xml .= '    <link>http://www.Militaria.fr</link>';
    $xml .= '</image>';
    $jourdui= date("D, d M Y H:i:s +0100");
    $xml .= '<pubdate>'.$jourdui.'</pubdate>';
     
    require ('connect.php'); 
     
    $res=mysql_query("select * from  kpro_shop_articles order by date desc limit 0, 10");
     
    // extraction des 10 dernièrs articles
    while($lig=mysql_fetch_array($res)){   
            $title=$lig[tag];
            $adresse=$lig[adresse];
            $descr=$lig[descr];
            $madate=$lig[jourdui];
            $datephp=date("D, d M Y H:i:s +0100", strtotime($madate));
     
                $xml .= '<item>';
                $xml .= '<title>'.$title.'</title>';
                $xml .= '<link>'.$adresse.'</link>';
                $xml .= '<pubDate>'.$datephp.'</pubDate>'; 
                $xml .= '<description>'.$descr.'</description>';
                $xml .= '</item>';    
        }
     
    $xml .= '</channel>';
    $xml .= '</rss>';
     
    $fp = fopen("fluxrss.xml", 'w+');
    fputs($fp, $xml);
    fclose($fp);
     
    echo 'Export XML effectue !<br><a href="fluxrss.xml">Voir le fichier</a>';
    ?>
    Alors là, je patauge !

    En live, cela donne :http://www.militaria.fr/rss/maj-rss.php

    merci de votre aide

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Salut !

    essaie de remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $res=mysql_query("select * from  kpro_shop_articles order by date desc limit 0, 10");
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $res=mysql_query("select * from  kpro_shop_articles order by date desc limit 0, 10") or die(mysql_error());
    et fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo mysql_num_rows($res);
    avant le while
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 30
    Points
    30
    Par défaut c'est presque cela !
    merci et bien vu, j'ai mis ton code et seulement j'ai classé par descr ( description )
    Il me cause une erreur mais si je récupré le fichier xml généré, j'ai déla les artiocles dedans;

    Voici le code modifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    38
    39
    40
    41
    42
    43
    44
    45
    <?php
    $xml = '<?xml version="1.0" encoding="iso-8859-1"?><rss version="2.0">';
    $xml .= '<channel>'; 
    $xml .= '<title>Militaria.fr</title>';
    $xml .= '<link>http://www.militaria.fr</link>';
    $xml .= '<description>Achat et vente de militaria de collection </description>';
    $xml .= '<copyright>© Militaria.fr</copyright>';
    $xml .= '<language>fr</language>';
    $xml .= '<image>';
    $xml .= '    <title>Militaria.fr</title>';
    $xml .= '    <url>http://www.militaria.fr/rss/rss.gif</url>';
    $xml .= '    <link>http://www.Militaria.fr</link>';
    $xml .= '</image>';
    $jourdui= date("D, d M Y H:i:s +0100");
    $xml .= '<pubdate>'.$jourdui.'</pubdate>';
     
    require ('connect.php'); 
     
    $res=mysql_query("select * from  kpro_shop_articles order by  descr desc limit 0, 10") or die(mysql_error());
    echo mysql_num_rows($res);
    // extraction des 10 dernièrs articles
    while($lig=mysql_fetch_array($res)){   
            $title=$lig[tag];
            $adresse=$lig[adresse];
            $descr=$lig[descr];
            $madate=$lig[jourdui];
            $datephp=date("D, d M Y H:i:s +0100", strtotime($madate));
     
                $xml .= '<item>';
                $xml .= '<title>'.$title.'</title>';
                $xml .= '<link>'.$adresse.'</link>';
                $xml .= '<pubDate>'.$datephp.'</pubDate>'; 
                $xml .= '<description>'.$descr.'</description>';
                $xml .= '</item>';    
        }
     
    $xml .= '</channel>';
    $xml .= '</rss>';
     
    $fp = fopen("fluxrss.xml", 'w+');
    fputs($fp, $xml);
    fclose($fp);
     
    echo 'Export XML effectue !<br><a href="fluxrss.xml">Voir le fichier</a>';
    ?>

    Voici le lien de l'erreur http://www.militaria.fr/rss/maj-rss.php
    et voici le fichier xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="iso-8859-1"?><rss version="2.0"><channel><title>Militaria.fr</title><link>http://www.militaria.fr</link><description>Achat et vente de militaria de collection </description><copyright>© Militaria.fr</copyright><language>fr</language><image>    <title>Militaria.fr</title>    <url>http://www.militaria.fr/rss/rss.gif</url>    <link>http://www.Militaria.fr</link></image><pubdate>Sun, 14 May 2006 13:18:56 +0100</pubdate><item><title></title><link>www.militaria.fr</link><pubDate>Sun, 14 May 2006 00:00:00 +0100</pubDate><description><p>Tr&eacute;s bon &eacute;tat (Voir photos).</p></description></item><item><title></title><link>www.militaria.fr</link><pubDate>Sun, 14 May 2006 00:00:00 +0100</pubDate><description>Soupi&egrave;re du D.A.F, bien marqu&eacute;e &quot;MODELL DES AMTES - SCHONHEIT DER ARBEIT&quot; - &quot;BAUSCHER WEIDEN&quot;, diam&egrave;tre 25cm, porcelaine intacte, pas f&eacute;l&eacute;e ni &eacute;br&eacute;ch&eacute;e, tr&egrave;s bon &eacute;tat...(svastika (Croix gam&eacute;e), rendue &nbsp;floue pour pr&eacute;server la sensibilit&eacute; de chacun, mais intacte).</description></item><item><title></title><link>www.militaria.fr</link><pubDate>Sun, 14 May 2006 00:00:00 +0100</pubDate><description>Plaque 1er type, reste d'&eacute;tiquette papier&nbsp; dat&eacute;e 1880, tr&eacute;s bon &eacute;tat.</description></item><item><title></title><link>www.militaria.fr</link><pubDate>Sun, 14 May 2006 00:00:00 +0100</pubDate><description>Bon &eacute;tat, taille 56.</description></item><item><title></title><link>www.militaria.fr</link><pubDate>Sun, 14 May 2006 00:00:00 +0100</pubDate><description>Bon &eacute;tat (Voir photos).</description></item><item><title></title><link>www.militaria.fr</link><pubDate>Sun, 14 May 2006 00:00:00 +0100</pubDate><description>Sauci&egrave;re&nbsp;du D.A.F, bien marqu&eacute;e &quot;MODELL DES AMTES - SCHONHEIT DER ARBEIT&quot; - &quot;Rosenthal&quot;, &nbsp;porcelaine intacte, pas f&eacute;l&eacute;e ni &eacute;br&eacute;ch&eacute;e, tr&egrave;s bon &eacute;tat...(svastika (Croix gam&eacute;e), rendue &nbsp;floue pour pr&eacute;server la sensibilit&eacute; de chacun, mais intacte).</description></item><item><title></title><link>www.militaria.fr</link><pubDate>Sun, 14 May 2006 00:00:00 +0100</pubDate><description><p>Avec sa bretelle, sac avec marquage encore visible, idem sur bretelle, manque un bouton, sinon tr&eacute;s bon &eacute;tat.</p></description></item><item><title></title><link>www.militaria.fr</link><pubDate>Sun, 14 May 2006 00:00:00 +0100</pubDate><description>Rasoir US, 2&egrave;me guerre, &quot;Safety Rasor&quot;, de marque GILLETTE, dans sa boite, tr&eacute;s tr&eacute;s bon &eacute;tat.</description></item><item><title></title><link>www.militaria.fr</link><pubDate>Sun, 14 May 2006 00:00:00 +0100</pubDate><description>Bon &eacute;tat.</description></item><item><title></title><link>www.militaria.fr</link><pubDate>Sun, 14 May 2006 00:00:00 +0100</pubDate><description>Poste de radio Allemand &quot;Deutscher Kleinempf&auml;nger&quot;, 2&egrave;me guerre, petit mod&egrave;le (24cm X 24cm X 12cm), en bak&eacute;lite, &eacute;ssai de fonctionnement non r&eacute;alis&eacute;, bon &eacute;tat de conservation.</description></item></channel></rss>

    Il doit y avoir une petite erreur, mais la je séche, snif !


    et

  4. #4
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Salut !

    C'est parce que tu utilises des entitées HTML (j'ai d'ailleurs un peu de mal à voir comment elles arrivent là puisque tu n'utilises ni htmlentities ni htmlspecialchars...

    enfin... pour toutes les balises qui contiennent du texte qui ne doit pas être interprété (des bouts de HTML quoi) utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <balise><![CDATA[ {LE TEXTE} ]]></balise>
    ça devrait suffire

    je te conseillerais de le mettre sur les balises title, description, pubDate et copyright

    et ajoute des retours à la ligne dans ton fichier...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 30
    Points
    30
    Par défaut ouh la
    merci pour ton aide.

    Excuse mon ignorance :

    $xml .= '<title>'<![CDATA[ {$title} ]]>'</title>';

    Est cela ?

  6. #6
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    presque
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $xml .= '<title><![CDATA['.$title.']]></title>';
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 30
    Points
    30
    Par défaut super !
    Excellent, je te remercie, il me reste un seul probléme, il ne me ressort pas la variables la variable title , tout le rest est ok

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    38
    39
    40
    41
    42
    43
    44
    45
    <?php
    $xml = '<?xml version="1.0" encoding="iso-8859-1"?><rss version="2.0">';
    $xml .= '<channel>'; 
    $xml .= '<title>Militaria.fr</title>';
    $xml .= '<link>http://www.militaria.fr</link>';
    $xml .= '<description>Achat et vente de militaria de collection </description>';
    $xml .= '<copyright>© Militaria.fr</copyright>';
    $xml .= '<language>fr</language>';
    $xml .= '<image>';
    $xml .= '    <title>Militaria.fr</title>';
    $xml .= '    <url>http://www.militaria.fr/rss/rss.gif</url>';
    $xml .= '    <link>http://www.Militaria.fr</link>';
    $xml .= '</image>';
    $jourdui= date("D, d M Y H:i:s +0100");
    $xml .= '<pubdate>'.$jourdui.'</pubdate>';
     
    require ('connect.php'); 
     
    $res=mysql_query("select * from  kpro_shop_articles order by  id desc limit 0, 10") or die(mysql_error());
    echo mysql_num_rows($res);
    // extraction des 10 dernièrs articles
    while($lig=mysql_fetch_array($res)){   
            $title=$lig[tag];
            $adresse=$lig[adresse];
            $descr=$lig[descr];
            $madate=$lig[jourdui];
            $datephp=date("D, d M Y H:i:s +0100", strtotime($madate));
     
                $xml .= '<item>';
                $xml .= '<title><![CDATA['.$title.']]></title>';
                $xml .= '<link>'.$adresse.'</link>';
                $xml .= '<pubDate><![CDATA['.$datephp.']]></pubDate>'; 
                $xml .= '<description><![CDATA['.$descr.']]></description>';
                $xml .= '</item>';    
        }
     
    $xml .= '</channel>';
    $xml .= '</rss>';
     
    $fp = fopen("fluxrss.xml", 'w+');
    fputs($fp, $xml);
    fclose($fp);
     
    echo 'Export XML effectue !<br><a href="fluxrss.xml">Voir le fichier</a>';
    ?>

    Sinon, tout est bon, trop cool

    merci merci !

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 30
    Points
    30
    Par défaut RAS Tout est OK
    Salut,

    tout est ok, j'avais fais une co--lle dans le potage !

    encore merci pour ton savoir,

    Bon aprés midi ,

    Alex

  9. #9
    Candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Ancien post que je remonte

    J'ai le même code mais je voudrais arriver :
    à faire un query sur une limitation de 10 (jusque la pas de problème)
    Et que le soit regroupé en un seul et même item (les 10) dans le Cdata.

    Je m'arrache les cheveux avec la boucle
    Merci et à bientot

  10. #10
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 58
    Points : 23
    Points
    23
    Par défaut Problème XML
    J'ai bien réussi à écrire dans mon fichier xml mais par contre, lors de l'ouverture du fichier, je ne vois pas mes 10 nouvelles... Je ne vois que la derniere que j'ai mise, de même que 2 autres vieilles nouvelles qui ne sont meme pas dans ma bdd. J'ai pourtant fait la requete pour les 10 dernieres...

    C'est bizarre non?

  11. #11
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 58
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par DoumCSS Voir le message
    J'ai bien réussi à écrire dans mon fichier xml mais par contre, lors de l'ouverture du fichier, je ne vois pas mes 10 nouvelles... Je ne vois que la derniere que j'ai mise, de même que 2 autres vieilles nouvelles qui ne sont meme pas dans ma bdd. J'ai pourtant fait la requete pour les 10 dernieres...

    C'est bizarre non?
    Bon ok, on oublie ca; IE enregistre le flux, lorsqu'abonné mais lorsqu'on retourne sur ce même flux, on voit la vieille version...
    Bref, pas un problème de coding... :/ [ Résolu]
    lol

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Importation XML dans table via php ressources necessaires
    Par spawns dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/09/2015, 09h56
  2. Parsage XML/XSL via PHP: problème d'accentuation
    Par souffle56 dans le forum Langage
    Réponses: 0
    Dernier message: 03/07/2010, 20h05
  3. [XML] Générer RSS avec PHP
    Par CocoLeNain dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 03/04/2008, 23h20
  4. [DOM XML] Flux RSS en PHP
    Par vodasan dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 17/03/2008, 12h01
  5. Transformation xml + xsl -> HTML via PHP
    Par petit-ourson dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 19/10/2003, 22h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo