Jeux Web.org

  • Home
  • Forums
  • Photos
  • Boutique
    • Boutique JeuxWeb
    • Panier
  • Nous contacter
    • JeuxWeb
    • Jeux Hébergés
JeuxWeb
  • Accueil
  • News
  • Qui Sommes Nous ?
  • Créateur de Jeu ?
  • Jeux de Plateau
  • Aider JeuxWeb
  • Liens
Les Guides
  • Codes et Scripts
  • Articles
  • Jeux de Plateau
Nos Jeux
  • MountyHall
  • Monde de Thäanis
  • Braldahim
cisco ccna
cisco ccna


Nom d"utilisateur / mot de passe perdu ?
Pas encore inscrit ? Inscription

postheadericon Générer un flux rss (2e partie)

postdateiconMardi, 26 Juin 2007 17:03 | postauthoriconÉcrit par Yves Savonet | PDF 
Nous avons vu, dans un autre article, comment générer un flux rss de nouvelles pour notre site.
Mais les flux rss ne se limitent pas aux nouvelles du site et il est tout aussi intéressant de proposer un flux par thème du forum ou par type d'événement.

Plutot que de répéter à chaque fois le script de génération du fichier rss, je vous propose d'utiliser une classe plus générique qui va formater nos données de flux en un XML prévu à cet effet.

La classe Rss et la classe RssElement

class Rss{
	var $gs_title;
	var $gs_url;
	var $gs_description;
	var $gs_titreImage;
	var $gs_urlImage;
	var $gs_urlElement;
	var $gb_isImage;
	var $ga_elements;

	function Rss($as_titre, $as_url, $as_description)
	{
		$this->gs_title = $as_titre;
		$this->gs_url = $as_url;
		$this->gs_description = $as_description;
		$this->gb_isImage = false;	
	}
	function setImage($as_titre, $as_urlImage, $as_urlElement)	{
		$this->gs_titreImage = $as_titre;
		$this->gs_urlImage = $as_urlImage;
		$this->gs_urlElement = $as_urlElement;
		$this->gb_isImage = true;	
	}		
	function addElement($as_title,$as_email,$as_link,$as_description,$ats_date)
	{
		$lo_element = new RssElement($as_title,$as_email,$as_link,$as_description,$ats_date);
		$this->ga_elements[] = $lo_element;
		return $lo_element->getXML();
	}
	function getXML()	
	{
		$ls_return = "";
		$ls_return.= "\n";
		$ls_return.= "\n";
		$ls_return.= "\n".$this->gs_title."";
		$ls_return.= "\n".$this->gs_url."";
		$ls_return.= "".$this->gs_description."";
		$ls_return.= "\nfr";
		$ls_return.= "\n".date('r')."";
		$ls_return.= "\n".date('r')."";
		if($this->gb_isImage)
		{
			$ls_return.= "\n";
			$ls_return.= "\n".$this->gs_titreImage."";
 			$ls_return.= "\n".$this->gs_urlImage."";
			$ls_return.= "\n".$this->gs_urlElement."";
   			$ls_return.= "\n";
		}
		foreach($this->ga_elements as $lo_element)
		{
			$ls_return .= $lo_element->getXML();
		}
		$ls_return.= "\n";
		$ls_return.= "\n";
		
		return $ls_return;
	}
	
	function saveXML($as_file)
	{
		$lo_rss = fopen($as_file, 'w');
		fwrite($lo_rss, $this->getXML());
		fclose($lo_rss);
	}
}

class RssElement
{
	var $gs_title;
	var $gs_email;
	var $gs_link;
	var $gs_description;
	var $gts_date;
	
	function RssElement($as_title,$as_email,$as_link,$as_description,$ats_date)
	{
		$this->gs_title = $as_title;
		$this->gs_email = $as_email;
		$this->gs_link = $as_link;
		$this->gs_description = $as_description;
		$this->gts_date = $ats_date;
	}
	function getXML()
	{
		$ls_return.= "\n";
		$ls_return.= "\n".htmlspecialchars($this->gs_title)."";
		$ls_return.= "\n".$this->gs_email."";
		$ls_return.= "\n".$this->gs_link."";
		$ls_return.= "\n".htmlspecialchars($this->gs_description)."";
		$ls_return.= "\n".date('r', $this->gts_date)."";
		$ls_return.= "\n";				
  		return $ls_return;	
	}
}
La classe Rss() permet de générer un objet qui va regrouper toutes les propriétés du flux rss à générer. Elle contient, entre autres, un array de RssElement() qui est une classe décrivant un élément du flux (une nouvelle au sein d'un flux de nouvelles par exemple).

Elle dispose de deux propriétés intéressantes : getXML et saveXML qui vont permettre respectivement de retourner le XML du flux (si le flux a une finalité dynamique) ou de le sauver dans un fichier (si le flux a une finalité statique).

Utilisr l'objet

Tout d'abord construisez votre objet avec ses propriétés de base

$lo_rss = new Rss("Mes Forums - Derniers sujets"  , "http://forum.monsite.com"  , "Monsite : Derniers Sujets du Forum");
Ensuite parcourez un recordset d'éléments (ici des sujets de forums) pour peupler l'array d'éléments.
while($la_rs=mysql_fetch_array($lo_rs))
{
  $lo_rss->addElement($la_rs["Subject"],$la_rs["Username"] 
  , "http://urlDuSujet?ID=".$la_rs["ID"], $la_rs["Message"]
  , strtotime($la_rs["Date"]));
}
Enfin, soit vous enregistrez le flux obtenu dans un fichier :
	$lo_rss->saveXML("lastTopics.xml");
soit vous le retournez directement au client :
 echo $lo_rss->getXML();

{mos_fb_discuss:2}

Suivant >

Mis à jour (Lundi, 04 Octobre 2010 10:16)

 

postheadericon Derniers Codes & Scripts

  • Générer un flux rss (2e partie)
  • Afficher une image "sécurisée"
  • Temps d'exécution d'un script
  • Compter le nombre de joueurs actifs
  • Backup de base de donnée

postheadericon Codes & Scripts Populaires

  • Pack Graphique : comment l'implémenter
  • Jet de Dés
  • Code Image - éviter les doubles publications
  • Authentification d'une zone
  • Créer un fil RSS

postheadericon Articles en rapport

  • Code Image - éviter les doubles publications
  • Backup de base de donnée
  • Compter le nombre de joueurs actifs
  • Temps d'exécution d'un script
  • Afficher une image "sécurisée"
  • Installation et maj de phpMyAdmin

Copyright © 2010 JeuxWeb.org asbl.
All Rights Reserved.

Designed by VYS - DungeonMaster (Yves Savonet).