Agenda graphique simple (débutant) à intégrer

Contenu du snippet

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 / Exemple :


<?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>

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.