1. ✅ Apprenez une METHODE qui marche pour votre SEO ! Formation à distance avec Olivier Duffez et Fabien Facériès + aide pour prise en charge du financement
    Rejeter la notice

Création d'un flux RSS (problème d'affichage)

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Chewy, 22 Février 2010.

  1. Chewy
    Chewy Nouveau WRInaute
    Inscrit:
    22 Février 2010
    Messages:
    7
    J'aime reçus:
    0
    Bonjour à tous,

    Je viens vers vous car j'ai besoin d'aide après avoir bien galéré.

    Je souhaite créer un flux RSS pour mon site afin de permettre aux visiteurs de pouvoir suivre les actualités qui sont mises en ligne chaque jour.
    Je me suis inspiré de la méthode "Création et lecture de flux RSS 2.0 en PHP" (http://ghostdogpr.developpez.com/articles/rss/) , et je me retrouve bloqué. Etant assez novice dans tout ce qui est PHP, XML... je dois dire que je galère complet.

    Quelques explications sur le fonctionnement de mon site : pour ajouter des news sur mon site, j'ai une base de données MySQL via phpMyAdmin avec un back office pour me permettre d'ajouter une actu (titre, image, contenu...) le plus simplement possible. Pour la version de PHP, il s'agit de la version 4. Et donc je souhaiterais que dès que j'ajoute une actu sur le site, cet ajout se fasse également dans le fichier XML.
    Actuellement, seule les dates s'affichent dans le fichier XML. Vous pouvez le voir à cette adresse : http://www.cryptoseries.fr/rss/actus.xml.
    Le problème viendrait peut-être de cette partie de code quand j'essaye d'appeler les champs de la base où seule la date est vraiment appelée ou créée.

    $xml .= '<item>';
    $xml .= '<title>'.$tab["titre"].'</title>';
    $xml .= '<link>http://www.cryptoseries.fr/</link>';
    $xml .= '<pubDate>'.$date.' GMT</pubDate>';
    $xml .= '<description>'.$tab["content"].'</description>';
    $xml .= '</item>';

    Quand je laisse comme ça, ça donne ce qui est affiché avec seulement les dates dans le fichier xml. Dès que je change cet appel en remplaçant "titre" par "Title" et "content" par "Contenu" (qui sont pourtant les noms des champs dans ma base), il n'y a plus aucun affichage. Bizarre tout ça. Du coup je suis vraiment perdu...

    J'espère que certains d'entre vous pourront m'éclairer. Je reste bien entendu à votre disposition pour en discuter, vous apporter plus d'éléments, etc. Bref n'hésitez pas et surtout merci d'avance pour vos contributions.

    @+
    Chewy
     
  2. nza2k
    nza2k WRInaute impliqué
    Inscrit:
    16 Janvier 2004
    Messages:
    898
    J'aime reçus:
    2
    Hello,

    Je ne sais pas si ton site est récent ou pas, si tu as bcp de contenu... Mais as-tu réfléchi à installer un CMS gratuit pour gérer ton contenu et obtenir différentes fonctionnalités clé en main. Je pense par exemple à Wordpress : gratuit et open source :)

    Sinon, t'as essayé avec ça autour de tes champs textes :
    <![CDATA[ ]]>

    Et ta variable $date, elle sort d'où ? Pourquoi n'est-elle pas dans un tableau comme content et title ? N'aurais-tu pas fait un extract() auparavant ?
     
  3. Emorej
    Emorej WRInaute discret
    Inscrit:
    25 Octobre 2007
    Messages:
    90
    J'aime reçus:
    0
    Il faudrait que tu nous montres la partie de ton code qui remplit $tab. Manifestement $tab est vide quand tu affectes une valeur à $xml.
     
  4. Chewy
    Chewy Nouveau WRInaute
    Inscrit:
    22 Février 2010
    Messages:
    7
    J'aime reçus:
    0
    Bonjour,

    Mon site a presque 4 ans et il y a pas mal de contenu. L'idée du CMS, j'y ai pensé mais j'aime l'idée de devoir tout faire à la main même si je galère pas mal :lol:

    Je vais faire le test et je vous tiendrai au courant.

    Donc voici la partie de mon code avec $tab (tout ce qui concerne xml en fait) en espérant que ça pourra vous aider. Sachant que ce code est placé dans le fichier qui envoit des données (actualités) vers la BDD.

    Code:
    $xml = '<?xml version="1.0" encoding="iso-8859-1"?><rss version="2.0">';
    		$xml .= '<channel>'; 
    		$xml .= '<title>Les actualités séries de la Crypte aux séries</title>';
    		$xml .= '<link>http://www.cryptoseries.fr</link>';
    		$xml .= '<description>Retrouvez toutes les actualités de vos séries anciennes et récentes sur le flux de la Crypte aux séries</description>';
    		
    		$res=mysql_query("SELECT * FROM news ORDER BY id DESC LIMIT 10") or die("Erreur SQL : ".mysql_error());
    
    		// extraction des informations et ajout au contenu
    		while($tab=mysql_fetch_array($res)){
    			$date=date("D, d M Y H:i:s", strtotime($tab["date"]));
    
    			$xml .= '<item>';
    			$xml .= '<title>'.$tab["titre"].'</title>';
    			$xml .= '<link>http://www.cryptoseries.fr/</link>';
    			$xml .= '<pubDate>'.$date.' GMT</pubDate>'; 
    			$xml .= '<description>'.$tab["content"].'</description>';
    			$xml .= '</item>';	
    		}
    
    		$xml .= '</channel>';
    		$xml .= '</rss>';
    
    		$fp = fopen("../../rss/actus.xml", 'w+');
    		fputs($fp, $xml);
    		fclose($fp);
    		mysql_close();
    Vous remerciant par avance pour votre aide.
     
  5. Emorej
    Emorej WRInaute discret
    Inscrit:
    25 Octobre 2007
    Messages:
    90
    J'aime reçus:
    0
    Et si tu ajoutes un
    Code:
    var_dump($tab);
    juste au début de ta boucle while, qu'est ce qu'il affiche ?
     
  6. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 239
    J'aime reçus:
    0
    Salut,

    Pour moi, soit ta requête est erroné, (ce qui m'étonnerai puisque ta variable $tab["date"] fonctionne), soit une ou des variables en sortit provoque un bug. Essaye d'appliquer un <![CDATA[*****]]> sur les titres et descriptions.
    Code:
    $xml .= '<title><![CDATA['.$tab["titre"].']]></title>';
    $xml .= '<description><![CDATA['.$tab["content"].']]></description>';
    
    Par ailleurs ta ligne $xml .= '<link>http://www.cryptoseries.fr/</link>'; n'est pas correcte ... elle est censé indiquer l'url des pages concernées et non l'index de ton site.
     
  7. Chewy
    Chewy Nouveau WRInaute
    Inscrit:
    22 Février 2010
    Messages:
    7
    J'aime reçus:
    0
    Alors ça m'affiche les infos mais dans la page du code php et xml, c'est à dire la page de gestion qui envoi les données à la BDD.

    ça n'affiche rien, voici ce que ça me donne :
    Code:
    <description>
    - <![CDATA[ 
      ]]> 
      </description>
    Merci pour l'info, je vais essayer d'y remédier.

    C'est vraiment galère tout ça, mais merci pours vos contributions.
     
  8. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 239
    J'aime reçus:
    0
    ça donne quoi un echo $tab["titre"]; et un echo de $tab["content"]; dans ta boucle ?
    Tu as quelque chose qui ressort ou c'est le vide total?
     
  9. Chewy
    Chewy Nouveau WRInaute
    Inscrit:
    22 Février 2010
    Messages:
    7
    J'aime reçus:
    0
    C'est le vide total.
    je l'ai inséré comme ceci :

    Code:
    // extraction des informations et ajout au contenu
    		while($tab=mysql_fetch_array($res)){
    			echo $tab["titre"];
    			$date=date("D, d M Y H:i:s", strtotime($tab["date"]));
    
    			$xml .= '<item>';
    			$xml .= '<title>'.$tab["titre"].'</title>';
    			$xml .= '<link>http://www.cryptoseries.fr/</link>';
    			$xml .= '<pubDate>'.$date.' GMT</pubDate>'; 
    			$xml .= '<description>'.$tab["content"].'</description>';
    			$xml .= '</item>';	
    		}
     
  10. Emorej
    Emorej WRInaute discret
    Inscrit:
    25 Octobre 2007
    Messages:
    90
    J'aime reçus:
    0
    Les indices de $tab doivent contenir l'exact libellé des champs de ta table news : est ce que c'est bien le cas ? ($tab["nom du champ de table news"])
     
  11. silef
    silef WRInaute occasionnel
    Inscrit:
    13 Janvier 2006
    Messages:
    296
    J'aime reçus:
    0
    A la place de
    Code:
    echo $tab["titre"];
    Fais
    Code:
    print_r($tab);
    Ca te permettra déjà de voir les index qui sont récupérés lors de ta requête et de vérifier que cela ne vient pas de titre ou content.
     
  12. anemone-clown
    anemone-clown WRInaute passionné
    Inscrit:
    11 Novembre 2007
    Messages:
    1 599
    J'aime reçus:
    20
    Bien joué! Au moins, il y aura vérification que la requête SQL renvoie quelque chose... Quoiqu'à la base, il faudrait mieux tester $res pour savoir si c'est vide ou rempli.
     
  13. silef
    silef WRInaute occasionnel
    Inscrit:
    13 Janvier 2006
    Messages:
    296
    J'aime reçus:
    0
    Ben la requête semble tourner puisque le flux n'affiche que les dates, c'est pour ça que je me suis intéressé à $tab directement.
     
  14. Chewy
    Chewy Nouveau WRInaute
    Inscrit:
    22 Février 2010
    Messages:
    7
    J'aime reçus:
    0
    Etant au boulot je testerai tout ça ce soir.
    En tout cas, merci pour votre réactivité, ça fait plaisir car je me sentais bien seul avec ce problème que je n'arrive pas à régler depuis déjà pas mal de temps.

    Je vous tiens au courant dans la soirée.
     
  15. anemone-clown
    anemone-clown WRInaute passionné
    Inscrit:
    11 Novembre 2007
    Messages:
    1 599
    J'aime reçus:
    20
    Ben oui, mais... on ne sait pas si c'est la bonne date et si elle varie à chaque occurence. :wink: Le traitement préalable par la fonction Date va forcément renvoyer un résultat (quel qu'il soit), d'où son affichage dans l'echo.
     
  16. Chewy
    Chewy Nouveau WRInaute
    Inscrit:
    22 Février 2010
    Messages:
    7
    J'aime reçus:
    0
    Bonsoir à tous,

    Donc j'ai réessayé la méthode d'Emorej et finalement ça fonctionne. Je n'avais pas mis correctement le nom des champs de ma base. Donc merci beaucoup pour son aide et celle de tous ceux qui ont participé.
    Mes problèmes ne sont pas cependant pas totalement terminés. J'ai une question concernant toujours ce satané affichage. A présent, il n'y a pas de souci, les actualités s'affichent bien quand on s'abonne par exemple à iGoogle ou Netvivbes, par contre en marque-page dynamique ou même directement en ouvrant le fichier http://www.cryptoseries.fr/rss/actus.xml, le contenu ne s'affiche toujours pas. Pour le coup je ne comprends pas la subtilité. Auriez-vous une idée ?

    Et pour ceux qui n'en n'auront pas marre de moi, je reste intéressé pour un peu d'aide pour rendre ce flux un peu plus attrayant avec affichage de l'image de l'actualité et insertion du lien de l'actualité :mrgreen:

    Encore merci pour votre aide en tout cas car sans vous je ne serais pas allé bien loin.
     
  17. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 239
    J'aime reçus:
    0
    Des mauvais nom de champ ... on va le manger lui :mrgreen: !

    Utilise <![CDATA[$ta_variable]]> pour tes descriptions.

    Étant donné que tu affiche tes actualités, tu modifies tes liens en conséquence :
    Code:
    $xml .= '<link>http://www.cryptoseries.fr/Actus/page-actu.php?id='.$id.'</link>';
    Il va de soit qu'il faut que tu effectues la requête pour allé chercher la variable $id.
     
  18. anemone-clown
    anemone-clown WRInaute passionné
    Inscrit:
    11 Novembre 2007
    Messages:
    1 599
    J'aime reçus:
    20
    C'est clair! :mrgreen: Comme quoi, les idées de vérifier le contenu de la requête sql étaient le bon point de départ...
     
  19. Emorej
    Emorej WRInaute discret
    Inscrit:
    25 Octobre 2007
    Messages:
    90
    J'aime reçus:
    0
    Allez, va, ça nous est tous arrivé un jour... 8O Bon, peut être pas ça... :lol:

    Pour afficher une image, il suffit en général qu'il y ait un <img src... dans le contenu de ta balise <description></description> pour que les lecteurs de flux l'affichent. Ce n'est pas le plus propre (il faudrait utiliser une balise <enclosure> ) mais le plus simple à mon avis.
     
  20. Chewy
    Chewy Nouveau WRInaute
    Inscrit:
    22 Février 2010
    Messages:
    7
    J'aime reçus:
    0
    Salut tout le monde,

    Bon je viens avec de bonnes nouvelles. Le script a l'air de fonctionner. Je dis bien "a l'air" car depuis chez moi ça fonctionne avec IE et Firefox, et au boulot ça fonctionne avec IE mais pas avec Firefox. Après ça vient peut-être du proxy... enfin je ne sais pas trop. Vous pouvez vérifier de votre côté si vous êtes tenté :mrgreen: http://www.cryptoseries.fr/rss/actus.xml

    En tout cas je vous dis un grand merci à tous pour votre aide. Cela faisait quelques semaines que je galérais avec ça et vous m'ôtez une épine du pied. Il me reste à présent quelques ajouts à faire, comme l'image, le lien... vous m'avez déjà donné des pistes, donc je vais m'y pencher ce week-end et je reviens vers vous pour vous tenir au courant... car j'aurai peut-être besoin d'aide :roll:

    Encore merci.
     
  21. anemone-clown
    anemone-clown WRInaute passionné
    Inscrit:
    11 Novembre 2007
    Messages:
    1 599
    J'aime reçus:
    20
    Ca fonctionne avec Opera 10. ;-)
     
Chargement...
Similar Threads - Création flux RSS Forum Date
Quelle date dans <pubDate> pour flux RSS : création ou dernière modification? Crawl et indexation Google, sitemaps 24 Mai 2016
Création d'un flux RSS avec PHP, problème récurrent avec getElementById Développement d'un site Web ou d'une appli mobile 13 Juin 2010
Création d'une rubrique communiqués sur mon site Développement d'un site Web ou d'une appli mobile 19 Août 2020
Xenforo est-il un outil de création de forum adapté aux petites structures Demandes d'avis et de conseils sur vos sites 20 Avril 2020
Création de catégories et SEO ? Débuter en référencement 19 Avril 2020
Création d'un nouveau site dans un site déjà existant Débuter en référencement 16 Avril 2020
Création d'une vue Google Analytics sans sous-répertoires Google Analytics 5 Mars 2020
Création d'entonnoirs de conversion depuis les différentes campagnes d'acquisition Google Analytics 5 Février 2020
Création de sous domaine utile ? Noms de domaine et référencement 23 Janvier 2020
Création URL de redirection pour Référencement google my business Débuter en référencement 7 Décembre 2019