Probleme flux rss


Thibow
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 14
Inscription: 27 Déc 2007

Probleme flux rss

Message le Jeu Déc 27, 2007 10:43

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: Tout sélectionner
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 :)


SuperCureuil
WRInaute impliqué
WRInaute impliqué
 
Messages: 673
Inscription: 9 Mar 2007

Message le Jeu Déc 27, 2007 11:10

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: Tout sélectionner
$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 ...

++


Jeviensderio
WRInaute passionné
WRInaute passionné
 
Messages: 1340
Inscription: 29 Sep 2006

Message le Jeu Déc 27, 2007 11:32

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)


SuperCureuil
WRInaute impliqué
WRInaute impliqué
 
Messages: 673
Inscription: 9 Mar 2007

Message le Jeu Déc 27, 2007 11:38

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 ...

++


Thibow
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 14
Inscription: 27 Déc 2007

Message le Jeu Déc 27, 2007 11:57

En faite j'ai mis
Code: Tout sélectionner
$adresse=$lig["http://www.informatique-inside.com"];


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

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


Pour l'encodage UTF-8 j'ai remplacer par
Code: Tout sélectionner
$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 ...


SuperCureuil
WRInaute impliqué
WRInaute impliqué
 
Messages: 673
Inscription: 9 Mar 2007

Message le Jeu Déc 27, 2007 12:22

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: Tout sélectionner
$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 ...

++


Thibow
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 14
Inscription: 27 Déc 2007

Message le Jeu Déc 27, 2007 12:33

Oula je mélange tout moi :?

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

Code: Tout sélectionner
<?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>';
  ?>
Dernière édition par Thibow le Jeu Déc 27, 2007 12:38, édité 1 fois.


Thibow
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 14
Inscription: 27 Déc 2007

Message le Jeu Déc 27, 2007 12:37

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:


SuperCureuil
WRInaute impliqué
WRInaute impliqué
 
Messages: 673
Inscription: 9 Mar 2007

Message le Jeu Déc 27, 2007 12:44

Normal elle est déclarée après que tu l'appelles dans la variable adresse.

Intervertis les deux :

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


Je regarde pour le reste 8)


Thibow
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 14
Inscription: 27 Déc 2007

Message le Jeu Déc 27, 2007 12:49

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: Tout sélectionner
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 :(


SuperCureuil
WRInaute impliqué
WRInaute impliqué
 
Messages: 673
Inscription: 9 Mar 2007

Message le Jeu Déc 27, 2007 12:50

Pour la description ça irait mieux comme ça (si le champ contenu existe et qu'il contient bien la description en question) :

Code: Tout sélectionner
$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 ...


SuperCureuil
WRInaute impliqué
WRInaute impliqué
 
Messages: 673
Inscription: 9 Mar 2007

Message le Jeu Déc 27, 2007 12:51

Remplace les double guillemets par des simples :

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


++


Thibow
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 14
Inscription: 27 Déc 2007

Message le Jeu Déc 27, 2007 13:00

Merci merci ! :)

Bon malheuresement marche pas :/

le probleme viens de la variable id je crois :s


SuperCureuil
WRInaute impliqué
WRInaute impliqué
 
Messages: 673
Inscription: 9 Mar 2007

Message le Jeu Déc 27, 2007 13:03

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 ?

++
Dernière édition par SuperCureuil le Jeu Déc 27, 2007 13:12, édité 1 fois.


Thibow
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 14
Inscription: 27 Déc 2007

Message le Jeu Déc 27, 2007 13:12

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

Voici la structure de la table news_

Code: Tout sélectionner
-- 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: Tout sélectionner
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 :)

Probleme flux rss

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité