Enfin un calendrier simple et efficace !

Administrateur PHPfrance
Administrateur PHPfrance | 977 Messages

22 sept. 2006, 09:53

Bonjour,

Après plusieurs recherches de scripts de calendrier, j'ai décidé de développer ma propre class, voici une présentation :
- Affichage possible, en popup, en inclusion, en div ...
- Afficher un évènement avec le titre en rollover sur une date
- Afficher un évènement s'étalant sur une période avec le titre en rollover sur une date
- Définir un évènement par défaut
- Affiche ou pas une sélection pour une semaine
- Changer de mois sans recherger la page (merci ajax)
- ...

Le code est simple et très documenté ! et même si j'ai prévu pas mal de personnalisation par feuille de style etc... un développeur n'aura aucun mal à modifier à souhait ce calendrier.

Mais bon j'ai assez parlé : voici la page de test avec lien vers la doc et les source.
http://www.olecorre.com/calendar

exemple de code pour l'utiliser :

Code : Tout sélectionner

$mois = isset($_GET['mois']) ? $_GET['mois'] : date('m'); $annee = isset($_GET['annee']) ? $_GET['annee'] : date('Y'); /** * création du calendrier */ $calendrier = new calendrier($annee, $mois); /** * définit les boutons suivant, précédent et l'évènement pas défaut */ $calendrier->affec_previous($mois, $annee, "mois_prec.jpg"); $calendrier->affec_next($mois, $annee,"mois_suiv.jpg"); $calendrier->affec_event_default("test",time()); /** * ajout d'évènement * affec_day($day, $link='#', $class='',$titre='') */ $jour1 = mktime(0,0,0,9,18,2006); $jour2 = mktime(0,0,0,9,20,2006); $calendrier->affec_day($jour1, '#','','test event'); $calendrier->affec_day($jour2, '#','','test event 2'); /** * ajout d'évènement sur plusieurs jours * affec_periode($debut, $fin, $link='#', $class='',$titre='') */ $debut1 = mktime(0,0,0,9,18,2006); $fin1 = mktime(0,0,0,9,25,2006); $debut2 = mktime(0,0,0,9,28,2006); $fin2 = mktime(0,0,0,10,4,2006); $calendrier->affec_periode($debut1,$fin1, '#', '', 'test periode 1'); $calendrier->affec_periode($debut2,$fin2, '#', '', 'test periode 2'); /** * Affiche une première colonne permettant de sélectionner la semaine * affec_semaine($affiche=true, $link='#', $variable1="datedebut", $variable2="datefin", $titre=">") */ $calendrier->affec_semaine(false); /** * Affiche le calendrier */ echo $calendrier->affiche();
Cdt

PS: Merci à Cyrano pour la doc et les tests de cette class
pro : http://www.ohweb.fr -> studio de développement en PHP, expertise en e-commerce, certifié PrestaShop
perso : http://www.olecorre.com -> un dico de termes informatiques

J'ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé : je ne sais plus comment utiliser mon téléphone. [Bjarne Stroustrup]

ViPHP
ViPHP | 3607 Messages

12 oct. 2006, 12:10

Je suis actuellement dans la recherche d'un bon calendrier ou je peut rajouter des évènements, ne pas recharger la page, etc... le tient me convient très bien, seulement je viens de voir une erreur sur ta page de démonstration...
si on clique sur la flèche mois suivant (ou même précédent), on voit le calendrier se décaler sur la droite et en bas et si on regarde le source, on voit qu'il y a des <table> qui apparraises à outrance...
Voilà, dans l'attente d'une correction :wink: et je prend ce beau calendrier
merci

Administrateur PHPfrance
Administrateur PHPfrance | 977 Messages

12 oct. 2006, 14:08

Effectivement une bug sous mozilla, je l'ai corrigé.
pro : http://www.ohweb.fr -> studio de développement en PHP, expertise en e-commerce, certifié PrestaShop
perso : http://www.olecorre.com -> un dico de termes informatiques

J'ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé : je ne sais plus comment utiliser mon téléphone. [Bjarne Stroustrup]

ViPHP
ViPHP | 3607 Messages

12 oct. 2006, 14:19

Merci! je m'en vais de suite l'intégrer!! :wink:

ViPHP
ViPHP | 3607 Messages

12 oct. 2006, 15:19

rebonjour!
je viens humblement apporter quelques modifications pour rendre valide xhtml le calendrier:
j'ai remplacer les lignes:
$previous = "<span class=\"".$class."\"><a href=\"javascriptDEUX_POINTS go(".$precedentmois.",".$precedentannee.");\">";
et
$next = "&nbsp;<span class=\"".$class."\"><a href=\"javascriptDEUX_POINTS  go(".$suivantmois.", ".$suivantannee.");\">";
Remplacer DEUX_POINTS par : (je sais pas pourquoi ça passait pas dans le php)
par :
$previous = "<span class=\"".$class."\"><a href=\"index.php\" onClick=\"go(".$precedentmois.",".$precedentannee."); return false;\">";
et
$next = "&nbsp;<span class=\"".$class."\"><a href=\"index.php\" onClick=\"go(".$suivantmois.", ".$suivantannee."); return false;\">";
et j'ai aussi remplacer (mais ça ne fait pas partie du code à proprement parler juste des exemples):
<span id="calendrier">
<?php
include "./includes/calendrier.php";
?>
</span>
par
<div id="calendrier">
<?php
include "./includes/calendrier.php";
?>
</div>
voilà ce ne sont pas desmodifications majeures, juste deux petites améliorations quand aux standards du web.
Je rajoute une chose, que je n'ai pas eu le temps de dévelloper, si à la place de index.php que j'ai mis dans le href, on met une url avec des gets qui vont bien, on peut rendre accéssible le calendrier aux personnes et/ou navigateurs qui n'acceptent pas l'ajax. à dévellopez ça serait un bon plus :wink:

