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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    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 confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    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 :resolu: (en bas)

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    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 confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    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 :resolu: (en bas)

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Par défaut ouh la
    merci pour ton aide.

    Excuse mon ignorance :

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

    Est cela ?

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

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    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 :resolu: (en bas)

+ 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