Affichage automatique personnalisable à partir d'une date donner

Soyez le premier à donner votre avis sur cette source.

Vue 5 150 fois - Téléchargée 931 fois

Description

Ce petit prog simple en php, permet d'afficher une info, une petite pub etc... grâce a une date donner, utilisant un principe de formulaire, mais, qui ce remplit automatiquement :)
Depuis, c'est la première source que je poste sur Codes-Sources :)
Si vous voulez voir ce que ça donne, je met une petite capture d'écran > http://ns7.firstheberg.com/~anast/captures-ecran/cap_aff_info_auto.png
Si vous l'avez essayer ou si vous le souhaiter, ajouter un petit commentaire svp merci :)

Source / Exemple :


<link rel="stylesheet" type="text/css" href="index_fond.css" />
<link rel="stylesheet" type="text/css" href="style_cadre_info.css" />

<?php
		
		include('include/date.php');//!!Ne pas modifier!!

//Partie modifiable
/*--------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
		//Variable pour mettre une image en fond
		$image_de_fond = '<a href="https://2kgamesinternational.com/fr/" target="_blank" title="Aller sur le site 2K Games"><div class="wallpaper" style="position:fixed; top:0px;" align="center"></div></a>';
		
		//Message a afficher
		$mess = '
		
		<a class="liens" href="javascript:;" id="btnAfficherCadre" onclick="this.style.display=\'none\'; document.getElementById(\'elementInfo\').style.display=\'\'; document.getElementById(\'video\').style.display=\'\';" title="Réafficher le cadre info" style="z-index:900; position:fixed; top:; right:10px; display:none;">[Réafficher le cadre info]</a>
		<div style="z-index:990; position:relative; top:10px;" align="center">
													
			<div class="cadre_ie" align="center" style="z-index:990; position:fixed; float:left; left:0px; top:; margin-top:; width:100%;">
				<div class="tab_infos" id="elementInfo" align="center">
					<div style="position:relative; right:-2px; top:0px; padding:0px; font-weight:bold;" align="right">
					
						<a class="liens" href="javascript:;" id="etendre" onclick="this.style.display=\'none\'; document.getElementById(\'reduire\').style.display=\'\'; document.getElementById(\'elementInfo\').style.width=\'1120px\'; document.getElementById(\'video\').style.height=\'630px\'; document.getElementById(\'video\').style.width=\'1120px\'; document.getElementById(\'video\').style.height=\'630px\';" title="Agrandir">Agrandir</a>
						<a class="liens" href="javascript:;" id="reduire" style="display:none;" onclick="this.style.display=\'none\'; document.getElementById(\'etendre\').style.display=\'\'; document.getElementById(\'elementInfo\').style.width=\'560px\'; document.getElementById(\'video\').style.height=\'315px\'; document.getElementById(\'video\').style.width=\'560px\'; document.getElementById(\'video\').style.height=\'315px\';" title="Réduire">Réduire</a>
						
						<a class="liens" href="javascript:;" onclick="document.getElementById(\'elementInfo\').style.display=\'none\'; document.getElementById(\'video\').style.display=\'none\'; document.getElementById(\'btnAfficherCadre\').style.display=\'\';" title="Masquer ce cadre">[X]</a>
						
					</div>
					<div style="position:relative; top:0px; padding:2px; font-weight:bold;" align="center">
							
						<div style="position:relative; top:-2px; font-family:Verdana, Tahoma, Arial; font-size:10pt; font-weight:bold; color:steelblue;">News jeux vidéo : Borderlands 2 - PC, PlayStation3, Xbox 360</div>
						<iframe width="560" height="315" id="video" src="http://www.youtube.com/embed/RfEL3Zeo_wQ" frameborder="0" allowfullscreen></iframe><br />
						<a href="http://youtu.be/RfEL3Zeo_wQ"  target="_blank" title="Voir la vidéo directement sur you tube" class="liens" style="position:relative; left:0px; top:5px;">Voir la vidéo directement sur you tube</a>
						
					</div>
				</div>
			</div>			

		</div>
							
		' . $image_de_fond . '';
						
						
		//Paramètre de l'année
		$valeur_annee = '2012'; //A changer pour afficher l'info a l'\année souhaiter
		
		//Paramètre du jour et du mois
		$val_jour = 31; //Pour afficher le mess tout le mois il faut mettre 31. Comme ca, le message, est lu du début jusqu'a la fin du mois
		$val_mois = 11;
		
		//Paramètre pour retirer l'info en fonction du jour donner (Pas obligatoire, c'est juste pour prendre en compte la date de fin de l'affichage)
		$nb_joursOk = true; //Active ou désactive le paramètre jour de fin. Mettre false pour le désactivé, du coup l'info s'affichera en fontion du jour et du mois.
		$nb_jours = ($jour);
		
		//Si  la valeur de ce paramètre est érroner, nb_joursOk devient false
		//Sinon si, date_fin est égal a la date actuelle et que nb_joursOk = true, le message sera afficher
		$date_fin = 16; //Date de fin pour enlever le message (correspond a la valeur du jour). Une fois la date expirer l'info sera enlever automatiquement
/*--------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/		

$aff_date_fin = '' . ($date_fin . '/' . $val_mois . '/' . $valeur_annee) . '';//Variable pour afficher la date de fin

//Message d'erreur si, la date actuel ne correspond aux réglages des paramètres
$aff_erreur_date = '' . ($val_jour . '/' . $val_mois . '/' . $valeur_annee) . '';//Variable de la date complète pour le message d'erreur de la date actuelle
$erreur_date_actuelle = 'Oups ! Erreur...  L\'info ne peut pas être affiché, car la date, ne correspond pas a la date actuelle. Valeur de la date : ' . $aff_erreur_date  . ' et date de fin : ' . $aff_date_fin  . '';//pour le test

//message d'erreur si, le parametre date de fin est désactivé
$erreur_date_param_desactive = 'Pas d\'info :( car, la date suivante : (' . ($val_jour . '/' . $val_mois . '/' . $valeur_annee) . ') ne correspond pas a la date actuelle. Valeurs incorrecte !';//pour le test

$etat_date_fin = 'La date de fin est expirée';
$jour_actuel = 'Jour actuel : ' . ($nb_jours  . '/' . $val_mois . '/' . $valeur_annee) . '';
$style_champs_date = 'style="width:280px;';
$afficher_contenu = ($mess);//Variable pour l'affichage du message / interface etc...
	

		//Vérifie si nb_joursOk est vrai ou faux et si nb_jours est inférieure ou égal a la date de fin
		if($nb_joursOk && ($nb_jours <= $date_fin))
				{
					
					//Affiche le message en fonction du jour du mois et de l'annee
					//Si l'annee et egale a la valeur "annee" et le "mois" puis le "jour" sont correcte, on affiche le message.
					if(($annee == $valeur_annee)&&($mois == $val_mois)&&($jour <= $val_jour)){
						
						echo'<input type="text" readonly value="' . $jour_actuel . '"' . $style_champs_date . '" />
								Info ok :) Le paramètre date de fin est activé. L\'affichage du message, prendra fin le : ' . $aff_date_fin  . ' &agrave 00h 00m (param = true)';//pour le test
					
						echo'' . ($afficher_contenu) . '';
						
					} else {
						echo'' . ($erreur_date_actuelle) . '' ;
					};
					
					
				} else if((($annee == $valeur_annee)&&($mois == $val_mois)&&($jour <= $val_jour))&&($nb_joursOk == (true))){
				//Affiche le message en fonction du jour du mois, de l'annee et si le param "nb_joursOk" est vrai
				//Sinon si, l'annee et egale a la valeur "annee" et le "mois" puis le "jour" sont correcte, et que le param "nb_joursOk" est vrai, on affiche le message.
					
					echo'<input type="text" readonly value="' . $etat_date_fin . '"' . $style_champs_date . '" />
							Info enlever :) Le paramètre date de fin est activé. L\'info a expirée le : ' . $aff_date_fin  . '. (param = true)';
					
				
				} else if(($annee == $valeur_annee)&&($mois == $val_mois)&&($jour <= $val_jour)&&($nb_joursOk == (false))){ 
				//Sinon si, l'annee et egale a la valeur "annee" et le "mois" puis le "jour" sont correcte, et que le param "nb_joursOk" est faux, on enlève le message.
					
					echo'<input type="text" readonly value="' . $jour_actuel . '"' . $style_champs_date . '" />
							Info ok :) Le paramètre date de fin est désactivé, mais l\'info, reste quand même affiché (param = false). L\'affichage du message, prendra fin le : ' . ($val_jour . '/' . $val_mois . '/' . $valeur_annee) . ' à 00h 00m.';//pour le test
					
					echo'' . ($afficher_contenu) . '';
				
				} else {
					echo'' . ($erreur_date_param_desactive) . '';
				};

		/*
		//$date_complete = date("d/m/Y");
		//Juste pour afficher la date complète
		echo '<div style="z-index:100; position:absolute; top:4px; left:12px; font-family:Verdana, Tahoma, Arial; font-weight:regular; font-size:8pt; color:steelblue;">' . 
		($j) . '&nbsp;' . ($jour) . '&nbsp;' . ($m) . '&nbsp;' . ($annee) . '
		</div>';

  • /
?>

Conclusion :


Donc du coup, ce qui peut permettre de paramétrer l'affichage d'une info, une pub... a l'avance. Donc exactement, plus besoin de le faire le jour même enfaite! ^^
Je prévois aussi, de faire un petit système avec une petite interface, pour pouvoir paramétrer plus facilement. Et comme ça, il y aura juste a saisir les champs des valeurs, coché une case pour a activé désactiver le paramètre "date de fin" et donc, plus besoin d'ouvrir le fichier .php a chaque fois que l'on veut modifier les paramètres. ^^

Codes Sources

A voir également

Ajouter un commentaire

Commentaire

Messages postés
122
Date d'inscription
mercredi 19 décembre 2001
Statut
Membre
Dernière intervention
5 janvier 2009

Bonjour,

A la lecture du code, il y a des petits éléments qui pourraient être optimisés :

1) tu compares des jours/mois/années (dans le cas ou $nb_joursOk=false) ou des numéros de jour (dans le cas ou $nb_joursOk=true) mais l'affichage s’arrête dès la fin du mois.
Il pourrait etre préférable de travailler avec "datediff" et des vraies dates.

2) il y a un peu trop de mélange de la logique et de l'affichage. Il ne faudrait pas mettre de écho au milieu du code, simplement préparer une variable texte contenant le message, et l'afficher une seule fois à la fin du code.
l'idéal serait d'avoir les textes (ex les messages d'erreur) regroupé à un seul endroit pour simplifier la personnalisation.
Si tu y arrives, le principal intérêt sera que ton code pourra être déplacé dans une fonction autonome, et que seul le résultat final de cette fonction (renvoyé par le "return") sera intéressant.

3) il y a trop d'enchainement de "elseif"
Dans le fichier "date.php" les tests sur les mois/jours sont fait sur la base de "if, elseif" mais il serait beaucoup plus simple et plus logique de travailler à base de "switch, case"

4) petite erreur de code dans le fichier date.php
Tes comparaisons sont faites sur une chaine sans simple ou double quote
if($mois_complet == Jan)
Ici Jan n'est pas une variable, ni du texte normal.
Le moteur PHP est obligé de corriger cette erreur en considérant que tu voulais dire "Jan", ce qui va générer un warning et du temps de perdu pour le moteur PHP.

5) problème dans la logique de ton fichier construction_fichier.php
Tu fabrique à chaque fois un fichier (valeur_date.txt) contenant le texte à afficher, puis tu le fermes, puis tu le ré-ouvres pour en lire le contenu et le transmettre à l'internaute. Cette écriture n'a pas d’intérêt et surtout si il y a beaucoup d'internautes cela va générer de gros blocage car tous les internautes vont attendre que PHP puisse récupérer la main sur ce fichier. Pourquoi ne pas simplement afficher le contenu de la variable, au lieu de passer par l'écriture/lecture d'un fichier?

Bonne continuation.

EM.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.