Calendrier + agenda très simple (gerer les jours fériés et les jours spéciaux)

Soyez le premier à donner votre avis sur cette source.

Vue 31 677 fois - Téléchargée 605 849 fois

Description

Salut,
Voici un script très simple d'une agenda en ligne , au quelle on peut gérer les jours fériées et les jours spéciaux.
L'avantage de ce script est qu'il est très simple à le paramétrer pour qu'il répond à vos besoins (pour une agenda).
Coté graphiquement il est très simple aussi de le modifier grâce au fichiers CSS

Source / Exemple :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Agenda en PHP</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<?php
$list_fer=array(7);//Liste pour les jours ferié; EX: $list_fer=array(7,1)==>tous les dimanches et les Lundi seront des jours fériers

$list_spe=array('1986-10-31','2009-4-12','2009-9-23');//Mettez vos dates des evenements ; NB format(annee-m-j)

$lien_redir="date_info.php";//Lien de redirection apres un clic sur une date, NB la date selectionner va etre ajouter à ce lien afin de la récuperer ultérieurement 

$clic=1;//1==>Activer les clic sur tous les dates; 2==>Activer les clic uniquement sur les dates speciaux; 3==>Désactiver les clics sur tous les dates

$col1="#d6f21a";//couleur au passage du souris pour les dates normales

$col2="#8af5b5";//couleur au passage du souris pour les dates speciaux

$col3="#6a92db";//couleur au passage du souris pour les dates férié

