Probleme flux rss

Nouveau WRInaute
Salut tout le monde !

Bon j'ai un petit souci, j'ai passé la nuit dessu et finalement j'ai toujours pas trouver d'ou venais l'erreur

J'ai installer un flux RSS en php sur mon site... jusque la tout va bien.
Seulement voici ce que me donne mon fluxrss

http://www.informatique-inside.com/news/fluxrss.xml

J'ai uniquement les titres des derrnieres news, mais pas le liens qui correspond !

Voici une partie de mon code rss.php

Code:
 while($lig=mysql_fetch_assoc($resultat_requete)){ 
    $titre=$lig["titre"];
    $adresse=$lig["http://www.informatique-inside.com"];
    $id=$lig["id"];
    $contenu=$lig["contenu"];
    $date=$lig["date"];
    $datephp=date("D, d M Y H:i:s +0100", $date);
    $xml .= '<item>';
    $xml .= '<title>'.$titre.'</title>';
    $xml .= '<link>'.$adresse.'</link>';
    $xml .= '<guid>'.$adresse.'</guid>';
    $xml .= '<pubDate>'.$datephp.'</pubDate>'; 
    $xml .= '<description></description>';
    $xml .= '</item>';

Sur internet explorer, j'ai le format XML directement avec ce message ...

- <item>
<title>Nouveau réseau P2P sécurisé, Omemo, par le créateu</title>
<link />
<guid />
<pubDate>Thu, 01 Jan 1970 01:00:00 +0100</pubDate>
<description />
</item>

Finalement j'ai que le titre qui fonctionne, même l'heure, ça ne correspond pas !
Une petite aide ?

Merci :)
 
WRInaute impliqué
Salut,

Pour éviter qu'il n'y ait que le titre, faut compléter la description qui devrait contenir $contenu.

Ensuite pour l'url ce truc là me semble bizarre :

Code:
$adresse=$lig["http://www.informatique-inside.com"];

Tu as nommé un champ "http://www.informatique-inside.com ? 8O

Pour les fonctions de date je ne sais pas mais ta manipulation est de toute façon biscornue ...

++
 
WRInaute passionné
Problème de format ce qui fait que le texte est coupé quand il rencontre un accent.
Il faudrait convertir au format RSS en général UTF-8.

On peut aussi écrire plus simplement:

$xml .= "<title>$titre</title>";

(noter les doubles guillemets)
 
WRInaute impliqué
On peut aussi écrire plus simplement:

$xml .= "<title>$titre</title>";

C'est plus simple mais même avec une concaténation les quotes sont plus rapides à l'exécution que les guillemets doubles. La différence est minime mais je n'ai plus les chiffres en tête ...

++
 
Nouveau WRInaute
En faite j'ai mis
Code:
$adresse=$lig["http://www.informatique-inside.com"];

pour l'essaie ...
Normalement ça devrais plutôt être:

Code:
$adresse=$lig["http://www.informatique-inside.com//news/affichage.php?action=voir&id='id'"];

Pour l'encodage UTF-8 j'ai remplacer par
Code:
 $xml = '<?xml version="1.0" encoding="iso-8859-1" ?>';
pour que les caracteres spéciaux soit autorisé.

En revanche je comprend pas pourquoi mes variable de description au dessu fonctionne, et pas celle du flux en lui même :/

Pourtant j'ouvre et je referme bien les balises <link></link> etc ...
 
WRInaute impliqué
Normalement ça devrais plutôt être:

$adresse=$lig["http://www.informatique-inside.com/news/affichage.php?action=voir&id='id'"];

Soit je suis à la masse, soit le code que tu nous donnes pour t'aider ne correspond pas à celui que tu utilises vraiment, soit tu mélanges tout.

$lig c'est un tableau des résultats retournés par ta requête. Pour accéder à la valeur que contient chaque champ tu fais $lig['nom_champ'], or ça m'étonnerait que tu ais nommé un champ de cette manière donc cette variable devrait causer une erreur.

A mon avis ce que tu veux faire c'est plutôt :

Code:
$adresse = 'http://www.informatique-inside.com/news/affichage.php?action=voir&id='.$id.'';

Pourtant j'ouvre et je referme bien les balises <link></link> etc ...

Oui mais s'il n'y a rien dedans ça n'ira pas

Maintenant pour ta description faut voir l'encodage de caractères comme l'a souligné jeviensderio et la version rss que tu déclares.

Ce serait plus facile de t'aider avec le code complet tel que tu l'utilises ...

++
 
Nouveau WRInaute
Oula je mélange tout moi :?

Bon alors en effet, voici mon code rss.php qui genere mon fluxrss:

