Periodicité d'un évenement

Description

Alors ce code j'espere qu'il sera interessant a pour but de generer une periodicité pour un evenement, etant debutant je sais pas trop ce que cela vaut mais faut bien se lancer un jour....

Source / Exemple :


<?php

//* CAL PREMIER JOUR POUR UNE SEMAINE
function cal_one_sem($mois,$Annee,$days_choix_l,$days_sem)
{
        $jourSemainePremier=date('w',mktime(0,0,0,$mois,1,$Annee));
        $jourMoisPremier=(7+$days_choix_l-$jourSemainePremier)%7+1+7*($days_sem-1);
        return mktime(0,0,0,$mois,$jourMoisPremier,$Annee);
}
//* CAL PREMIER JOUR TOUTES LES SEMAINES
function cal_all_sem($mois,$Annee,$days_choix_l)
{
    for($days_sem=1;1;$days_sem++)
    {
        $date=cal_one_sem($mois,$Annee,$days_choix_l,$days_sem);
        if($mois<date('m',$date))
            return $resultat;
        else
            $resultat[]=$date;
    }
}

function AfficheDate ($Annee="", $mois="", $days_all="", $days_choix_l="", $days_sem="", $days_date="", $duree="") {

$Annee = ($Annee == 'Y') ? date('Y') : $Annee;						// Définition année choisie
$days_all = (empty($days_all)) ? NULL : $days_all;					// Tous les jours du mois
$days_choix_l = (empty($days_choix_l)) ? NULL : $days_choix_l;		// Jour de la semaine 	= 0-->6
$days_sem = (empty($days_sem)) ? NULL : $days_sem;					// Semaines 			= 1-->Dernier ou Toutes
$days_date = (empty($days_date)) ? NULL : $days_date;				// Jour du mois			= 1-->31 

if(isset($days_all)) {			
		/// retourne tous les jours de la semaines
			$JourMax = date("t",mktime(0,0,0,$mois,1,$Annee));
			for($jour=1;$jour<=$JourMax;$jour++) {
			echo $jour.' '.$mois.' '.$Annee.'<br>'; // on affiche l'élément du tableau d'indice $i
			}
			
} elseif(isset($days_choix_l)) {
			if($days_sem == 'ALL') {
				/// On retourne toutes les semaines, le Xjour, tous les ans, pour le mois choisi !
    			$resultat=cal_all_sem($mois,$Annee,$days_choix_l);
    			$totalsemaine=sizeof($resultat);
    			for($i=0;$i<$totalsemaine;$i++) {
        		echo date('d/m/Y',$resultat[$i]).'<br>';
				}
			} else {
				/// On retourne tous les 1/2/3/4/ semaines, le Xjour, tous les ans, pour le mois choisi !
				echo date('w - l - j M Y',cal_one_sem($mois,$Annee,$days_choix_l,$days_sem)).'<br>';
			}
} elseif(isset($days_date)) {
		/// retourne le jour choisie
			/// On retourne la date choisie, tous les ans, ou l'année choisie, pour le mois choisi !
			echo date("j M Y", mktime(0, 0, 0, $mois, $days_date, $Annee));
} else {
		echo 'ERREUR';
}

}

/// Année égal année en cours (Y) ou année determiné (2005,2006,2007...)
// Définition année choisie
// Tous les jours du mois
// Jour de la semaine 	= 0-->6
// Semaines 			= 1-->Dernier ou Toutes
// Jour du mois			= 1-->31 
AfficheDate ('2005', 8, '', '3', 'ALL', '', '');
?>

Conclusion :


on affiche la fonction avec
AfficheDate ('2005', 8, '', '3', 'ALL', '', '');

par exemple les fetes de bayonne (exemple de la region qui en conquit plus d'un...) qui commence tous les ans le 1er mercredi d'aout pendant 5 jours
AfficheDate ('Y', 8, '', '3', '1', '', '5');

Mercredi 01 Août 2007
et Mercredi 06 Août 2008 pour l'année suivante

la valeur 1 : Y (Tous les ans), ou l'année choisi 2005 ou 2007...
la valeur 2 : le mois choisi 1,2,3,4,5

la valeur 3 : ALL a remplir pour avoir tous les jours du mois

la valeur 4 : jour de la semaine 1 (lundi) à 0 (dimanche)
la valeur 5 : ALL si c'est toutes les semaines ou sinon le numero de la semaine

la valeur 6 : date 1 à 31

la valeur 7 : duree de l'evenement

Codes Sources

A voir également

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.

Du même auteur (aquewel)