$mois_fr = Array("", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août","Septembre", "Octobre", "Novembre", "Décembre");

if(isset($_GET['mois']) && isset($_GET['annee']))
{
	$mois=$_GET['mois'];
	$annee=$_GET['annee'];
}
else
{
	$mois=date("n");
	$annee=date("Y");
}
$ccl2=array($col1,$col2,$col3);
$l_day=date("t",mktime(0,0,0,$mois,1,$annee));
$x=date("N", mktime(0, 0, 0, $mois,1 , $annee));
$y=date("N", mktime(0, 0, 0, $mois,$l_day , $annee));
$titre=$mois_fr[$mois]." : ".$annee;
//echo $l_day;
?>
<body>
<center>
<form name="dt" method="get" action="">
<select name="mois" id="mois" onChange="change()" class="liste">
<?php
	for($i=1;$i<13;$i++)
	{
		echo '<option value="'.$i.'"';
		if($i==$mois)
			echo ' selected ';
		echo '>'.$mois_fr[$i].'</option>';
	}
?>
</select>
<select name="annee" id="annee" onChange="change()" class="liste">
<?php
	for($i=1950;$i<2035;$i++)
	{
		echo '<option value="'.$i.'"';
		if($i==$annee)
			echo ' selected ';
		echo '>'.$i.'</option>';
	}
?>
</select>
</form>
<table class="tableau"><caption><?php echo $titre ;?></caption>
<tr><th>Lun</th><th>Mar</th><th>Mer</th><th>Jeu</th><th>Ven</th><th>Sam</th><th>Dim</th></tr>
<tr>
<?php
//echo $y;
$case=0;
if($x>1)
	for($i=1;$i<$x;$i++)
	{
		echo '<td class="desactive">&nbsp;</td>';
		$case++;
	}
for($i=1;$i<($l_day+1);$i++)
{
	$f=$y=date("N", mktime(0, 0, 0, $mois,$i , $annee));
	$da=$annee."-".$mois."-".$i;
	$lien=$lien_redir;
	$lien.="?dt=".$da;
	echo "<td";
	if(in_array($da, $list_spe))
	{
		echo " class='special' onmouseover='over(this,1,2)'";
		if($clic==1||$clic==2)
			echo " onclick='go_lien(\"$lien\")' ";
	}
	else if(in_array($f, $list_fer))
	{
		echo " class='ferier' onmouseover='over(this,2,2)'";
		if($clic==1)
			echo " onclick='go_lien(\"$lien\")' ";
	}
	else 
	{
		echo" onmouseover='over(this,0,2)' ";
		if($clic==1)
			echo " onclick='go_lien(\"$lien\")' ";
	}
	echo" onmouseout='over(this,0,1)'>$i</td>";
	$case++;
	if($case%7==0)
		echo "</tr><tr>";
	
}
if($y!=7)
	for($i=$y;$i<7;$i++)
	{
		echo '<td class="desactive">&nbsp;</td>';
	}
?></tr>
</table>
</center>
</body></html>

<script type="text/javascript">
function change()
{
	document.dt.submit();
}
	function over(this_,a,t)
{
	<?php 
	echo "var c2=['$ccl2[0]','$ccl2[1]','$ccl2[2]'];";
	?>
	var col;
	if(t==2)
		this_.style.backgroundColor=c2[a];
	else
		this_.style.backgroundColor="";
}
function go_lien(a)
{
	top.document.location=a;
}
</script>

Conclusion :


Finalement j'espère que certains trouvent leurs bonheur dans ce script :)
Le zip contient 2 versions :
une version simple (juste le calendrier)
une version plus approfondi (calendrier + module pour gérer les date et les consulter), cette version nécessite une connexion à une base de donnée

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Bonjour, votre agenda fonctionne bien mais j'ai juste un souci avec l'url lorsque l'on change le mois ou l'année.
L'url générée est ?mois=4&annee=2018 mais je voudrais plutôt avoir .4.2018.html
Comment faire pour modifier l'url générée ?
Merci de votre aide.
je l'ai essayé mais il se trouve qu'il faut passer en PDO.
abruzzes
Messages postés
1
Date d'inscription
vendredi 23 octobre 2015
Statut
Membre
Dernière intervention
23 octobre 2015
-
bonjour

j'ai un petit problème, quand j'ajoute un événement il s'enregistre bien dans la base.
mais la case du jour ne change pas de couleur, mais j'ai le message "Evénement ajouté" (en localhost ça fonctionne, mais pas sur le serveur).
quand je repase en mode user l'agenda et vide et rien ne se produit quand je clique dans la case avec l'èvénement.

merci par avance.

agenda.php

<?php
include('conf.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Agenda</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<?php
$list_fer=array(7);//Liste pour les jours ferié; EX: $list_fer=array(7,1)==>tous les dimanches et les Lundi seront des jours fériers

$sql="select dt from agenda";
$req=mysqli_query($db,$sql);
$k=0;
while($row = mysqli_fetch_array($req, MYSQLI_NUM))
{
$list_spe[$k]=$data[0];
$k++;
}
if($k==0)
$list_spe[0]="";
//$list_spe=array('1986-10-31','2009-4-12','2009-9-23');//Mettez vos dates des evenements ; NB format(annee-m-j)
if(isset($_GET['admin']))
$lien_redir="gestion.php";
else
$lien_redir="date_info.php";//Lien de redirection apres un clic sur une date, NB la date selectionner va etre ajouter à ce lien afin de la récuperer ultérieurement
if(isset($_GET['admin']))
$clic=1;//1==>Activer les clic sur tous les dates; 2==>Activer les clic uniquement sur les dates speciaux; 3==>Désactiver les clics sur tous les dates
else
$clic=2;
$col1="#d6f21a";//couleur au passage du souris pour les dates normales

$col2="#8af5b5";//couleur au passage du souris pour les dates speciaux

$col3="#6a92db";//couleur au passage du souris pour les dates férié

$mois_fr = Array("", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août","Septembre", "Octobre", "Novembre", "Décembre");


if(isset($_GET['mois']) && isset($_GET['annee']))
{
$mois=$_GET['mois'];
$annee=$_GET['annee'];
}
else
{
$mois=date("n");
$annee=date("Y");
}
$s=strlen($mois)-1;
if($mois<10)
$mois=$mois[$s];
$ccl2=array($col1,$col2,$col3);
$l_day=date("t",mktime(0,0,0,$mois,1,$annee));
$x=date("N", mktime(0, 0, 0, $mois,1 , $annee));
$y=date("N", mktime(0, 0, 0, $mois,$l_day , $annee));
$titre=$mois_fr[$mois]." : ".$annee;
//echo $l_day;
?>
<body>
<center>
!-- <div id="lien">
<?php
if(isset($_GET['admin']))
echo '<a href="../index.php?page=agenda">Passer en mode User</a>';
else
echo'<a href="agenda/agenda.php?admin">Passer en mode Admin</a>';
?>
</div> -->
<form name="dt" method="get" action="">
<?php
if(isset($_GET['admin']))
echo '<input type="hidden" name="admin" />';
?>
<select name="mois" id="mois" onChange="change()" class="liste">
<?php
for($i=1;$i<13;$i++)
{
echo '<option value="'.$i.'"';
if($i==$mois)
echo ' selected ';
echo '>'.$mois_fr[$i].'</option>';
}
?>
</select>
<select name="annee" id="annee" onChange="change()" class="liste">
<?php
for($i=1950;$i<2035;$i++)
{
echo '<option value="'.$i.'"';
if($i==$annee)
echo ' selected ';
echo '>'.$i.'</option>';
}
?>
</select>
</form>
<table class="tableau"><caption><?php echo $titre ;?></caption>
<tr><th>Lun</th><th>Mar</th><th>Mer</th><th>Jeu</th><th>Ven</th><th>Sam</th><th>Dim</th></tr>
<tr>
<?php
//echo $y;
$case=0;
if($x>1)
for($i=1;$i<$x;$i++)
{
echo '<td class="desactive"> </td>';
$case++;
}
for($i=1;$i<($l_day+1);$i++)
{
$f=$y=date("N", mktime(0, 0, 0, $mois,$i , $annee));
if($i<10)
$jj="0".$i;
else
$jj=$i;
if($mois<10)
$mm="0".$mois;
else
$mm=$mois;
$da=$annee."-".$mm."-".$jj;
$lien=$lien_redir;
$lien.="?dt=".$da;
echo "<td";
if(in_array($da, $list_spe))
{
echo " class='special' onmouseover='over(this,1,2)'";
if($clic==1||$clic==2)
echo " onclick='go_lien(\"$lien\",this)' ";
}
else if(in_array($f, $list_fer))
{
echo " class='ferier' onmouseover='over(this,2,2)'";
if($clic==1)
echo " onclick='go_lien(\"$lien\",this)' ";
}
else
{
echo" onmouseover='over(this,0,2)' ";
if($clic==1)
echo " onclick='go_lien(\"$lien\",this)' ";
}
echo" onmouseout='over(this,0,1)'>$i</td>";
$case++;
if($case%7==0)
echo "</tr><tr>";

}
if($y!=7)
for($i=$y;$i<7;$i++)
{
echo '<td class="desactive"> </td>';
}
?></tr>
</table>
<?php
if(isset($_GET['mod']))
echo "<div id='notif'>Calendrier modifié</div>";
elseif(isset($_GET['add']))
echo "<div id='notif'>Evénement ajouté</div>";
?>
</center>
</body></html>

<script type="text/javascript">
function change()
{
document.dt.submit();
}
function over(this_,a,t)
{
<?php
echo "var c2=['$ccl2[0]','$ccl2[1]','$ccl2[2]'];";
?>
var col;
if(t==2)
this_.style.backgroundColor=c2[a];
else
this_.style.backgroundColor="";
}
function go_lien(a,this_)
{
over(this_,0,1);
top.document.location=a;
}
</script>


gestion.php

<?php
include('conf.php');
if(isset($_POST['sup']))
{
$id=$_POST['upd'];
$dat=$_POST['dd'];
$d_l=explode('-',$dat);
$mois=$d_l[1];
$anne=$d_l[0];
$lien="&mois=".$mois."&annee=".$anne;
$l=$_POST['lieu'];
$e=$_POST['event'];
if($_POST['sup']==1)
$sql="delete from agenda where id=$id";
else
$sql="update agenda set lieu='$l' , event='$e' where id=$id";
mysqli_query($db,$sql);
header("location: agenda.php?admin&mod$lien");
}
else if(isset($_POST['lieu']))
{
$dat=$_POST['dd'];
$l=$_POST['lieu'];
$e=$_POST['event'];
$d_l=explode('-',$dat);
$mois=$d_l[1];
$anne=$d_l[0];
$lien="&mois=".$mois."&annee=".$anne;
$sql="insert into agenda (dt,lieu,event) values('$dat','$l','$e')";
mysqli_query($db,$sql);
echo $sql;
header("location: agenda.php?admin&add$lien");
}
else
{
$d=$_GET['dt'];
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Details de la date : <?php echo $d;?></title>
</head>
<body>
<h1>Gestion de la date : <?php echo $d;?></h1>
<?php
$sql="select * from agenda where dt='$d'";
$req=mysqli_query($db,$sql);
if(mysqli_num_rows($req)==1)
while($data = mysqli_fetch_array($req))
{
$mod=1;
$id=$data['id'];
$loc=$data['event'];
$eve=$data['lieu'];
}
else
{
$mod=0;
$loc="";
$eve="";
}
?>
<form name="gr" action="gestion.php" method="post"><input type='hidden' id='dd' name='dd' value='<?php echo $d; ?>'>
<table >
<tr height="50px"><td width="150px"><strong>Evenement</strong></td><td><input type="text" name="lieu" value="<?php echo $loc;?>"/></td></tr>
<tr height="50px"><td><strong>Lieu</strong></td><td><input type="text" name="event" value="<?php echo $eve;?>"/></td></tr>
<tr height="50px">
<?php
if($mod==0)
echo "<td colspan='2'><input type='submit' value='Ajouter'></td>";
else
{
echo "<td colspan='2'><input type='submit' value='Modifier'>  <input type='button' value='Supprimer' onclick='supp()'>";
echo "<input type='hidden' id='sup' name='sup' value='0'><input type='hidden' name='upd' value='$id'></td>";
}
?>
</tr>
</table>
</form>
</body></html>
<?php
}
?>
<script type="text/javascript">
function supp()
{
if(confirm("Etes vous sur de supprimer cette Date")==true)
{
document.getElementById('sup').value=1;
gr.submit();
}
}
</script>


date_info.php

<?php
include('conf.php');
$d=$_GET['dt'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Details de la date : <?php echo $d;?></title>
</head>
<body>
<h1>Detail de la date : <?php echo $d;?></h1>
<?php
$sql="select * from agenda where dt='$d'";
$req=mysqli_query($db,$sql);
if(mysqli_num_rows($req)==0)
echo "Aucune information pour cette date";
else
while($data = mysqli_fetch_array($req))
{
?>
<table >
<tr height="50px"><td width="150px"><strong>Evenement</strong></td><td><?php echo $data['event'];?></td></tr>
<tr height="50px"><td><strong>Lieu</strong></td><td><?php echo $data['lieu'];?></td></tr>
</table>
<?php
}
?>
</body>
</html>

magicman07
Messages postés
2
Date d'inscription
samedi 29 septembre 2007
Statut
Membre
Dernière intervention
6 avril 2010
-
bonjour et bravo pour ce code, il m'aide vraiment dans le travail que je suis en train de faire.
j'aurais une petite question ^^
je suis en train de regarder le code en détail et je voulais savoir s'il y avait une solution pour appliquer une période de début et de fin sur un évènement (en ajoutant bien sûr un champs à ma table). Genre sortie en bateau sur 3 jours.

Merci par avance pour vos idées, je continue à mater ton petit code vraiment sympathique !!!

Merci encore
alex0915
Messages postés
1
Date d'inscription
mardi 16 novembre 2010
Statut
Membre
Dernière intervention
15 juin 2011
-
Bonjour,

J'aurai quelques questions a vous poser svp:

- je cherche tout d'abord a modifier la couleur des jours normaux (non feries et non speciaux)
c'est a dire , les jours du 1 au 31 par exemple.

- Ensuite j'aimerais savoir comment faire en sorte d'enlever le concet d'admin user en gros enlever cette Div et rester en mode admin (afin aussi d'eviter les redirections)

Merci de vos reponses

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.