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
CITATION
Warning: Invalid argument supplied for foreach() in /xxx/xxx/www/rss.php on line 33
donc j'ai chercher et j'ai rajouter
CODE
var_dump($rss);
foreach($rss as $tab) {
foreach($rss as $tab) {
pour voir qu'est qui se passe et la
CITATION
NULL
Warning: Invalid argument supplied for foreach() in /xxx/xxx/www/rss.php on line 33
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
CODE
<!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 XML
function 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>
"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 XML
function 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
CODE
<?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 base
include('includes/bdd.php');
$res=mysql_query("SELECT * FROM news ORDER BY date DESC LIMIT, 5");
// extraction des informations et ajout au contenu
while($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();
?>
// é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 base
include('includes/bdd.php');
$res=mysql_query("SELECT * FROM news ORDER BY date DESC LIMIT, 5");
// extraction des informations et ajout au contenu
while($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 ?
CODE
<?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>
<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