begin process at 2012 05 27 16:38:56
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date / Heure

 > AGENDA GRAPHIQUE SIMPLE (DÉBUTANT) À INTÉGRER

AGENDA GRAPHIQUE SIMPLE (DÉBUTANT) À INTÉGRER


 Information sur la source

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Date / Heure Classé sous :agenda, calendrier, graphique, tableau Niveau :Débutant Date de création :12/03/2011 Date de mise à jour :14/03/2011 23:21:08 Vu :6 477

Auteur : NicomakM

Ecrire un message privé
Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Bonjour,
c'est mon premier dépôt de code...
Comme je ne trouvais pas un agenda graphique simple pour visualiser mes notes, j'ai créer cette représentation graphique sous forme de tableau de couleur.

attention:
les notes qui se chevauchent ne se voient pas (seule la plus ancienne est visible)
les bulles d'info se font avec une modification css, ce qui explique les balises <span>

je vous laisse le soin de créer les formulaire d'enregistrement et d'édition pour les notes

je ne suis pas programmeur, si ça peux servir à un autre débutant comme moi...

merci pour vos avis et conseils.

Source

  • <?php
  • /*******************************************************************************
  • ** Planning graphique en php pour l'affichage des notes *
  • ** d'agenda présentes dans une base de données SQL *
  • ** à insérer dans une page web existante (include) *
  • ** *
  • ** Ici, la Table est appelée Planning et possède les champs suivants: *
  • ** *
  • ** id_pla - clé primaire auto-incrément *
  • ** date - Format date *
  • ** hdeb - heure de début tinyint(4) *
  • ** hfin - heure de fin tinyint(4) *
  • ** titre - nom du rendez-vous text *
  • ** lieu - lieu du rendez-vous text *
  • ** a_faire - sujet du rendez-vous text *
  • ** color - couleur d'arrière plan varchar(10) *
  • ** *
  • ** Les liens renvoient vers planinc.php pour créer une note *
  • ** et planedit.php pour éditer une note *
  • *******************************************************************************/
  • ?>
  • <table align=left width=120>
  • <tr>
  • <td>
  • <?php
  • /*******************************************************************************
  • ** On défini le numéro de semaine (page) et l'année de l'affichage *
  • *******************************************************************************/
  • $num_semaine = date("W") ;
  • if (isset($_GET['page']))
  • {
  • $page = $_GET['page'];
  • }
  • else
  • {
  • $page = $num_semaine;
  • }
  • if (isset($_GET['an']))
  • {
  • $num_annee = $_GET['an'];
  • }
  • else
  • {
  • $num_annee = date("Y") ;
  • }
  • $aujourdhui = date("Y-m-d");
  • /*******************************************************************************
  • ** on défini chaque jour de la semaine(page) choisie *
  • *******************************************************************************/
  • // on choisi la présentation "française" des dates
  • setlocale(LC_TIME, "fr");
  • // fonction permettant de retrouver le lundi d'une semaine et d'une année choisies*
  • // Le numéro de semaine n'est comptabilisé qu'au Jeudi de la semaine *
  • // on on ajoute le nombre de semaines(page) à la première semaine(-1) *
  • // et on retire 3 jours pour revenir à lundi *
  • // et on sort la date au format de la base de données AAAA-MM-JJ *
  • function debutsem($n,$year){
  • $n--;
  • // On ajoute les semaines et on retire 3 jours pour passer de jeudi à lundi *
  • $timesp=(strtotime("first Thursday january $year +$n weeks -3 days" ));
  • // On ne réutilise pas $year car la semaine 1 peut commencer l'année précédente... voir l'exemple en 2008
  • $datedeb = strftime("%Y-%m-%d ",$timesp);
  • return $datedeb;
  • }
  • // On défini l'ensemble des dates à utiliser: *
  • // le $date_debut est le résultat de la fonction précédente *
  • // on la décompose et on recréé tous les autres jours de la semaine *
  • $date_debut = debutsem($page,$num_annee);
  • $semaine = explode("-", $date_debut);
  • $date_lundi = date("Y-m-d",mktime(0, 0, 0, $semaine [1], $semaine [2], $semaine [0]));
  • $date_mardi = date("Y-m-d",mktime(0, 0, 0, $semaine [1], $semaine [2]+1, $semaine [0]));
  • $date_mercredi = date("Y-m-d",mktime(0, 0, 0, $semaine [1], $semaine [2]+2, $semaine [0]));
  • $date_jeudi = date("Y-m-d",mktime(0, 0, 0, $semaine [1], $semaine [2]+3, $semaine [0]));
  • $date_vendredi = date("Y-m-d",mktime(0, 0, 0, $semaine [1], $semaine [2]+4, $semaine [0]));
  • $date_samedi = date("Y-m-d",mktime(0, 0, 0, $semaine [1], $semaine [2]+5, $semaine [0]));
  • $date_dimanche = date("Y-m-d",mktime(0, 0, 0, $semaine [1], $semaine [2]+6, $semaine [0]));
  • // On formate l'affichage des jours sur le planning *
  • // Le $Lun et $Dim serviront pour l'affichage de la semaine en clair (du..au..)*
  • $Today = strftime("%a %d / %m",strtotime("$aujourdhui"));
  • $Lundi = strftime("%a %d / %m",strtotime("$date_lundi"));
  • $Lun = strftime("%a %d %B",strtotime("$date_lundi"));
  • $Mardi = strftime("%a %d / %m",strtotime("$date_mardi"));
  • $Mercredi = strftime("%a %d / %m",strtotime("$date_mercredi"));
  • $Jeudi = strftime("%a %d / %m",strtotime("$date_jeudi"));
  • $Vendredi = strftime("%a %d / %m",strtotime("$date_vendredi"));
  • $Samedi = strftime("%a %d / %m",strtotime("$date_samedi"));
  • $Dimanche = strftime("%a %d / %m",strtotime("$date_dimanche"));
  • $Dim = strftime("%a %d %B",strtotime("$date_dimanche"));
  • /*******************************************************************************
  • * RECHERCHE DE JOURS FÉRIÉS *
  • *******************************************************************************/
  • // php permet de définir la date de pâque avec la fonction easter_date(année) *
  • $date_paque = date("Y-m-d", easter_date($num_annee));
  • // Ensuite on exploite la pâque pour trouver les 3 dates fériées mobiles *
  • $jour = explode("-", $date_paque);
  • $lun_paque = date('Y-m-d',mktime(0, 0, 0, $jour [1], $jour [2]+1, $jour [0]));
  • $assencion = date('Y-m-d',mktime(0, 0, 0, $jour [1], $jour [2]+39, $jour [0]));
  • $pentecote = date('Y-m-d',mktime(0, 0, 0, $jour [1], $jour [2]+50, $jour [0]));
  • // Les jours fixes: *
  • $jourDelAn = $num_annee.'-01-01';
  • $PremieMai = $num_annee.'-05-01';
  • $armi_1945 = $num_annee.'-05-08';
  • $FeteNatio = $num_annee.'-07-14';
  • $assomptio = $num_annee.'-08-15';
  • $toussaint = $num_annee.'-11-01';
  • $armi_1918 = $num_annee.'-11-11';
  • $noel_noel = $num_annee.'-12-25';
  • // un jour de plus au cas ou le 1er Janvier se trouve en semaine 52 *
  • $jourAnpre = ($num_annee + 1).'-01-01';
  • // Le tout dans un tableau pour la comparaison avec foreach *
  • $jf1 = array( $lun_paque, $assencion, $pentecote, $jourDelAn, $PremieMai, $armi_1945, $FeteNatio, $assomptio, $toussaint, $armi_1918, $noel_noel, $jourAnpre);
  • ?>
  • <br />
  • <?php
  • /*******************************************************************************
  • ** On affiche les 52 semaines avec un lien direct *
  • *******************************************************************************/
  • ?>
  • <br>
  • <table width=150 align="center">
  • <tr align=center><td><a href="monsite.php?bd=planning&page=<?php echo $page?>&an=<?php echo $num_annee-1;?>"><?php echo '<< ';?></a><?php echo 'Année '.$num_annee;?><a href="monsite.php?bd=planning&page=<?php echo $page?>&an=<?php echo $num_annee+1;?>"><?php echo ' >>';?></a></td></tr>
  • <tr align="left" bgcolor=#6BFFF0>
  • <td width=170 align="left"><?php for ($i = 1 ; $i <= 52 ; $i++)
  • {
  • if ($page==$i)
  • { if ($i<10)
  • {$z ='<font color="#FF8000" ><strong>
  • 0'.$i.'</strong></font>';}
  • else
  • {$z ='<font color="#FF8000" ><strong>
  • '.$i.'</strong></font>';}
  • }
  • else
  • { if ($i<10)
  • {$z ='<a href="monsite.php?bd=planning&page='.$i.'&an='.$num_annee.'">
  • 0'.$i.'</a>';}
  • else
  • {$z ='<a href="monsite.php?bd=planning&page='.$i.'&an='.$num_annee.'">
  • '.$i.'</a>';}
  • }
  • echo $z.'|';
  • }
  • ?>
  • </td>
  • </tr>
  • </table>
  • </td>
  • </tr>
  • </table>
  • <?php
  • /*******************************************************************************
  • ** on affiche la semaine en cours avec un lien "précédent" et "suivant" *
  • *******************************************************************************/
  • ?>
  • <table width=800 align="center">
  • <tr align=center bgcolor=#C0C0C0><td><a href="monsite.php?bd=planning&page=<?php echo $page-1;?>&an=<?php echo $num_annee;?>" title="Précédente"><?php echo '<<';?></a><?php echo '<strong>&nbsp;&nbsp;&nbsp;Semaine du '.$Lun.' au '.$Dim.'&nbsp;&nbsp;&nbsp;</strong>';?><a href="monsite.php?bd=planning&page=<?php echo $page +1;?>&an=<?php echo $num_annee;?>" title="Suivante"><?php echo '>>';?></a></td></tr>
  • <?php
  • /*******************************************************************************
  • ** on affiche chaque jour avec les évènement trouvés dans la base *
  • *******************************************************************************/
  • ?>
  • <!-- Colonne Heures -->
  • <table align=left width=50 BORDER=0 CELLSPACING=0>
  • <tr align=center><td>&nbsp;</td></tr>
  • <?php for ($i = 7 ; $i <= 20 ; $i++)
  • {
  • ?>
  • <tr align=center>
  • <td align=right><?php echo $i.'h00';?></td>
  • </tr>
  • <?php
  • }
  • ?>
  • </table>
  • <!-- Colonnes journalières -->
  • <?php
  • for ($x=1; $x<=7; $x++)
  • {
  • switch ($x) {
  • case 1:
  • $jour = $Lundi;
  • $date_jour = $date_lundi;
  • $large = "119";
  • break;
  • case 2:
  • $jour = $Mardi;
  • $date_jour = $date_mardi;
  • $large = "119";
  • break;
  • case 3:
  • $jour = $Mercredi;
  • $date_jour = $date_mercredi;
  • $large = "119";
  • break;
  • case 4:
  • $jour = $Jeudi;
  • $date_jour = $date_jeudi;
  • $large = "119";
  • break;
  • case 5:
  • $jour = $Vendredi;
  • $date_jour = $date_vendredi;
  • $large = "119";
  • break;
  • case 6:
  • $jour = $Samedi;
  • $date_jour = $date_samedi;
  • $large = "86";
  • break;
  • case 7:
  • $jour = $Dimanche;
  • $date_jour = $date_dimanche;
  • $large = "86";
  • break;
  • }
  • // On prépare une couleur par défaut pour le fond d'agenda *
  • $defaut = '#FFFAB1';
  • // On compare le jour avec le tableau des jours fériés *
  • // si un jour correspond, le fond passe en gris *
  • foreach ($jf1 as $value)
  • {
  • if ($value==$date_jour)
  • {
  • $defaut = '#C0C0C0';
  • }
  • }
  • ?>
  • <table align=left width=<?php echo $large+1;?> BORDER=0 CELLSPACING=0>
  • <tr align=center bgcolor=white><?php if ($jour==$Today ){?><td width=1 bgcolor=#FFCC5D></td><td width=<?php echo $large;?> bgcolor=#FFCC5D><strong><?php echo $jour;?></strong><?php }else{?><td width=1></td><td width=<?php echo $large;?>><?php echo $jour;}?></td></tr>
  • <?php
  • // boucle d'affichage de 7h00 à 20h00 *
  • $i=7;
  • while ($i<=20)
  • {
  • $plan = $bdd->query('SELECT * FROM planning WHERE date=\''.$date_jour.'\' AND hdeb<=\''.$i.'\' AND hfin>\''.$i.'\' ORDER BY hdeb');
  • $planning = $plan->fetch();
  • $row = ceil($planning['hfin'] - $planning['hdeb']); //on vérifie si la note s'étale sur plusieures heures
  • $aFaire = nl2br($planning['a_faire']); //on assure les retour chariot à l'affichage
  • if ($jour==$Today ){$couleur = '#FFCC5D';}else{$couleur = '#FFFFFF';} //choix de la couleur pour le jour en cours et de la couleur par défaut
  • //si la note s'étale sur plusieur heures : *
  • if ($row>=1)
  • {
  • echo '<tr align=center bgcolor='.$defaut.'>
  • <td width=1 bgcolor='.$couleur.'>&nbsp;</td>
  • <td align=center valign=top bgcolor='.$planning['color'].' rowspan='.$row.'><a href="monsite.php?bd=planedit&id='.$planning['id_pla'].'&page='.$page.'&an='.$num_annee.'" class="info">'.$planning['titre'].'<span><strong >'.$planning['titre'].'</strong><br>Lieu: '.$planning['lieu'].'<br>Heures: '.$planning['hdeb'].'h - '.$planning['hfin'].'h<br><br>'.$aFaire.'</span></a></td>
  • </tr>';
  • $i = $i + 1;
  • for ($j=$i; $j<($i+($row-1)); $j++)
  • {
  • echo '<tr align=center bgcolor='.$defaut.'>
  • <td width=1 bgcolor='.$couleur.'>&nbsp;</td>
  • </tr>';
  • }
  • $i = $i + ($row-1);
  • }
  • //si la note est inférieure à 1h : *
  • else
  • { if (isset($planning['hdeb']))
  • {echo '<tr align=center bgcolor='.$defaut.'><td width=1 bgcolor='.$couleur.'>&nbsp;</td><td align=center bgcolor='.$planning['color'].' ><a href="monsite.php?bd=planedit&id='.$planning['id_pla'].'&page='.$page.'&an='.$num_annee.'" >'.$planning['titre'].'&nbsp;</a></td></tr>';}
  • //si aucune note, alors on revoi le lien vers un formulaire de création : *
  • else
  • {echo '<tr align=center bgcolor='.$defaut.'><td width=1 bgcolor='.$couleur.'>&nbsp;</td><td align=center width="150"><a href="monsite.php?bd=planinc&hdeb='.$i.'&dat='.$date_jour.'&page='.$page.'&an='.$num_annee.'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></td></tr>';
  • }
  • $i = $i+1;
  • }
  • $plan->closeCursor();
  • }
  • ?>
  • </table>
  • <?php
  • }
  • ?>
  • </table>
<?php 
/*******************************************************************************
** Planning graphique en php pour l'affichage des notes                        *
** d'agenda présentes dans une base de données SQL                             *
** à insérer dans une page web existante (include)                             *
**                                                                             *
** Ici, la Table est appelée Planning et possède les champs suivants:          *
**                                                                             *
** id_pla  -    clé primaire auto-incrément                                    *
** date    -    Format date                                                    *
** hdeb    -    heure de début tinyint(4)                                      *
** hfin    -    heure de fin tinyint(4)                                        *
** titre   -    nom du rendez-vous text                                        *
** lieu    -    lieu du rendez-vous text                                       *
** a_faire -    sujet du rendez-vous text                                      *
** color   -    couleur d'arrière plan varchar(10)                             *
**                                                                             *
** Les liens renvoient vers planinc.php pour créer une note                    *
** et planedit.php pour éditer une note                                        *
*******************************************************************************/
?>
<table align=left width=120>
<tr>
<td>
<?php 
/*******************************************************************************
** On défini le numéro de semaine (page) et l'année de l'affichage             *
*******************************************************************************/
$num_semaine = date("W") ;
if (isset($_GET['page']))
   {
   $page = $_GET['page'];
   }
else
   {
   $page = $num_semaine;
   }

if (isset($_GET['an']))
   {
   $num_annee = $_GET['an'];
   }
else
   {
   $num_annee = date("Y") ;
   }


$aujourdhui = date("Y-m-d");



/*******************************************************************************
** on défini chaque jour de la semaine(page) choisie                           *
*******************************************************************************/

// on choisi la présentation "française" des dates

setlocale(LC_TIME, "fr");

// fonction permettant de retrouver le lundi d'une semaine et d'une année choisies*
// Le numéro de semaine n'est comptabilisé qu'au Jeudi de la semaine              *
// on on ajoute le nombre de semaines(page) à la première semaine(-1)             *
// et on retire 3 jours pour revenir à lundi                                      *
// et on sort la date au format de la base de données AAAA-MM-JJ                  *

function debutsem($n,$year){

$n--;

// On ajoute les semaines et on retire 3 jours pour passer de jeudi à lundi     *

$timesp=(strtotime("first Thursday january $year +$n weeks -3 days" ));

// On ne réutilise pas $year car la semaine 1 peut commencer l'année précédente... voir l'exemple en 2008

$datedeb = strftime("%Y-%m-%d ",$timesp);


return $datedeb;

}

// On défini l'ensemble des dates à utiliser:                                  *
// le $date_debut est le résultat de la fonction précédente                    *
// on la décompose et on recréé tous les autres jours de la semaine            *

$date_debut    = debutsem($page,$num_annee);
$semaine       = explode("-", $date_debut);
$date_lundi    = date("Y-m-d",mktime(0, 0, 0, $semaine [1], $semaine [2], $semaine [0]));
$date_mardi    = date("Y-m-d",mktime(0, 0, 0, $semaine [1], $semaine [2]+1, $semaine [0]));
$date_mercredi = date("Y-m-d",mktime(0, 0, 0, $semaine [1], $semaine [2]+2, $semaine [0]));
$date_jeudi    = date("Y-m-d",mktime(0, 0, 0, $semaine [1], $semaine [2]+3, $semaine [0]));
$date_vendredi = date("Y-m-d",mktime(0, 0, 0, $semaine [1], $semaine [2]+4, $semaine [0]));
$date_samedi   = date("Y-m-d",mktime(0, 0, 0, $semaine [1], $semaine [2]+5, $semaine [0]));
$date_dimanche = date("Y-m-d",mktime(0, 0, 0, $semaine [1], $semaine [2]+6, $semaine [0]));

// On formate l'affichage des jours sur le planning                            *
// Le $Lun et $Dim serviront pour l'affichage de la semaine en clair (du..au..)*

$Today         = strftime("%a %d / %m",strtotime("$aujourdhui"));
$Lundi         = strftime("%a %d / %m",strtotime("$date_lundi"));
$Lun           = strftime("%a %d %B",strtotime("$date_lundi"));
$Mardi         = strftime("%a %d / %m",strtotime("$date_mardi"));
$Mercredi      = strftime("%a %d / %m",strtotime("$date_mercredi"));
$Jeudi         = strftime("%a %d / %m",strtotime("$date_jeudi"));
$Vendredi      = strftime("%a %d / %m",strtotime("$date_vendredi"));
$Samedi        = strftime("%a %d / %m",strtotime("$date_samedi"));
$Dimanche      = strftime("%a %d / %m",strtotime("$date_dimanche"));
$Dim           = strftime("%a %d %B",strtotime("$date_dimanche"));

/*******************************************************************************
*   RECHERCHE DE JOURS FÉRIÉS                                                  *
*******************************************************************************/


// php permet de définir la date de pâque avec la fonction easter_date(année)  *
$date_paque = date("Y-m-d", easter_date($num_annee));
// Ensuite on exploite la pâque pour trouver les 3 dates fériées mobiles       *
$jour       = explode("-", $date_paque);
$lun_paque  = date('Y-m-d',mktime(0, 0, 0, $jour [1], $jour [2]+1, $jour [0]));
$assencion  = date('Y-m-d',mktime(0, 0, 0, $jour [1], $jour [2]+39, $jour [0]));
$pentecote  = date('Y-m-d',mktime(0, 0, 0, $jour [1], $jour [2]+50, $jour [0]));
// Les jours fixes:                                                            *
$jourDelAn  = $num_annee.'-01-01';
$PremieMai  = $num_annee.'-05-01';
$armi_1945  = $num_annee.'-05-08';
$FeteNatio  = $num_annee.'-07-14';
$assomptio  = $num_annee.'-08-15';
$toussaint  = $num_annee.'-11-01';
$armi_1918  = $num_annee.'-11-11';
$noel_noel  = $num_annee.'-12-25';
// un jour de plus au cas ou le 1er Janvier se trouve en semaine 52            *
$jourAnpre  = ($num_annee + 1).'-01-01';
// Le tout dans un tableau pour la comparaison avec foreach                    *
$jf1 = array( $lun_paque, $assencion, $pentecote, $jourDelAn, $PremieMai, $armi_1945, $FeteNatio, $assomptio, $toussaint, $armi_1918, $noel_noel, $jourAnpre);

?>
<br />
<?php 
/*******************************************************************************
** On affiche les 52 semaines avec un lien direct                              *
*******************************************************************************/

?>
<br>
<table width=150 align="center">
<tr align=center><td><a href="monsite.php?bd=planning&page=<?php echo $page?>&an=<?php echo $num_annee-1;?>"><?php echo '<< ';?></a><?php echo 'Année '.$num_annee;?><a href="monsite.php?bd=planning&page=<?php echo $page?>&an=<?php echo $num_annee+1;?>"><?php echo ' >>';?></a></td></tr>
<tr align="left" bgcolor=#6BFFF0>
<td width=170 align="left"><?php for ($i = 1 ; $i <= 52 ; $i++)
{
if ($page==$i)
   { if ($i<10)
   {$z ='<font color="#FF8000" ><strong>
   0'.$i.'</strong></font>';}
   else
   {$z ='<font color="#FF8000" ><strong>
   '.$i.'</strong></font>';}
   }
else
   { if ($i<10)
      {$z ='<a href="monsite.php?bd=planning&page='.$i.'&an='.$num_annee.'">
      0'.$i.'</a>';}
      else
      {$z ='<a href="monsite.php?bd=planning&page='.$i.'&an='.$num_annee.'">
      '.$i.'</a>';}

   }
echo $z.'|';

}
?>
</td>
</tr>

</table>
</td>
</tr>
</table>
<?php 
/*******************************************************************************
** on affiche la semaine en cours avec un lien "précédent" et "suivant"        *
*******************************************************************************/

?>
<table width=800 align="center">
<tr align=center bgcolor=#C0C0C0><td><a href="monsite.php?bd=planning&page=<?php echo $page-1;?>&an=<?php echo $num_annee;?>" title="Précédente"><?php echo '<<';?></a><?php echo '<strong>&nbsp;&nbsp;&nbsp;Semaine du '.$Lun.' au '.$Dim.'&nbsp;&nbsp;&nbsp;</strong>';?><a href="monsite.php?bd=planning&page=<?php echo $page +1;?>&an=<?php echo $num_annee;?>" title="Suivante"><?php echo '>>';?></a></td></tr>

<?php 
/*******************************************************************************
** on affiche chaque jour avec les évènement trouvés dans la base              *
*******************************************************************************/

?>
<!--                 Colonne Heures                -->
<table align=left width=50  BORDER=0 CELLSPACING=0>
<tr align=center><td>&nbsp;</td></tr>
<?php for ($i = 7 ; $i <= 20 ; $i++)
{
?>
<tr align=center>
<td align=right><?php echo $i.'h00';?></td>
</tr>
<?php
}

?>
</table>

<!--                  Colonnes journalières         -->

<?php 
for ($x=1; $x<=7; $x++)
{
switch ($x) {
   case 1:
          $jour = $Lundi;
          $date_jour = $date_lundi;
          $large = "119";
   break;
   case 2:
          $jour = $Mardi;
          $date_jour = $date_mardi;
          $large = "119";
   break;
   case 3:
          $jour = $Mercredi;
          $date_jour = $date_mercredi;
          $large = "119";
   break;
   case 4:
          $jour = $Jeudi;
          $date_jour = $date_jeudi;
          $large = "119";
   break;
   case 5:
          $jour = $Vendredi;
          $date_jour = $date_vendredi;
          $large = "119";
   break;
   case 6:
          $jour = $Samedi;
          $date_jour = $date_samedi;
          $large = "86";
   break;
   case 7:
          $jour = $Dimanche;
          $date_jour = $date_dimanche;
          $large = "86";
   break;
   }
// On prépare une couleur par défaut pour le fond d'agenda                     *
$defaut = '#FFFAB1';
// On compare le jour avec le tableau des jours fériés                         *
// si un jour correspond, le fond passe en gris                                *
foreach ($jf1 as $value)
        {
            if ($value==$date_jour)
            {
            $defaut = '#C0C0C0';
            }
        }
?>
<table align=left width=<?php echo $large+1;?>  BORDER=0 CELLSPACING=0>
<tr align=center bgcolor=white><?php if ($jour==$Today ){?><td width=1 bgcolor=#FFCC5D></td><td width=<?php echo $large;?> bgcolor=#FFCC5D><strong><?php echo $jour;?></strong><?php }else{?><td width=1></td><td width=<?php echo $large;?>><?php echo $jour;}?></td></tr>
<?php 
// boucle d'affichage de 7h00 à 20h00                                          *
$i=7;
while ($i<=20)
      {
      $plan     = $bdd->query('SELECT * FROM planning WHERE date=\''.$date_jour.'\' AND hdeb<=\''.$i.'\' AND hfin>\''.$i.'\' ORDER BY hdeb');
      $planning = $plan->fetch();
      $row      = ceil($planning['hfin'] - $planning['hdeb']);                  //on vérifie si la note s'étale sur plusieures heures
      $aFaire   = nl2br($planning['a_faire']);                                  //on assure les retour chariot à l'affichage
      if ($jour==$Today ){$couleur = '#FFCC5D';}else{$couleur = '#FFFFFF';}     //choix de la couleur pour le jour en cours et de la couleur par défaut
//si la note s'étale sur plusieur heures :                                     *
if ($row>=1)
   {
   echo '<tr align=center bgcolor='.$defaut.'>
             <td width=1 bgcolor='.$couleur.'>&nbsp;</td>
             <td align=center valign=top bgcolor='.$planning['color'].' rowspan='.$row.'><a href="monsite.php?bd=planedit&id='.$planning['id_pla'].'&page='.$page.'&an='.$num_annee.'" class="info">'.$planning['titre'].'<span><strong >'.$planning['titre'].'</strong><br>Lieu: '.$planning['lieu'].'<br>Heures: '.$planning['hdeb'].'h - '.$planning['hfin'].'h<br><br>'.$aFaire.'</span></a></td>
         </tr>';
   $i = $i + 1;
   for ($j=$i; $j<($i+($row-1)); $j++)
      {
      echo '<tr align=center bgcolor='.$defaut.'>
            <td width=1 bgcolor='.$couleur.'>&nbsp;</td>
            </tr>';
      }
   $i = $i + ($row-1);
   }
//si la note est inférieure à 1h :                                             *
else
   { if (isset($planning['hdeb']))
        {echo '<tr align=center bgcolor='.$defaut.'><td width=1 bgcolor='.$couleur.'>&nbsp;</td><td align=center bgcolor='.$planning['color'].' ><a href="monsite.php?bd=planedit&id='.$planning['id_pla'].'&page='.$page.'&an='.$num_annee.'" >'.$planning['titre'].'&nbsp;</a></td></tr>';}
//si aucune note, alors on revoi le lien vers un formulaire de création :      *
     else
        {echo '<tr align=center bgcolor='.$defaut.'><td width=1 bgcolor='.$couleur.'>&nbsp;</td><td align=center width="150"><a href="monsite.php?bd=planinc&hdeb='.$i.'&dat='.$date_jour.'&page='.$page.'&an='.$num_annee.'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></td></tr>';
         }
   $i = $i+1;
   }
$plan->closeCursor();

}

?>
</table>
<?php 
}
?>
</table>



 Historique

12 mars 2011 12:14:50 :
correction
13 mars 2011 22:39:37 :
changement des balises <? par <?php
14 mars 2011 23:21:08 :
Ajout des jours fériés

 Sources de la même categorie

CALCUL DU NOMBRE DE JOURS CONTENUS DANS L'INTERSECTION DE DE... par curphey
CALENDRIER EN 70 LIGNES par tchconst
Source avec Zip CALENDRIER par gabay
CALENDRIER SIMPLE par manuche
Source avec Zip Source avec une capture [POO] OBJET CONVERTISSANT UN NOMBRE DE SECONDES EN DIFFÉRENT... par Dariumis

 Sources en rapport avec celle ci

CALENDRIER SIMPLE par manuche
Source avec Zip Source avec une capture CALENDRIER + AGENDA TRÈS SIMPLE (GERER LES JOURS FÉRIÉS ET L... par mondherclubiste
Source avec Zip Source avec une capture CALENDRIER par pichpoich
Source avec Zip Source avec une capture AGENDA BASÉ SUR FLUX RSS PRÉSENTÉ EN TABLEAU OU EN AGENDA ! par cedriclomb
Source avec Zip CLASSE CALENDRIER OPTIMISÉE POO par ganjamannicoweb

Commentaires et avis

Commentaire de bonhommecrea le 13/03/2011 13:54:00

Salut, ton script n'a pas l'air intéressant sauf  qu'on commence php par  <?php   et pas par <?  .

j'ai eu des erreur sur Wamp à cause de ça.

Quand tu aura modifié, à la ligne 188 j'ai un <?phpfor soit tu met un espace, soit tu va à la ligne, mais jamais collé :)

(d'ailleurs, 40 <?phpecho  qui font tout bugger.)

et dernière chose, j'espère ^o^, j'ai une erreur à la ligne 281 que je ne comprends pas

Commentaire de bonhommecrea le 13/03/2011 18:00:22

Oups désolé j'ai mélanger
"pas mal du tout"
avec
"a l'air intéressant"
:silent:

Commentaire de NicomakM le 13/03/2011 22:45:02

salut,

j'ai modifié le fichier pour les balises <?php
par contre je ne voit pas pourquoi tu aurais une erreur à la ligne 281... elle n'existe pas!
as-tu le message d'erreur?

Merci,
Nico

Commentaire de papapapat le 14/03/2011 10:12:04

Bonjour,
cet agenda est intéressant, mais je n'arrive pas à créer la table planning.
J'utilise spip et je voudrais l'intégrer à mon site pour en fair eun planning d'utilisation de salles.
Pour le moment, je patauge dans cette création de table.

Commentaire de regweb le 14/03/2011 11:46:12

bé moi je trouve ca pas mal du tout. C'est une excellente base, facile à reprendre sans se casser la tête.
bonne continuation, Reg.

Commentaire de hornetbzz le 14/03/2011 11:47:50 7/10

3 commentaires rapides
- l'utilisation de <? au lieu de <?php s'appelle les short tags et nécessitent que php.ini soit configuré pour les accepter. Donc plutôt à éviter car tt le monde n'a pas accès au php.ini. Mais bon, les gouts et les couleurs...
- tu pourrais utiliser les tableaux sur tes lignes 121-146.
- attention aux GET dont il te faut penser à contrôler les entrées: "never trust user inputs"

Pour un non programmeur, tu t'en sors très bien. C'est propre, lisible, commenté.
Donc félicitations et bravo !

Commentaire de ngahadjo le 14/03/2011 14:37:54

trés bien pour un débutant! courage.

Commentaire de bonhommecrea le 14/03/2011 17:19:42

C'est bon c'est de ma faute :silent:

Sinon, ça fonctionne bien :)  

9/10 ^^

Commentaire de NicomakM le 14/03/2011 20:47:00

Merci pour vos commentaires et pour le temps que vous avez consacré à mon code...
@ BONHOMMECREA: je suis content que cela fonctionne, merci pour ta note.
@ PAPAPAPAT: Je suis désolé mais je ne connais pas spip j'espère que ça marchera.
@ REGWEB: "sans se casser la tête" c'était justement le but merci pour tes encouragements
@ NGAHDJO: Merci pour ton compliment
@ HORNETBZZ: -j'utilise toujours <? au lieu de <?php (si ça marche je ne me pose pas de question... sauf aujourd'hui) je ferais attention dorénavant.
-je n'ai pas l'habitude d'utiliser les tableaux (en fait je ne sais pas). Mais ta remarque m'incite à m'y intéresser dès ce soir.
-Pour les GET: je me permet d'en (ab)user car la page maitre contenant ce code est soumise à session. Je sais que c'est pas suffisant en terme de sécurité, mais je m'en remettrai si je me fait pirater mon agenda ;)

Pour les commentaires, cela me semblait important: j'ai appris grâce aux commentaires des autres. Le vrai code est bien moins commenté ;)

Commentaire de NicomakM le 14/03/2011 23:28:53

j'ai fait des recherches sur les tableaux...
je n'ai pas compris l'utilité de les utiliser pour la définition des jours de semaine
pourrais-tu me préciser ce à quoi tu pensais ?

par contre j'ai trouvé une utilisation pratique: les jours fériés. j'ai découvert par hasard qu'il y avait une fonction "pâque" en php. Il était donc facile de re-calculer les jours mobiles, de tout mettre dans un tableau (pour le coup) et d'assurer une comparaison avec la date du jour affiché. Ainsi, j'ai "grisé" le fond des journées fériées.

merci à vous

Commentaire de vargas le 13/02/2012 14:47:24

Bonjour à tous
Je débute en PHP et je voudrais utiliser ce code pour l'un des mes projets ,j'ai crée la table planning, mais j'arrive pas à faire fonctionner l'agenda, est-ce quelqu'un peut me dire comment on fait la connexion à la base de données pour que la requête fonctionne ma connexion actuellement est fait comme ça:
$base = mysql_connect ('localhost:3306', 'root', '');
mysql_select_db ('gestion', $base);
mais j'ai des erreurs:
Undefined variable: bdd in J:\Wampee-2.1-beta-2\Wampee-2.1-beta-2\www\autrecale\Planning.php on line

Fatal error: Call to a member function query() on a non-object in J:\Wampee-2.1-beta-2\Wampee-2.1-beta-2\www\autrecale\Planning.php on line 274

merci à tous


Commentaire de vieuxmotard le 14/02/2012 21:09:14

Bonjour à tous et bravo à NicomakM pour ce code.
Je viens à vous pour savoir si qq a avancé ou fait des modifs pour en faire une classe de semainier.
Le code est bien tel quel mais je suis entrain de patiner sérieusement pour en faire une classe. Par avance merci

Commentaire de kurtalisweb le 28/02/2012 22:31:11

Genial cette source ;) Merci !

Vargas, pour que la connection a la base fonctionne il faut mettre t'es identifiants ainsi (SdZ) :

<?php
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=NOM_BASE', 'USER', 'PASS', $pdo_options);
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
?>

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Exporter les données d'un agenda/calendrier outlook dans un format type xml [ par sayann ] Agenda/Calendrier Ouvert [ par djangoboy ] Bonsoir.Je suis à la recherche d'un script que je puisse placé sur mon site. Le script serai un agenda/calendrier. Seulement tout le monde doit pouvoi Réalisation d'un calendrier agenda Smarty [ par Brabus18 ] Bonjour a tous, je suis nouveau sur ce site.Voila, je suis actuellement en 1ere année de bts informatique et je suis en stage pendant 7 semaines dans Calendrier-agenda [ par Sec_financier ] Bonjour,je suis nouvellement inscrit sur ce site et je suis un profane en PHP. Je suis webmestre pour un organisme à but non-lucratif du Québec.Je rec PB de calendrier [ par 007berty ] Bonjour! j'ai pour thème de personnaliser le calendrier du site web de mon village en notre langue et de façon dynamique.c'est ici href="http://www.ba Calendrier php synchronisable avec outlook [ par lovic75 ] Bonjour,Je souhaiterais créer un agenda en ligne pour trois personnes, (en faite 3 agenda), ceux-ci doivent être synchronisable avec outlook, j'ai fai Problème d'envoi information POST avec Input dynamique dans un tableau [ par Const4ntine ] Bonjour,J'ai un petit souci, je ne suis pas expert en Php, donc j'ai forcément fait quelques choses qui n'allait pas, mais que je ne vois pas.Pourriez code php [ par parrain3000 ] salut j'ai besoin de votre aide au sujet du code php d'une sélection de date sous forme de calendrier c'est à dire j'aierais selectionner une date en comment faire ma relation ?? [ par krustypop ] Bonjour,dans le cadre d'un projet informatique, je voudrais mettre en place une appli web en php/mysql permettant de gérer le stock de consommable de recherche calendrier [ par lolobala ] Bonjour,Je suis à la recherche d'un calendrier pour mon site web. J'ai pas mal naviguer sur votre site pour voir différent code mais ils sont assez co


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales