PHP

Idée pour modifier un mini-calendrier

Résolu

Bonjour, j'espère que vous allez bien en ce temps de confinement, je vous sollicite aujourd'hui pour vous demandez comment je pourrais faire en sorte que le mini calendrier que j'ai fait soit sous forme d'un pop-up. Avec des amis, nous avons fait un agenda et on aimerai bien intégrer le mini-calendrier. J'aimerai bien que, lorsque j'appuie sur le mois le mini-calendrier s'affiche sous forme de pop-up.

Voila avez vous des idées, dois-je utiliser un bout de javascript pour une fonction onClick, avec un window ? A quoi pourrait ressembler le petit bout de code ??

Voici le code en php.


<?php
//FONCTION PRINCIPALE 
function calendrier($m_donne,$a_donne){
	include("config.php");
	
	// On récupère le mois et l'année dans la barre de navigation
	$m = $_GET['m'];
	$a = $_GET['a'];


	// Si rien n'est spécifié, cela veut dire qu'il faut afficher le mois et l'année donnés par la fonction
	if ($m == "") { $m = $m_donne; }
	if ($a == "") { $a = $a_donne; }


	// Calcul du nombre de jours dans chaque mois en prenant compte des années bisextiles. les tableaux PHP commençant à 0 et non à 1.
	if (($a % 4) == 0){
		$nbrjour = array(0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	}else{
		$nbrjour = array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	}


	// On cherche grâce à cette fonction à quel jour de la semaine correspond le 1er du mois 
	$premierdumois = jddayofweek(cal_to_jd($CAL_FRENCH, $m, 1, $a), 0);
	if($premierdumois == 0){
		$premierdumois = 7;
	}


	//Préparation du tableau avec le nom du mois et la liste des jours de la semaine
	echo "<table border=1 bordercolor=\"#FFFFFF\"><tr><td class=\"fleches\">"
		.mois_precedent($m,$mois[$m],$a)
		."</td><td class=\"nom_mois\" colspan=\"5\">$mois[$m] $a</td><td class=\"fleches\">"
		.mois_suivant($m,$a)
		."</td></tr><tr class=\"noms_jours\">"
		."<td>$jours[1]</td><td>$jours[2]</td><td>$jours[3]</td><td>$jours[4]</td><td>$jours[5]</td><td>$jours[6]</td><td>$jours[7]</td></tr><tr>";


	//Cette variable est celle qui va afficher les jours de la semaine
	$jour=1;	


	//Celle-ci sert à afficher les jours du mois précédent qui apparaissent
	$joursmoisavant = $nbrjour[$m-1] - $premierdumois+2;	


	//Et celle-ci les jours du mois suivant
	$jourmoissuivant = 1//Si c'est janvier, le mois d'avant n'est pas à 0 mais 31 jours!
	if($m == 1){
		$joursmoisavant = $nbrjour[$m+11] - $premierdumois+2; 
	}


	//La boucle for va nous permettre de créer l'affichage du calendrier.


	// Tant que la variable i ne correspond pas au premier jour du mois, 
	// on fait des cellules de tableau avec les derniers jours du mois précédent
	for($i=1;$i<40;$i++){		
		if($i < $premierdumois){	
		echo "<td class=\"cases_vides\">$joursmoisavant</td>";
		$joursmoisavant++;
		}else{


			/*Si la variable $jour correspond à la date d'aujourd'hui
			les cellules sont remplies avec les dates d'aujourd'hui*/


			if($jour == date("d") && $m == date("n")){ 	
				echo "<td class=\"aujourdhui\">$jour</td>";
			}elseecho "<td class=\"jours\">$jour</td>";
			}
			//Cette incrémentation nous permet de passer au lendemain.
			$jour++;	
		
			/*Si $jour est plus élevée que le nombre de jours du mois,  c'est que c'est la fin du mois. 
			    On remplit les cases vides avec les premiers jours des mois suivants. 
			    Mettre la variable $i à 41 va nous permettre de sortir de la boucle.e */
			if($jour > ($nbrjour[$m])){
				while($i % 7 != 0){
					echo "<td class=\"cases_vides\">$jourmoissuivant</td>";
					$i++;
					$jourmoissuivant++;
				}
			echo "</tr></table>";
			$i=41;
			}
		}
	
		// Si $i correspond à un dimanche, on passe à la ligne suivante du tableau.
		if($i % 7 == 0){
			echo "</tr><tr>";
		}


	}


}


//FONCTION POUR AFFICHER LE MOINS SUIVANT
function mois_suivant($m,$a){
	$m++;	//mois suivant, donc on incrémente de 1
	if($m==13){	//si le mois et 13 ça joue pas! cela veut dire qu'il faut augmenter l'année de 1 et repasser le mois à 1
		$a++;
		$m=1;
	}
	//$_SERVER-> tableau contenant des informations concernant les dosiiers et chemins du script.
	//PHP_SELF-> désigne quant à lui le nom du fichier du scrpit qui est en cours d'éxécution. 
	return '<a href="'.$_SERVER['PHP_SELF']."?m=$m&a=$a\"> &raquo; </a>";
}


//FONCTION POUR AFFICHER LE MOINS PRECEDENT
function mois_precedent($m,$mois,$a){
	$m--;
	if($m==0){
		$a--;
		$m=12;
	}
	return '<a href="'.$_SERVER['PHP_SELF']."?m=$m&a=$a\"> &laquo; </a>";
}
?>
543 vues
24 avril 2020 à 14:46
Cette pub permet au site de vivre ...

8 commentaires

Je te remercie pour ton idée et ton aide ^^ je vais voir ce que je peux faire


Bonne soirée a toi

Re:


Si tu souhaites faire comme un modal, voilà un exemple + le code que tu peux télécharger 😉

Tu peux facilement laisser tomber JQuery pour faire le design du calendrier en HTML/CSS 😉

Pour le bouton, tu pourras afficher le mois actuel avec ce code :


<?php echo date('F'); ?>


En espérant que l'idée t'es aidé 😉

Re : j'etais plus sur mon pc, du coup oui c'est ca, le mois actuel on va le transformé en bouton, c'est exactement ça.

Re:


A vrai dire oui et non... 😓

En fait ce serait un bouton par exemple avec le mois actuel inscrit ? 🤔

Oui c'est bien un truc dans le genre qu'il me faut mais à la place que ce soit un champ vide, là où je vais cliquer ca va etre sur le mois actuelle de mon calendrier, je sais pas si tu vois 😟🤔

Re:


Ah d'accord je vois, à cet instant, j'ai penser à JQuery... C'est bien ce que tu souhaites ? 🤔

@Jerem971


AH je vois je vois bah figure toi qu'on a utiliser ce tuto et d'autres tutos, en soit le calendrier on l'a deja. Ce qu'on veut intégrer c'est ce mini-calendrier sous format pop-up

Hello @Kemo,


Tout d'abord, as-tu regarder un tuto ou une formation particulière pour le faire ? 🤔

Le tuto de Jonathan ne te convient pas ? 🤔

Cette pub permet au site de vivre ...