scorpion11_22 Posté 31 Juillet 2008 Partager Posté 31 Juillet 2008 Bonjour je viens d'essayer le tuto pour la création d'un flux rss+php+css en fait j'ai créé 3 fichier 1 - rss.php 2 - crea_rss.php 3 - flux.xml le probleme c'est que lorsque je veux voir le flux il y a une erreur Warning: Invalid argument supplied for foreach() in /xxx/xxx/www/rss.php on line 33 donc j'ai chercher et j'ai rajouter var_dump($rss);foreach($rss as $tab) { pour voir qu'est qui se passe et la NULL Warning: Invalid argument supplied for foreach() in /xxx/xxx/www/rss.php on line 33 maintenant voiçi les codes de mes fichier avec un tres grand ? pour le fichier flux.xml ou apparament j'ai du rien comprendre 1 - rss.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html><head><title>flux RSS Inform_AT_dream</title><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><meta name="robots" content="All"/><link rel="stylesheet" href="css/rss.css" type="text/css"/></head><body><?php// Lecture d'un fichier XMLfunction lit_rss($fichier,$champs) { // on lit le fichier if($chaine = _AT_implode("",@file($fichier))) { // on explode sur <item> $tmp = preg_split("/<\/?"."item".">/",$chaine); // pour chaque <item> for($i=1;$i<sizeof($tmp)-1;$i+=2) // on lit les champs demand? <champ> foreach($champs as $champ) { $tmp2 = preg_split("/<\/?".$champ.">/",$tmp[$i]); // on ajoute au tableau $tmp3[$i-1][] = @$tmp2[1]; } // et on retourne le tableau return $tmp3; }}$rss = lit_rss("flux.xml",array("title","link","description","date",));// et on affiche...var_dump($rss);foreach($rss as $tab) { echo '<div class="news_box"> <div class="news_box_title">'.$tab[0].'</div> <div class="news_box_date">posté le '.date("d/m/Y",strtotime($tab[3])).'</div> '.$tab[2].' <a href="'.$tab[1].'">Lire tout l\'article</a> </div>';}?></body></html> 2 - crea_rss.php <?php// édition du début du fichier XML$xml = '<?xml version="1.0" encoding="iso-8859-1"?><rss version="2.0">';$xml .= '<channel>'; $xml .= '<title>Informadream RSS</title>';$xml .= '<link>http://www.informadream.fr/index-news.html</link>';$xml .= '<description>Description</description>';// connexion a la baseinclude('includes/bdd.php');$res=mysql_query("SELECT * FROM news ORDER BY date DESC LIMIT, 5");// extraction des informations et ajout au contenuwhile($tab=mysql_fetch_array($res)){ $titre=$tab[titre]; //$lien=$tab[lien]; $description=$tab[news]; $date=$tab[date]; $date2=date("D, d M Y H:i:s", strtotime($date)); $xml .= '<item>'; $xml .= '<title>'.$titre.'</title>'; $xml .= '<link>'.$lien.'</link>'; $xml .= '<pubDate>'.$date2.' GMT</pubDate>'; $xml .= '<description>'.$description.'</description>'; $xml .= '</item>'; }// édition de la fin du fichier XML$xml .= '</channel>';$xml .= '</rss>';// écriture dans le fichier$fp = fopen("flux.xml", 'w+');fputs($fp, $xml);fclose($fp);_AT_mysql_close();?> 3 - flux.xml comme dit plus haut gros ? <?xml version="1.0" encoding="iso-8859-1" ?><rss version="2.0"> <channel> <title>Titre</title> <link>http://www.informadream.fr/index-news.html</link> <description>Description</description> </channel></rss> au cas ou la structure de ma table news : newsId int(11) Non auto_increment auteur varchar(60) latin1_swedish_ci Oui NULL date date Oui NULL titre varchar(120) latin1_swedish_ci Oui NULL news text latin1_swedish_ci Oui NULL active int(11) merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Kioob Posté 31 Juillet 2008 Partager Posté 31 Juillet 2008 (modifié) Hello, de quel tuto parles tu ? implode("",@file($fichier)) Beurk... difficile de faire pire ici : lire un fichier, le scinder ligne par ligne et tout stocker dans un tableau PHP, tout ça pour ensuite re-concaténer le tout. file_get_contents() serait déjà beaucoup plus propre. Sinon le débugage me semble relativement simple : 1) comme ton var_dump() l'indique, la fonction lit_rss() retourne NULL 2) la fonction lit_rss() ne fait son return que si la lecture du fichier s'est bien passée et que celui ci n'est pas vide. Mais comme tu masques les erreurs grâce à l'arobase, on ne sait même pas si la lecture s'effectue correctement. => commence par enlever ça 3) traiter un flux XML à coup de preg_split(), c'est quand même pas ce qu'on fait de plus fiable. => Utilises plutôt SimpleXML (nécessite PHP 5). 4) ton tableau $tmp3 est initialisé nul part, si bien qu'en cas de soucis avec ton traitement preg_split(), tu fais un return d'une variable non déclarée. => Initialise le. Modifié 31 Juillet 2008 par Kioob Lien vers le commentaire Partager sur d’autres sites More sharing options...
scorpion11_22 Posté 31 Juillet 2008 Auteur Partager Posté 31 Juillet 2008 bon ok je crois que je comprend rien ! pas grave peut-etre aurais-tu un tutoriel bien expliquer pour que je puisse créer un flux xml par rapport a mes news ? sinon le tuto sort du site http://ghostdogpr.developpez.com/articles/rss/ peut-etre que j'ai pas fait le bon choix ! merci de m'eguiller Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant