Afficher les évènements du jour

Bonjour,

Je voulais partager un petit dev que j'ai fait pour mon site. Les développeurs chevronnés trouveront que c'est hyper basique (et ça l'est !) mais ça me tenait à coeur de le faire tout seul comme un grand, et comme j'ai réussi, je vous montre le résultat, peut être que ça pourra servir à quelqu'un d'aussi peu doué que moi :P


Le but était d'afficher chaque jour une liste d'évènements "anniversaires" correspondant à la date du jour.


Exemple, le 11 mars, affichage de "Joyeux anniversaire Tibawbaw !" :D


Pour celà, j'ai créé un fichier XML, que j'ai divisé en mois, puis en jours (pour deux raisons : la rapidité de l'affichage et la lisibilité du fichier XML) :
[== XML ==]
<?xml version="1.0" encoding="utf-8" ?>
<evenements>
	<evemois mois="3">
		<evejour jour="04">&lt;b&gt;1963&lt;/b&gt; : naissance de &lt;b&gt;Jason Newsted&lt;/b&gt; (bassiste de &lt;b&gt;Metallica&lt;/b&gt; de 1987 à 2001)</evejour>
		<evejour jour="04">&lt;b&gt;1975&lt;/b&gt; : naissance de &lt;b&gt;Hawksley Workman&lt;/b&gt; (auteur, compositeur, chanteur et guitariste de pop/glam-rock)</evejour>
		
		<evejour jour="05">&lt;b&gt;1970&lt;/b&gt; : naissance de &lt;b&gt;John Frusciante&lt;/b&gt; (guitariste des &lt;b&gt;Red hot Chili Peppers&lt;/b&gt;)</evejour>
		<evejour jour="05">&lt;b&gt;1946&lt;/b&gt; : naissance de &lt;b&gt;David Gilmour&lt;/b&gt; (chanteur et guitariste de &lt;b&gt;Pink Floyd&lt;/b&gt;)</evejour>
	</evemois>
</evenements>

Ici pour le mois de mars, j'ai donc 2 évènements pour le 4 mars et 2 évènements pour le 5 mars.
Les codes "<" et ">" correspondent à "<" et ">", pour le formatage HTML (donc <b> donnera <b>).


Ensuite, j'ai fait une petite page PHP qui va m'afficher uniquement les évènements de la date du jour :
[== PHP ==]
<?php
  $dom = new DomDocument; 										//Nouveau document DOM
  $dom->load(dirname(__FILE__)."/evenements.xml");				//Ouverture du fichier XML
  $moisActuel = date("m"); 										//Numéro du mois actuel format MM
  $jourActuel = date("d");  									//Numéro du jour actuel format DD 

  echo $m . $d;		
	
  $listeMois = $dom->getElementsByTagName("evemois"); 			//On récupère les différents mois présents dans le fichier XML
  foreach($listeMois as $mois) 									//On parcourt les mois à la recherche du mois actuel
  {
    $moisEvenement = $mois->getAttribute("mois");				//On récupère le mois de la boucle
    if ($moisEvenement == $moisActuel ) 						//On compare avec le mois actuel
		{														//On est dans le bon mois, recherche du jour
		$listeJour = $mois->getElementsByTagName("evejour");	//On récupère les différents jours pour le mois dans lequel on se trouve
		$compteur = 1;
		echo  "<ul style=\"text-align: justify;\">";
		foreach($listeJour as $jour)							//On parcourt les jours à la recherche du jour actuel
		{
			$jourEvenement = $jour->getAttribute("jour");		//On récupère le jour de la boucle
			if ($jourEvenement == $jourActuel ) 				//On compare avec le jour actuel
			{													//On est dans le bon jour
				echo  "<li>" . $jour->nodeValue . "</li>";				//On affiche la valeur du noeud XML correspondant au mois et au jour actuel
			}
		}
		echo  "</ul>";
    }
  }  
?> 



Le résultat est le suivant : Affichage des évènements du jour


Pour l'intégrer dans ma sidebar, j'ai simplement inséré la page PHP avec le bout de code suivant :
[== PHP ==]
<?php include(dirname(__FILE__).'/evenements.php'); # On insere la lecture du fichier XML evenements ?>


Et le résultat quand le tout est intégré dans le site, visible sur rock-anecdotes.fr


Voilà, ce n'est pas grand chose, et je pense que la méthode DomDocument n'est pas celle utilisée par PluXML (mais c'est ce qui m'a paru le plus simple dans mon cas).

N'hésitez pas à commenter si vous trouvez que le code est améliorable, et à l'utiliser si vous en avez une quelconque utilité...


Thibaut, qui essaie vainement de contribuer à la communauté ;)

Réponses

  • c'est simple et efficace ... sauf pour modifier le fichier ;)
    si tu crées un champ date dans un article (avec le plugin champArt), tu peux obtenir ce genre de résultat : venez nous rencontrer.


    L'info est classée selon la date de l’évènement.
    Et l'on peut mettre plus de contenu tout en profitant des fonctionnalités de PluXml. ;)
    Chaque info est article classé dans une catégorie.
  • Merci pour cette méthode. Finalement, le plus compliqué dans l'histoire, c'est de remplir le ficher XML pour les 365 jours de l'année !
    Juste une remarque - tu vas me dire que je chipote un peu - on pourrait mettre <strong> au lieu de <b> comme balise (même si le HTML5 accepte à nouveau la balise <b>, c'est en principe sans la notion de "mise en relief" du texte).


    Ce programme a un autre intérêt, c'est qu'il donne un exemple simple pour lire le contenu d'un fichier XML (il y a tellement de méthodes pour faire ça, je ne sais jamais laquelle utiliser !).
  • danielsan a écrit:
    si tu crées un champ date dans un article (avec le plugin champArt), tu peux obtenir ce genre de résultat : venez nous rencontrer.


    L'info est classée selon la date de l’évènement.
    Et l'on peut mettre plus de contenu tout en profitant des fonctionnalités de PluXml. ;)
    Chaque info est article classé dans une catégorie.

    Je ne pense pas que ça marcherait dans mon cas. Le but est d'afficher tous les ans les mêmes évènements passés (genre "que s'est il passé à la même date il y a 30 ans").

    Le but est de fournir un gros travail en amont pour remplir le fichier XML avec tous les évènements, puis de le laisser faire son travail, en bouclant dessus tous les ans...
  • philou87philou87 Membre
    mars 2013 modifié
    @Tibawbaw

    Félicitation très beau site et beau tuto (que je testerai à l'ocasion, je le mets en marque page)
    Je suis moi même un fan des seventies (en même temps c'ètait toute ma jeunesse)
    j'ai vu Led Zep (in england) en 1979 et c'était déja le dernier concert.

    bel avatar aussi; c'est l'ocasion de te demander (si tu veux bien)
    quelle technique emploie tu pour obtenir l'effet( roue deux couleurs, jaune/violet en background de l'avatar)
    c'est quelque chose que je voudrais faire depuis un moment.

    @Daniel San
    bel exemple mais on manque d'infos avec champart comme je disais avant, on sent bien qu'on peux faire beaucoup avec mais...
    Je comprend pas pourquoi il y a un si grand espace au dessus du header du site "piscine" ?

    Merci A+
  • @philou87 : Je ne sais plus exactement comment j'ai fait, mais je dois encore avoir le fichier photoshop qui traine quelque part, je regarderai ça chez moi ce soir :-) Mais de souvenir, je l'avais fait de façon artisanale, je ne suis pas non plus un grand photoshopeur ;-)

    Merci en tout cas pour le site... Bon, pour le design, il n'est pas de moi, même si j'ai ajouté par-ci par-là quelques modifications...

    En tout cas, content que mes petites explications aient pu (ou pourront) aider quelqu'un ! Ca ne sera pas inutile, ça me fait plaisir !
  • @Tibawaw : une fois que tu as la date et l'évènement, tu peux afficher en fonction de l'année, du mois, du jour ...
    L'avantage d'utiliser les articles est que déjà tu as du contenu différent indexé dans les moteurs de recherche (et c'est plutôt cool pour le référencement) mais aussi de compléter l'info liée à l'entrée (bio de l'artiste, photos etc ... )

    @philou87 : va savoir les attentes des clients ...
    je ne comprends pas quand tu dis qu'il manque des infos ...
Connectez-vous ou Inscrivez-vous pour répondre.