flux RSS

Eléphant du PHP | 299 Messages

12 juin 2005, 14:50

Bonjours

J'essaie de me servir de flux rss tier mais j'ai quelques problèmes :

Un aperçu de ce que ca donne déjà...

Ma page php pour parser le ficher rss :
<?php

# Configuration

$fichier_xml = "http://www.clubic.com/xml/newsjeuxvideo.xml"; // Placez ici l'adresse du flux
$nombre_limite = 20; // Nombre maximum d'éléments à afficher

# Affichage du Flux
$file = fopen($fichier_xml,"r");
if ($file) {
	
	$raw = fread($file,32000);
	fclose( $file );
	
	if(eregi("<item>(.*)</item>",$raw,$rawitems)){
	
	    $items = explode("<item>", $rawitems[0]);
	    $nb = count($items);
	    $maximum = (($nb-1) < $nombre_limite) ? ($nb-1) : $nombre_limite;
	
			print "<ul>";
	    for ($i=0;$i<$maximum;$i++) {
	
	        eregi("<title>(.*)</title>",$items[$i+1], $title);
	        eregi("<link>(.*)</link>",$items[$i+1], $link);
	        eregi("<pubDate>(.*)</pubDate>",$items[$i+1], $pubdate);
	        $pubdate = date("[d-m]", strtotime($pubdate[1])); 
	        echo "<li><a href=\"".$link[1]."\" target=\"_blank\">".$pubdate.$title[1]."</a></li>";
	        } 
	    print "</ul>";
	
	    } 

} 

?>
Le problème, c'est que je t'arrive pas a afficher un certain nombre de news, j'ai ici parametré a 20 et il ne m'en affiche que 4, parfois 5 ...

Voyez vous un problème?

pirquesssa
Invité n'ayant pas de compte PHPfrance

12 juin 2005, 16:12

petit up :oops:

Personne ne vois pkoi ca bugue???

Mel
Invité n'ayant pas de compte PHPfrance

14 juin 2005, 17:28

Slt,

As-tu essayé d'augmenter la taille du buffer ?
32000 ---> 100000

Mel

Eléphant du PHP | 299 Messages

14 juin 2005, 17:42

oui, ca m'a rien changé ... :(

Eléphant du PHP | 52 Messages

14 juin 2005, 18:06

hello,

Déjà, à mon avis pour être sur de récupérer tout ton flux XML, tu devrais boucler :
$buffer_xml ='';
while (!feof ($file)) { 
  $buffer_xml .= fgets($file, 4096);
}
ensuite pour voir d'ou vient ton blem, fait une sortie directe du xml que tu as reçu...

Si ton xml comporte + d'entrée que ce que tu affiches, ton blem viendra probablement des eregs... Et là, il n'y aura que toi qui pourra debuguer

:wink:

bon courage

Eléphant du PHP | 299 Messages

14 juin 2005, 18:49

Alors, pour faire simple, ce script je l'ai recuperer et je l'ai UN PEUT modifié.

