toujours en mode casse-crâne sur mon bureau quand il s'agit des dates... je vous donne la problèmatique...
Comment, à partir d'une date entrée en paramètre.... savoir s'il s'agit du premier, second, troisieme, quatrieme, dernier jour de ce mois ?
un exemple : on est le 6 juillet 2015 aujourd'hui : Ben c'est le 1er lundi du mois...
Je vais tenté à présent de vous expliquer pourquoi j'ai besoin de cette aide (parceque je pense pas m'y prendre correctement):
Je dispose dans ma base de données d'une table regroupant les interventions programmées de mes clients... (client, type_programmation, heure, duree, jours_semaine, jours_mois, choix_semaine, mois_reference)
Le type_programmation peut prendre les valeurs ci-dessous : (les champs non necessaire dans la table reste à 0), si il y a plusieurs valeurs dans un champs, je réalise un split (ex : jours_semaine = 23 devient une table {2,3} correspondant à mardi et mercredi
1 : quotidien
2 : hebdomadaire (avec choix de jours_semaine) : ex : tous les mardis et jeudis du mois
31 : mensuelle (avec jours_mois qui se repete mensuellement) ex : tous les 11 du mois (pas de split ici evidement)
32 : mensuelle (avec choix des jours_semaine et choix_semaine qui se repete mensuellement) : ex : tous premiers mardis et mercredi du mois
33 : trimestriellement (la meme chose que 32 avec un mois_reference qui s'incremente de 3 pour etre pris en compte quand on est dans les mois correspondant) : Exemple : tous les premiers lundi du mois à compter du mois de janvier
Je sais je suis tortureux dans ma caboche...
Du coup par la suite je réalise des req_sql en fonction du type de programmation, ET pour chaque type de programmation, j'ajoute une intervention si elle doit avoir lieu dans la semaine en cours, alors evidemment, quotidien et hebdo ainsi que mensu31, peanut...
mensu32 probleme, je vérifie si la date doit être prise en compte pour la semaine en cours, du coup... je fais comme ceci (qui marche pas bien ^^)
//Je recupere la date de ce lundi :
$date->setISODate(2015, $num_semaine, 1); $lundi = $date->format('d');
//apres avoir fait ma req_sql pour prendre tous les type_prog =32, je transforme les split en texte pour le bon format des req_date
et je vérifie chaque jours/semaines et je compare... (attention la c'est tordu...)
$choix_semaine= $rep_exist_reunion_ippr_mensuel32['choix_semaine'];
$choix_semaine = str_split($choix_semaine);
$jours_semaine= $rep_exist_reunion_ippr_mensuel32['jours_semaine'];
$jours_semaine = str_split($jours_semaine);
for($i=0; $i<count($choix_semaine);$i++)
{
$choixT = $choix_semaine[$i];
switch ($choixT)
{
case '1':
$ref_choix_semaine = 'first' ;
for($j=0; $j<count($jours_semaine);$j++)
{
$jourT = $jours_semaine[$j];
switch ($jourT)
{
case '1':
$ref_jours_semaine = 'Monday' ;
$date_boucle = date("d", strtotime($ref_choix_semaine.' '.$ref_jours_semaine));
if (($date_boucle == $lundi))
{
//ok ma date de mon intervention correspond à ma date du jour blabla je lance l'inter
Courage les amis, on y arrivera ensemble, un fofo c'est la pour ca