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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 478 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

cs_bonhommecrea
Messages postés
44
Date d'inscription
dimanche 14 mars 2010
Statut
Membre
Dernière intervention
13 mars 2011
-
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
cs_bonhommecrea
Messages postés
44
Date d'inscription
dimanche 14 mars 2010
Statut
Membre
Dernière intervention
13 mars 2011
-
Oups désolé j'ai mélanger
"pas mal du tout"
avec
"a l'air intéressant"
:silent:
NicomakM
Messages postés
3
Date d'inscription
mercredi 9 mars 2011
Statut
Membre
Dernière intervention
14 mars 2011
-
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
papapapat
Messages postés
14
Date d'inscription
lundi 21 mai 2007
Statut
Membre
Dernière intervention
9 avril 2010
-
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.
cs_regweb
Messages postés
2
Date d'inscription
lundi 12 janvier 2009
Statut
Membre
Dernière intervention
15 janvier 2014
-
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.

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.