Je ne comprend pas ce que tu veut dire... , je ne vois pas ou tu veut mettre cette boucle :(

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

14 juin 2005, 20:19

As-tu accès à php5 sur ton hébergement ?

Edit: ben oui j'suis con, c'est free, tu disposes donc de simpleXml.
http://fr.php.net/simplexml

Edit²: voici une version avec l'utilisation de simpleXml
<?php

# Configuration
$fichier_xml = 'http://www.clubic.com/xml/newsjeuxvideo.xml'; // Placez ici l'adresse du flux
$nombre_limite = 20; // Nombre maximum d'éléments à afficher

# Affichage du Flux
$xml = simplexml_load_file($fichier_xml); // on lit le flux
$items = $xml->xpath('/rss/channel/item'); // on récupère les items
$nb_items = count($items);
$max = min($nb_items, $nombre_limite);

echo '<ul>';
for ($i=0; $i<$max; $i++) {
    $item = $items[$i];
    $date = date('d-m', strtotime($item->pubDate));
    echo '<li><a href="'.$item->link.'" target="_blank">['.$date.'] '.$item->title.'</a></li>';
}
echo '</ul>';

?>

Eléphant du PHP | 299 Messages

17 juin 2005, 17:51

merci de ton aide, je vais essayer de trouver php5 pour le local parce que je ne m'y était pas mis et du coups, j'ai de belles erreurs...

Merci

Eléphant du PHP | 299 Messages

17 juin 2005, 19:12

terrible, ca marche bien, un peut long mais ca marche :)
* [17-06] Des images et une vidéo pour présenter 80 jours
* [17-06] Bet On Soldier : le site francophone
* [17-06] Quoi de neuf en jeux vidéo ce vendredi ?
* [17-06] Quelques images lunaires pour le prochain Kheops
* [16-06] Astronoid : action et vitesse en bêta-test !
* [16-06] HL2 Lost Coast : Valve n'attend pas ATI
* [16-06] Quoi de neuf en jeux vidéo ce jeudi ?
* [16-06] Le Hitman sous les traits de Vin Diesel ?
* [16-06] Au Coeur De Lascaux : développement terminé
* [15-06] VUG se paye bien Swordfish Studios
Juste un petit problème avec les accent....

Tu as une solution ou je f un strig remplace???

EDIT: CA MARCHE

Eléphant du PHP | 299 Messages

17 juin 2005, 21:42

enfait non, ca marche pas :
echo "<? xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n";
?>
<!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<style type="text/css">
.popperlink { POSITION: absolute; VISIBILITY: hidden; z-index:2;}
</style>
<link href="style.css" rel="stylesheet" type="text/css" />
<title>Septi&acute; Lan Les infos sur vos r&eacute;seaux!!!</title>    
<meta http-equiv="Content-Type" content="text/html; charset=utf8" xml:lang="fr" />
En mettant ca en entete surtout le charset=utf8" ben , plus de pb avec le RSS mais j'ai un é sur deux qui deviens ? partout sur la page ....

Que faire???

Mammouth du PHP | 19672 Messages

17 juin 2005, 23:46

Attention, si tu changes le charset, il faut mettre le même dans la balise meta et la balise xml en en-tête.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 299 Messages

18 juin 2005, 15:08

j'ai essayé, mais... rien :'(

Mammouth du PHP | 19672 Messages

18 juin 2005, 15:43

As-tu vérifié que ton navigateur utilise bien le bon jeu de cacatères pour lire :
- Firefox : Affichage > Encodage de caractères;
- IE : Affichage : Codage;
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 299 Messages

20 juin 2005, 12:13

Bon, de tout facon, la solution php5 ca va pas etre possible, mon futur hebergeur fait pas ca...

Une idee pour améliorer :
<?php

# Configuration

$fichier_xml = "http://www.clubic.com/xml/newsjeuxvideo.xml"; // Placez ici l'adresse du flux
$nombre_limite = 20; // Nombre maximum d'éléments à afficher

# Affichage du Flux
$file = fopen($fichier_xml,"r");
if ($file) {
    
    $raw = fread($file,32000);
    fclose( $file );
    
    if(eregi("<item>(.*)</item>",$raw,$rawitems)){
    
        $items = explode("<item>", $rawitems[0]);
        $nb = count($items);
        $maximum = (($nb-1) < $nombre_limite) ? ($nb-1) : $nombre_limite;
    
            print "<ul>";
        for ($i=0;$i<$maximum;$i++) {
    
            eregi("<title>(.*)</title>",$items[$i+1], $title);
            eregi("<link>(.*)</link>",$items[$i+1], $link);
            eregi("<pubDate>(.*)</pubDate>",$items[$i+1], $pubdate);
            $pubdate = date("[d-m]", strtotime($pubdate[1]));
            echo "<li><a href=\"".$link[1]."\" target=\"_blank\">".$pubdate.$title[1]."</a></li>";
            }
        print "</ul>";
    
        }

}

?>
Merci a vous