Webmaster Hub: xml+php+css fil rss je plante - Webmaster Hub

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

xml+php+css fil rss je plante Noter : -----

#1 L'utilisateur est hors-ligne   scorpion11_22 

  • Groupe : Actif
  • Messages : 16
  • Inscrit(e) : 28-juillet 08
  • Genre:Homme
  • Localisation:Coursan
  • Société:informadream

Posté 31 juillet 2008 - 12:58

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

Citation

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

Citation

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

<?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();
?>


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
Apprendre et continuer a apprendre
Visiter mon site
0

#2 L'utilisateur est hors-ligne   Kioob 

  • Groupe : Membre+
  • Messages : 1 031
  • Inscrit(e) : 19-avril 04
  • Genre:Homme
  • Localisation:Lyon
  • Société:Daevel SARL

Posté 31 juillet 2008 - 13:12

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.

Ce message a été modifié par Kioob - 31 juillet 2008 - 13:13.

Mes jouets
0

#3 L'utilisateur est hors-ligne   scorpion11_22 

  • Groupe : Actif
  • Messages : 16
  • Inscrit(e) : 28-juillet 08
  • Genre:Homme
  • Localisation:Coursan
  • Société:informadream

Posté 31 juillet 2008 - 17:44

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.de...m/articles/rss/
peut-etre que j'ai pas fait le bon choix !
merci de m'eguiller :smartass:
Apprendre et continuer a apprendre
Visiter mon site
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)