Mammouth du PHP | 1511 Messages

01 févr. 2007, 23:10

Juste une question, comment faire pour que en cliquant sur une date du calendrier, celle-ci soit reportée dans un champ input ?
Parce que actuellement, je me vois mal affecter tous les jours un par un...
Merci d'avance ;)

ViPHP
ViPHP | 3607 Messages

01 févr. 2007, 23:59

ben si le champ input à un id fixe..., il doit y avoir moyen de trifouiller dans la source, pour que chaque date soient comme ça:
<td onClick="put_in_input(this.innerHTML);">28</td>
et après à toi de faire la fonction put_in_input en conséquence...
ça me parait pas trop difficile ;-)

Eléphanteau du PHP | 12 Messages

11 avr. 2007, 05:45

Bonjour à tous,

Vraiment intéressant pour moi, vos échanges.

Mais jojolapine tu trouves que faire la fonctionput_in_put n'est pas trop difficile... Mais aurais-tu un petit exemple, comme à l'école.

Merci, Pierre AP

ViPHP
ViPHP | 3607 Messages

11 avr. 2007, 11:57

bonjour,
la fonction put_in_input, ressemblerai à ça:

Code : Tout sélectionner

function put_in_input(what,id='valeur_par_defaut'){ document.getElementByID(id).value=what; }
après pour que celà fonctionne, il faut que ton calendrier soit généré comme j'avais dis plus haut...
et il faut que tu ai un input avec pour id 'valeur_par_defaut'... et hop ça fonctionne
(à noter que si tu ne veux pas t'embeter à faire une fonction un peu trop générique, et que n'en aura pas besoin, c'est à dire si tu n'as qu'un input à remplir et qu'il aura toujours le même id, tu peux enlever le deuxième argument de la fonction et noter en dur l'id dans la fonction getElementByID() )
voilou ;-)

Eléphanteau du PHP | 12 Messages

11 avr. 2007, 14:55

Merci beaucoup jojolapine !
J'essaye...

Amitiés, Pierre AP

Petit nouveau ! | 6 Messages

28 nov. 2007, 11:56

pareil merci beaucoup j'essai aussi :wink:

ViPHP
ViPHP | 3607 Messages

22 janv. 2008, 12:06

Bonjour,
Je reviens parler de ce calendrier après plusieurs mois, car j'ai perdu une partie des sources...
Et je me retrouve face à un problème...
J'ai à partir de quelques sujet sur phpfrance reconstitué le tout...
L'affichage php fonctionne, sauf que la partie javascript pose problème...
J'ai une erreur qui me dit que la fonction go() n'est pas définie...
Et je ne me rappel pas qu'il fallait inclure un fichier .js... bref je suis un peu perdu!
Une petite demande supplémentaire: serait-il possible de remettre les codes en entier dans le premier message, vu que l'url n'est plus à jour...?
Merci d'avance!

Eléphant du PHP | 110 Messages

31 janv. 2008, 12:53

slt
j'essais d'aller sur ta page de test et vers les code de ta class mais la page ne fonctionne pas
pb serveur apparement

voila bonne continuation et merci pour toutes ces contributions

Administrateur PHPfrance
Administrateur PHPfrance | 977 Messages

02 févr. 2008, 18:55

Je viens de remettre la page de test et le code source en ligne, je dois avoir une nouvelle version plus complète du calendrier et encore plus personnalisable, j'essaierai de la mettre en place bientot. en tout cas j'ai utilisé ce calendrier sur une vingtaine de site et ca tourne nikel.
pro : http://www.ohweb.fr -> studio de développement en PHP, expertise en e-commerce, certifié PrestaShop
perso : http://www.olecorre.com -> un dico de termes informatiques

J'ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé : je ne sais plus comment utiliser mon téléphone. [Bjarne Stroustrup]

Eléphant du PHP | 398 Messages

18 juin 2008, 14:31

Bonjour,
je dois gérer une application pour gerer les congés, missions etc de divers chercheurs et je trouve que ton script conviendrais bien. Par contre, j'aimerai savoir, comment le modifier pour que le calendrier des jours ne s'étale que sur une ligne, et non une ligne par semaine.
J ai un peu essayer de modifier qq trucs mais le résultat est loin d'atteindre les espérences escomptés :(.
J ai cherché sur le net ce genre de script mais malheureusement je n'en ai pas trouvé (si quelqu'un en a un, je suis preneur).
Merci d'avance ;)
----------------------------------------------------------------------------------
https://astro-otter.space - Discover wonders and mysteries of Universe