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

Langage PHP Discussion :

Creation d'un flux rss


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 162
    Points : 56
    Points
    56
    Par défaut Creation d'un flux rss
    Bonjour,

    Je cherche à faire un flux rss en php. Je récupere x dernier résultats dans une bdd et je créer mon xml.
    Tout est ok SAUF la date et l'indentation !
    Je m'explique :

    La date est de la forme : 2008-06-17 10:30:56 GMT. Elle est bien présente dans le xml <pubDate>2008-06-17 10:30:56 GMT</pubDate> mais elle n'est pas "visible" dans firefox ou ie lorsque je veux lire mon xml.

    De plus la source du xml n'est pas indenté (dans un explorer) : tout est sur une ligne (donc pas très lisible)

    Voici la construction :
    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
     
     
        $xml = '<?xml version="1.0" encoding="iso-8859-1"?>
    <rss version="2.0">';
        $xml .= '<channel>'; 
            $xml .= '<title>xxxxx</title>';
            $xml .= '<link>xxxxxxxxxx</link>';
            $xml .= '<description>xxxxxxx</description>';
            while($postXml = mysql_fetch_assoc($arrayPost)){    
                $xml .= '<item>';
                    $xml .= '<title>'.$titre.'</title>';
                    $xml .= '<link>'.$lien.'</link>';
                    $xml .= '<pubDate>'.$pubDate.'</pubDate>'; 
                    $xml .= '<description>'.$description.'</description>';
                $xml .= '</item>';
            }
        $xml .= '</channel>';
        $xml .= '</rss>';
    Est ce que j'ai oublié quelque chose ?

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Bonjour,

    pubDate devrait etre du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <pubDate>Fri, 10 Apr 2009 00:00:00 +0200</pubDate>
    Pour cela tu peux utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $x_date = date("r", strtotime($post_Xml['date']));
     
    $xml .= '<pubDate>' . $x_date . '</pubDate>';

  3. #3
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 222
    Points
    8 222
    Billets dans le blog
    17
    Par défaut
    Pour la date :
    Apparemment tu n'utilises pas le bon format.
    Cf. http://www.rssboard.org/rss-specific...mentOfLtitemgt

    Pour l'affichage :
    Tu dois certainement l'afficher en text/plain ou text/html.
    Envoi au moins un Content-Type: text/xml, "au moins" dans le sens où il y a peut-être un type MIME plus adapté pour un flux RSS2.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    header('Content-Type: text/xml') ;
    echo $rss ;
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  4. #4
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Points : 434
    Points
    434
    Par défaut
    Concernant l'indentation de ton xml, ça ne prend pas en compte l'indentation de ton fichier/script. Tu dois utiliser les caractères de contrôle comme cette exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $xml .= "\t<title>xxxxx</title>\n";

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 162
    Points : 56
    Points
    56
    Par défaut
    Désolé de répondre si tard.

    Merci pour vos réponses si rapide.
    La date à l'air de fonctionnée (un grand merci à n1bus) mais elle est décalée..
    Ex: Dans la base j'ai 11h55 et dans le xml j'ai environ +2H.
    La fin de ma date format "rfc2822" se termine par +200 est ce normal ?

    Par contre l'indentation ne fonctionne pas. Si je met \t ou \n il sont présent dans la source. ( \t<item>.....\n).

    Merci pour votre aide

  6. #6
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 222
    Points
    8 222
    Billets dans le blog
    17
    Par défaut
    Tu as \t qui apparaît parceque dans ton PHP tu utilises des ' pour délimiter tes chaînes au lieu des "
    La doc à ce propos : http://fr.php.net/manual/fr/language.types.string.php
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 162
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Tu as \t qui apparaît parceque dans ton PHP tu utilises des ' pour délimiter tes chaînes au lieu des "
    La doc à ce propos : http://fr.php.net/manual/fr/language.types.string.php
    Merci pour ta réponse. je vais tester ça dès que possible.
    Sinon pour l'heure as tu une idée?

    Encore merci

  8. #8
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 222
    Points
    8 222
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par coupolites Voir le message
    Sinon pour l'heure as tu une idée?
    A quel propos ?
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  9. #9
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 222
    Points
    8 222
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par Séb. Voir le message
    A quel propos ?
    Oups OK, je pense que c'est normal, la spéc doit travailler en temps universel, mais à vérifier, je ne connaîs pas bien le sujet.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  10. #10
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Citation Envoyé par coupolites Voir le message
    Désolé de répondre si tard.

    Merci pour vos réponses si rapide.
    La date à l'air de fonctionnée (un grand merci à n1bus) mais elle est décalée..
    Ex: Dans la base j'ai 11h55 et dans le xml j'ai environ +2H.
    La fin de ma date format "rfc2822" se termine par +200 est ce normal ?

    La RFC2822 : date au format UTC (GMT)

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 162
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par N1bus Voir le message
    La RFC2822 : date au format UTC (GMT)
    Quel est le nom du format avec +0200 ?

    Merci

  12. #12
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Points : 434
    Points
    434
    Par défaut
    +200, c'est le fuseau horaire Europe/Paris avec Daylight Time Saving.

Discussions similaires

  1. [MySQL] pb de creation flux rss
    Par urbalk dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 23/06/2007, 16h23

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