Partage
  • Partager sur Facebook
  • Partager sur Twitter

Création Flux RSS ! un petit peu d'aide

    20 avril 2006 à 15:58:49

    Bonjour,

    Voila je vais vous apporter un petit peu d'aider pour rendre vos pages php ou vos scripts compatible RSS pour les diffuser sur les autres sites.

    Après avoir fais une petite recherche, il vous faudra 2 choses :
    - une librairie php
    - une base de données

    Ou trouver les librairies ?
    Quelques librairies intéressantes à mes yeux (certainement à compléter) :
    - la classe rss_write
    - la classe EasyRSS
    - la classe Feedcreator

    Celle que je vous conseille car c'est celle que j'ai utilisé ou j'ai eut le moins de difficulté à utiliser est Feedcreator.


    Citation : Pas de titre

    <?
    include("feedcreator.class.php");

    $rss = new UniversalFeedCreator();
    $rss->useCached();
    $rss->title = "PHP news"; // indiquer le titre de votre flux
    $rss->description = "daily news from the PHP scripting world"; // indiquer la description
    $rss->link = "http://www.dailyphp.net/news"; // indiquer le lien
    $rss->syndicationURL = "http://www.dailyphp.net/".$PHP_SELF; // ayant eut quelques probleme avec le PHP_SELF j'ai supprimé cette partie du code

    $image = new FeedImage();
    $image->title = "dailyphp.net logo"; // indiquer le titre de l'image
    $image->url = "http://www.dailyphp.net/images/logo.gif"; // indiquer l'url du logo
    $image->link = "http://www.dailyphp.net"; // indiquer le lien du site
    $image->description = "Feed provided by dailyphp.net. Click to visit."; // indiquer la descirption
    $rss->image = $image;

    // get your news items from somewhere, e.g. your database:
    mysql_select_db($dbHost, $dbUser, $dbPass); // indiquer vos paramètres de connexion
    $res = mysql_query("SELECT * FROM news ORDER BY newsdate DESC");
    while ($data = mysql_fetch_object($res)) {
    $item = new FeedItem();
    $item->title = $data->title; // indiquer le champ titre de votre table
    $item->link = $data->url; // indiquer le champ url de votre table
    $item->description = $data->short; // indiquer le champ contenu ou description de votre table
    $item->date = $data->newsdate; // indiquer le champ date de votre table
    $item->source = "http://www.dailyphp.net"; // la source ou adresse
    $item->author = "John Doe"; // l'auteur

    $rss->addItem($item);
    }

    $rss->saveFeed("RSS1.0", "news/feed.xml"); // n'oubliez pa de créer le rep news et de lui mettre les permissions 777
    ?>



    Quelques infos supplémentaires :
    - connexion à la base de donnée

    Citation : Pas de titre

    mysql_connect("localhost", "root", "votremotdepasse"); // Connexion à MySQL
    mysql_select_db("rss"); // Sélection de la base de donnée 'rss'



    - lien syndication :
    Etant donné que je n'avais pas de champ lien dans ma table j'ai utilisé les variables id et date pour mon script.
    L'exemple :

    Citation : Pas de titre

    $item->link = "http://127.0.0.1/monsite/event.php?$data->date_champ_table.event.$data->id_champ_table";



    Avantage de ce script :
    - Génere un fichier xml qu'après vous pouvez utiliser dans votre lecteur de flux rss.

    Inconvéniant :
    - Si vous voulez réaliser la syndication de vos données spécifiquement suivant les catégories, il faudra créer plusieurs générations de fichiers xml. Il est totalement possible à mon avis de compléter ce script en y ajoutant quelques options supplémentaires tels que : Choix de la catégorie que vous souhaitez syndiquer puis création du fichier xml portant le nom de votre section à l'aide de variable.

    Si des gens sont prêts à améliorer le script faite moi signe par email : arwaen@hotmail.com


    • Partager sur Facebook
    • Partager sur Twitter
      20 avril 2006 à 16:04:17

      Tu devrais mettre cette missive dans les tutaux!! ça aiderais, j'ai été confronté à ce problème et personne ne m'a aidé sur le site du Zer0, c'est dommage.
      • Partager sur Facebook
      • Partager sur Twitter
        20 avril 2006 à 16:08:50

        Si tu as des solutions a apporter ou des compléments poste les ici.

        J'aimerai avoir un article assez robuste avant de le publier dans la partie tutos, histoire que tous le monde sache comment faire
        • Partager sur Facebook
        • Partager sur Twitter
          20 avril 2006 à 16:10:20

          Un tuto ! Un tuto ! Un tuto !
          • Partager sur Facebook
          • Partager sur Twitter
            20 avril 2006 à 16:27:18

            J'ai récupéré un code qui créer un Flux RSS avec du PHP et des données de la table news d'une base de donnée.
            Je ne suis pas encore en mesure de le tester mais en regardant comme ça, je pense qu'il est bon.

            Le voici :
            <?php

            // La table s'appelle news, les variables utilisées sont :
            //datepubli : bigint(20)  --> Date de publication de la news (timestamp crée avec la fonction time(); ).
            //titre : varchar  --> Titre de la news
            //description : varchar  --> Description de la news
            //id : tinyint(3)  --> id de la news pour le lien

            function gen_RSS() {

            // En-tête du flux RSS version 2.0
            $xml = '<?xml version="1.0" encoding="ISO-8859-1"?><rss version="2.0">';
            $xml .= '<channel><title>monsite.com</title><link>http://www.monsite.com/</link>';
            $xml .= '<description>description de votre site</description><language>fr-fr</language><copyright>Copyright 2004 monsite.com</copyright>';

            // Ajout de la date actuelle de publication (suivant la DTD RSS)
            $xml .= '<lastBuildDate>'.date("D, d M Y H:i:s").' GMT</lastBuildDate>';

            // En-tête suite et fin
            $xml .= '<docs>http://www.stervinou.com/projets/rss/</docs><category>Catégorie de votre site</category><managingEditor>managingEditor@monsite.com</managingEditor><webMaster>managingEditor@monsite.com</webMaster>';
            $xml .= '<ttl>60</ttl><image><title>monsite.com</title><url>http://www.monsite.com/logo.gif</url><link>http://www.monsite.com/</link></image>';

            // paramêtres de connection à votre base de donnée
            mysql_connect($host,$login,$password);
            mysql_select_db($bdd);

            // Sélection des 10 premières news triées de la plus récente à la plus ancienne
            $Result = mysql_query("SELECT * FROM news ORDER BY datepubli DESC LIMIT 0,10");

            // Creation des items : titre + lien + description + date de publication
            while($val=mysql_fetch_array($Result)) {
                    $xml .= '<item>';
                    $xml .= '<title>'.$val["titre"].'</title>';
                    $xml .= '<link>http://www.monsite.com/news.php?id='.$val["id"].'</link>';
                    $xml .= '<description>'.$val["description"].'</description>';
                    $xml .= '<pubDate>'.date("D, d M Y H:i:s",$val["datepubli"]).' GMT</pubDate>';
                    $xml .= '</item>';
            }

            // Déconnexion
            mysql_close();

            // Fin du flux
            $xml .="</channel></rss>";

            // Ecriture du flux dans un fichier xml
            $fp = fopen("rss.xml", 'w+');
                  fputs($fp, $xml);
            fclose($fp);

            }
            ?>


            Comme je viens de le dire, je l'ai pas encore tester, mais si ça intéresse quelqu'un, recopié le !! Mais essayé le par vous même ! Faites pas comme moi ! lol

            Si il fonctionne : ou si il y a des Couack, n'hésitez pas !! Dites le moi!

            • Partager sur Facebook
            • Partager sur Twitter
              20 avril 2006 à 17:15:14

              effectivement vraiment intéressant, je vais le tester.

              En tout cas il est propre et facile à comprendre

              Bon ca n'a pas l'air de marché, enfin il ne crée pas de fichier xml, et il n'affiche pas d'erreur bizzare !

              il manque pas une classe ou quelques choses comme ca ?
              • Partager sur Facebook
              • Partager sur Twitter

              Création Flux RSS ! un petit peu d'aide

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown