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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 872 fois - Téléchargée 15 fois

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

Ajouter un commentaire

Commentaires

Messages postés
42
Date d'inscription
samedi 14 juin 2003
Statut
Membre
Dernière intervention
10 juin 2013

Si tu veut utiliser une agenda voir ça : http://www.web-delicious.com/jquery-plugins/
Messages postés
188
Date d'inscription
mardi 15 novembre 2005
Statut
Membre
Dernière intervention
8 octobre 2009

Bonjour à tous
De meme je trouve qu'il serait intéressant de dire comment installer pour les nouveaux .
j'ai essayé je ne parviens pas.merci si quelqu'un pouvait me guider pas à pas .
j'ai créer une page agenda que j'ai mis dans www de Easy php et j'ai crée une tabble dans une base de donné existante planning mais je ne vois pas comment la page va se connecter et j'ai lu qu'il faut des includes
Messages postés
2
Date d'inscription
dimanche 20 mai 2012
Statut
Membre
Dernière intervention
21 août 2012

Semaine du Mon 20 August au Sun 26 August j'ai la date en anglais comment je peux la changé ??
Messages postés
1
Date d'inscription
jeudi 14 octobre 2010
Statut
Membre
Dernière intervention
28 février 2012

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());
}
?>
Messages postés
11
Date d'inscription
lundi 24 décembre 2007
Statut
Membre
Dernière intervention
1 avril 2011

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
Afficher les 16 commentaires

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.