Code:
<?php
 $xml = '<?xml version="1.0" encoding="iso-8859-1" ?>';
 $xml .= '<rss version="2.0">'; 
 $xml .= '<channel>'; 
 $xml .= '<title>Informatique inside</title>';
 $xml .= '<link>http://www.informatique-inside.com</link>';
 $xml .= '<description>Actualite web et securite</description>';
 $xml .= '<copyright> Informatique-inside 2007</copyright>';
 $xml .= '<language>fr</language>';
 $xml .= '<image>';
 $xml .= ' <title>Actualite</title>';
 $xml .= ' <url>http://pretty-rss.snyke.com/img/pretty-rss-button.png</url>';
 $xml .= ' <link>http://www.informatique-inside.com</link>';
 $xml .= '</image>';
 $today= date("D, d M Y H:i:s +0100");
 //date du jour d'execution du fichier PHP
 $xml .= '<pubDate>'.$today.'</pubDate>';
 require ('XXXXPATHXXXX'); 
  // Faîtes appel à vos fichier de connection à votre base de donnée MySQL
  // Adaptez ces lignes à votre base de données / noms de table
  $resultat_requete=mysql_query("SELECT titre, id FROM news_ ORDER BY date DESC limit 0, 10");
  // extraction des 10 dernières nouvelles
  while($lig=mysql_fetch_assoc($resultat_requete)){ 
    $titre=$lig["titre"];
    $adresse="http://www.informatique-inside.com";
    $id=$lig["id"];
    $contenu=$lig["contenu"];
    $date=$lig["date"];
    $datephp=date("D, d M Y H:i:s +0100", $date);
    $xml .= '<item>';
    $xml .= '<title>'.$titre.'</title>';
    $xml .= '<link>'.$adresse.'</link>';
    $xml .= '<guid>'.$adresse.'</guid>';
    $xml .= '<pubDate>'.$datephp.'</pubDate>'; 
    $xml .= '<description></description>';
    $xml .= '</item>'; 
  }//fin du while
  $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>';
  ?>
 
Nouveau WRInaute
Bon y' aun mieux, j'arrive a rediriger tout sur le site en index.
Par contre ma variable id n'est pas pris en compte :roll:
 
WRInaute impliqué
Normal elle est déclarée après que tu l'appelles dans la variable adresse.

Intervertis les deux :

Code:
$id=$lig["id"]; 
$adresse='http://www.informatique-inside.com/news/affichage.php?action=voir&id='.$id.'';

Je regarde pour le reste 8)
 
Nouveau WRInaute
Merci pour ton aide en tout cas !! :)

Bon j'ai intervertis, mais le flux n'apparaît plus :/

J'ai intervertis comme ça hein

Code:
while($lig=mysql_fetch_assoc($resultat_requete)){ 
    $titre=$lig["titre"];
    $id=$lig["id"];
	$adresse = "http://www.informatique-inside.com/news/affichage.php?action=voir&id='.$id.";
    $contenu=$lig["contenu"];
    $date=$lig["date"];
    $datephp=date("D, d M Y H:i:s +0100", $date);

http://www.informatique-inside.com/news/fluxrss.xml :(
 
WRInaute impliqué
Pour la description ça irait mieux comme ça (si le champ contenu existe et qu'il contient bien la description en question) :

Code:
$resultat_requete=mysql_query("SELECT titre, id,contenu FROM news_ ORDER BY date DESC limit 0, 10");
  // extraction des 10 dernières nouvelles
  while($lig=mysql_fetch_assoc($resultat_requete)){
    $titre=$lig["titre"];
    $id=$lig["id"];
    $adresse = 'http://www.informatique-inside.com/news/affichage.php?action=voir&id='.$id.'';
    $contenu=$lig["contenu"];
    $date=$lig["date"];
    $datephp=date("D, d M Y H:i:s +0100", $date);
    $xml .= '<item>';
    $xml .= '<title>'.$titre.'</title>';
    $xml .= '<link>'.$adresse.'</link>';
    $xml .= '<guid>'.$adresse.'</guid>';
    $xml .= '<pubDate>'.$datephp.'</pubDate>';
    $xml .= '<description>'.$contenu.'</description>';
    $xml .= '</item>';
  }//fin du while

Par contre pour les caractères spéciaux i dont know ...
 
WRInaute impliqué
Remplace les double guillemets par des simples :

Code:
$adresse = 'http://www.informatique-inside.com/news/affichage.php?action=voir&id='.$id.'';

++
 
WRInaute impliqué
Fais voir la structure de ta table news_ avec une ligne de données qu'elle contient.

Ton flux fonctionne avec netvibes mais il ne renvoie pas vers les bons articles puisque la variable id n'est pas précisée.

Normalement elle devrait être interprêtée correctement avec l'exemple que je t'ai donné. As tu bien mis des guillemets simples partout pour la variable adresse ?

++
 
Nouveau WRInaute
Okay, merci d'être aussi patient l'ami !! :)

Voici la structure de la table news_

Code:
-- Structure de la table `news_`
-- 

CREATE TABLE `news_` (
  `id` int(11) NOT NULL auto_increment,
  `titre` varchar(50) NOT NULL,
  `texte` text NOT NULL,
  `name` varchar(50) NOT NULL,
  `date` date NOT NULL,
  `commentaires` varchar(9) default NULL,
  `valide` varchar(3) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=27 DEFAULT CHARSET=latin1 AUTO_INCREMENT=27 ;

Et un exemple d'occurence:

Code:
INSERT INTO `news_` (`id`, `titre`, `texte`, `name`, `date`, `commentaires`, `valide`) VALUES (1, 'blablabla contenu de la news', '1', '2007-12-17', '', ''),

A savoir que les champs commentaires, name et valide n'ont rien a voir, c'est juste les commentaires des visiteurs et la validation etc ... bref :)
 
WRInaute impliqué
Bon, en fait le champ contenu n'existe pas donc pour ta description c'est normal qu'elle ne s'affiche pas. Remplace la déclaration de la variable contenu par

Code:
$contenu=$lig["texte"];

Ensuite pour l'id ça devrait fonctionner si tu fais bien attention aux guillemets employés : simples ou doubles mais pas les deux. Si doubles tu ne dois pas concaténer.

Simples

Code:
$adresse = 'http://www.informatique-inside.com/news/affichage.php?action=voir&id='.$id.'';


Doubles

Code:
$adresse = "http://www.informatique-inside.com/news/affichage.php?action=voir&id=$id";

ça devrait déjà fonctionner au moins partiellement, par contre pas sûr que le script soit supporté par tous les agrégateurs.

++
 
Nouveau WRInaute
Pour $contenu=$lig["texte"]; c'est ce que j'avais fait , bon ça marche toujours pas ...

Je laisse tomber :(.

Merci de ton aide en tout cas
++
 
WRInaute impliqué
Si ça ne fonctionne pas c'est qu'il y a un problème d'encodage ou que les données attendues ne sont pas les bonnes.

Par contre je persiste et signe : pour tes urls ça devrait fonctionner comme prévu avec le code de tantôt. Le hic c'est que tu omets volontairement ou involontairement le terme id dans ton url wink:

M'enfin c'est toi qui vois

++
 
Nouveau WRInaute
SuperCureuil a dit:
Le hic c'est que tu omets volontairement ou involontairement le terme id dans ton url wink:

M'enfin c'est toi qui vois

++

Qu'entends tu part la ?
J'aimerais bien quand même que mon flux RSS mène a l'id de la news concerné :/
 
WRInaute impliqué
Ben oui mais dans ton url le terme id n'apparaissaitt pas alors que sa valeur oui ! Résultat ton url était incorrecte et ne renvoyait vers rien :lol:

Tu as fait un copier coller ou tu as recopié manuellement ?

++
 
WRInaute impliqué
Tilt :idea:

L'url qui renvoyait vers chaque article était de ce type : -http://..../news/affichage.php?action=voir&=25

Or elle doit être

-http://..../news/affichage.php?action=voir&id=25

C'est le"&" qui pose problème parce que c'est un caractère spécial : il faut le remplacer par &amp;

Si tu corriges ça tes liens renverront vers les bonnes pages :)

++
 
Nouveau WRInaute
Whaaaaa mince alors c'était ça !!!

Rahhh tu geres j'aurai pensé que sa pouvais venir de la !!

Un grand merci a toi :mrgreen: :mrgreen: :mrgreen:
 
WRInaute impliqué
A la bonne heure pour tes liens :mrgreen:

Par contre pour ta date je ne sais pas t'aider parce que les formats de date et moi ça fait deux. :roll:

++
 
Nouveau WRInaute
Je me permets de poster moi aussi mon flux rss qui ne marche pas, enfin, qui marche 1 fois sur 15 sur firefox:

$sql="SELECT * From news ORDER BY date DESC";
$req=mysql_query($sql) or die ("Pb slection base ".mysql_error());
while($data=mysql_fetch_assoc($req))
{
echo"<item>";
echo"<title><![CDATA[".$data["titre"]."]]></title>";
echo"<link>http://www.monsite.fr</link>";
echo"<description><![CDATA[".$data["contenu"]."]]></description>";
echo "<pubDate>".date("D, d M Y H:i:s", strtotime($data["date"]))." GMT</pubDate>";
echo "</item>";
}

merci de votre aide
 
Discussions similaires
Haut