begin process at 2012 05 27 22:13:18
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Class et Objet ( POO )

 > CLASSE CALENDRIER OPTIMISÉE POO

CLASSE CALENDRIER OPTIMISÉE POO


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Class et Objet ( POO ) Classé sous :php, poo, nicoweb, agenda, calendrier Niveau :Initié Date de création :09/06/2006 Vu / téléchargé :6 319 / 485

Auteur : ganjamannicoweb

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

 Description

Reprise d'un code source existant sur ce site à l'adresse http://www.phpcs.com/codes/CLASSE-PHP-MINI-CALENDR IER-AVEC-12-MOIS-AFFICHES_34299.aspx .
Réécriture objet clean et optimisé pour une utilisation rapide et un découpage affiche/traitement.

Je remercies l'auteur du premier code et l'invites à me contacter afin que l'on mette sur pied un code éventuellement plus évolué ;-)

NICOWEB

Source

  • <?
  • /*
  • * 09/06/2006 16:18pm
  • * include/Agenda.class.php
  • * fichier de classe permettant de gérer les fonctionnalités de l'agenda
  • */
  • class Agenda
  • {
  • /* tableaux */
  • var $t_listeMoisFr = Array(1 => "Janvier",2 => "Février",3 => "Mars",4 => "Avril",5 => "Mai",6 => "Juin",7 => "Juillet",8 => "Août", 9 => "Septembre",10 => "Octobre",
  • 11 => "Novembre",12 => "Décembre");
  • var $t_prop = array("convertDate" => "", "premierJour" => 0, "nombreJour" => 0, "anneeRec" => 0, "moisRec" => 0);
  • /* variables dites de chaine */
  • var $debutPremiereLigne;
  • var $finPremiereLigne;
  • var $autreLigne;
  • function Agenda($choixAnnee,$choixMois)
  • {
  • if ($choixAnnee != "") $this->t_prop['anneeRec'] = $choixAnnee;
  • if ($choixMois != "") $this->t_prop['moisRec'] = $choixMois;
  • $this->t_prop['convertDate'] = gregoriantojd($this->t_prop['moisRec'],1,$this->t_prop['anneeRec']);
  • $this->t_prop['premierJour'] = jddayofweek($this->t_prop['convertDate'],3)-1;
  • $this->t_prop['nombreJour'] = cal_days_in_month(1,$this->t_prop['moisRec'],$this->t_prop['anneeRec']);
  • if ($this->t_prop['premierJour'] == -1) $this->t_prop['premierJour'] = 6;
  • }
  • /*
  • * boolean
  • * afficherAgenda ( array t_propriete )
  • * méthode qui permet d'afficher à partir d'un tableau de propriétés spécifiques à un agenda/calendrier (ndr : ts de limites dans le temps) d'afficher le tableau de calendrier
  • */
  • function afficherAgenda()
  • {
  • for($i=0;$i< $this->t_prop['premierJour'];$i++){ $this->debutPremiereLigne .= "<td>&nbsp;</td>";}
  • for($i=0;$i<(7-$this->t_prop['premierJour']);$i++){ $this->finPremiereLigne .= "<td>".($i+1)."</td>";}
  • $i2=0;
  • for($i = (7-$this->t_prop['premierJour']);$i < $this->t_prop['nombreJour'];$i++){
  • if($i2 == 7)
  • {
  • $this->autreLigne .= "</tr><tr>";
  • $i2 = 0;
  • }
  • $this->autreLigne .= "<td>".($i+1)."</td>";
  • $i2++;
  • }
  • $this->chaine_courante .= "<table border=\"1\" cellspacing=\"0\" cellpadding=\"5\">\n
  • <tr>
  • <td colspan=\"7\">[ <a href=\"?month=".$this->t_prop['moisRec']."\" target=\"_self\">".$this->t_listeMoisFr[$this->t_prop['moisRec']]."</a> ]</td>
  • </tr>\n
  • <tr>
  • <td>L</td><td>M</td><td>M</td><td>J</td><td>V</td><td>S</td><td>D</td>
  • </tr>\n
  • ";
  • $this->chaine_courante .= "<tr>".$this->debutPremiereLigne.$this->finPremiereLigne."</tr>\n";
  • $this->chaine_courante .= "<tr>".$this->autreLigne."</tr>\n";
  • $this->chaine_courante .= "</table>";
  • if($this->chaine_courante == "") return false;
  • else return $chaine_courante;
  • }
  • }
  • $ag = new Agenda(date("m",time()),date("Y",time()));
  • print($ag->afficherAgenda());
  • ?>
<?
/*
	* 09/06/2006 16:18pm
	* include/Agenda.class.php
	* fichier de classe permettant de gérer les fonctionnalités de l'agenda
*/

class Agenda
{
	/* tableaux */
	var $t_listeMoisFr = Array(1	=> "Janvier",2	=>	"Février",3	=> 	"Mars",4	=>	"Avril",5	=>	"Mai",6	=>	"Juin",7	=>	"Juillet",8	=>	"Août", 9	=>	"Septembre",10	=>	"Octobre",
									11	=>	"Novembre",12	=>	"Décembre");
	var $t_prop = array("convertDate" => "", "premierJour" => 0, "nombreJour" => 0, "anneeRec" => 0, "moisRec" => 0);
	
	
	/* variables dites de chaine */
	var $debutPremiereLigne;
	var $finPremiereLigne;
	var $autreLigne;	
		 	 
	 
	function Agenda($choixAnnee,$choixMois) 
	{    

    if ($choixAnnee != "") $this->t_prop['anneeRec'] = $choixAnnee;
        
		if ($choixMois != "") $this->t_prop['moisRec'] = $choixMois;
		
		$this->t_prop['convertDate'] = gregoriantojd($this->t_prop['moisRec'],1,$this->t_prop['anneeRec']);
		
		$this->t_prop['premierJour'] = jddayofweek($this->t_prop['convertDate'],3)-1;
		
		$this->t_prop['nombreJour'] = cal_days_in_month(1,$this->t_prop['moisRec'],$this->t_prop['anneeRec']);
	 	
		if ($this->t_prop['premierJour'] == -1) $this->t_prop['premierJour'] = 6;
		
    }
	
	
	/*
		* boolean
		* afficherAgenda ( array t_propriete )
		* méthode qui permet d'afficher à partir d'un tableau de propriétés spécifiques à un agenda/calendrier (ndr : ts de limites dans le temps) d'afficher le tableau de calendrier
	*/
	function afficherAgenda() 
	{
		
		for($i=0;$i< $this->t_prop['premierJour'];$i++){ $this->debutPremiereLigne .= "<td>&nbsp;</td>";}

		for($i=0;$i<(7-$this->t_prop['premierJour']);$i++){ $this->finPremiereLigne .= "<td>".($i+1)."</td>";}

		$i2=0;
		for($i = (7-$this->t_prop['premierJour']);$i < $this->t_prop['nombreJour'];$i++){
			if($i2 == 7)
			{
				$this->autreLigne .= "</tr><tr>";
				$i2 = 0;
			}
			$this->autreLigne .= "<td>".($i+1)."</td>";
		$i2++;
		}
	
		$this->chaine_courante .= "<table border=\"1\" cellspacing=\"0\" cellpadding=\"5\">\n
				<tr>
        	<td colspan=\"7\">[ <a href=\"?month=".$this->t_prop['moisRec']."\" target=\"_self\">".$this->t_listeMoisFr[$this->t_prop['moisRec']]."</a> ]</td>
      	</tr>\n
  			<tr>
    			<td>L</td><td>M</td><td>M</td><td>J</td><td>V</td><td>S</td><td>D</td>
  			</tr>\n
		";
		
		$this->chaine_courante .= "<tr>".$this->debutPremiereLigne.$this->finPremiereLigne."</tr>\n";
    $this->chaine_courante .= "<tr>".$this->autreLigne."</tr>\n";
	
		$this->chaine_courante .= "</table>";
		
		if($this->chaine_courante == "") return false;
		else return $chaine_courante;
 	}

}


$ag = new Agenda(date("m",time()),date("Y",time()));
print($ag->afficherAgenda());
?>


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip GÉNÉRATION AUTOMATIQUE DE FICHIER .CLASS.PHP EN FONCTION D'U... par ig3
CLASSE D'OBJET DE CRYPTAGE ET DÉCRYPTAGE DE CHAINES DE CARAC... par 8Tnerolf8
Source avec Zip MY.DEVIANTART API par inwebo
CLASSE DE GESTION DE "VARIABLES GLOBALES D'ENVIRONNEMENT" par pifou25
Source avec Zip COLLECTION.CLASS.MIN.PHP par thunderhunter

 Sources en rapport avec celle ci

Source avec Zip POO - FORMULAIRE NEWSLETTER PHP - PROFESSEUR-PHP.COM par mtrix000
Source avec une capture AGENDA GRAPHIQUE SIMPLE (DÉBUTANT) À INTÉGRER par NicomakM
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 PHP par hrz

Commentaires et avis

Commentaire de xque19 le 09/06/2006 17:44:07

BOnjour,

Je viens de tester, çà ne marche pas, çà charge pendant un moment et çà me met l'erreur:
Fatal error: Maximum execution time of 30 seconds exceeded in W:\var\www\Mp3Center\agenda.class.php on line 60

++

Commentaire de coucou747 le 10/06/2006 00:17:33 administrateur CS

remplace <? par <?php

et ne considère pas qu'un programme qui contient des " est optimisé, les ' sont beaucoup plus rapides...

Commentaire de kankrelune le 10/06/2006 14:10:53

Pas testé mais de vu je me disais qu'il pourrait être pas mal de passer les mois sous forme de constante ou d'un tableau multidimensionel pour avoir une gestion multilanguage... .. .

Concernant l'optimisation remplacer les doubles quotes par des simple quotes comme l'a dit coucou et remplacer...

for($i=0;$i<(7-$this->t_prop['premierJour']);$i++)

par

for($i=0,$limit=(7-$this->t_prop['premierJour']);$i<$limit;$i++)

tu peux aussi remplacer...

$i2=0;
for($i = (7-$this->t_prop['premierJour']);$i < $this->t_prop['nombreJour'];$i++)
{
   if($i2 == 7)
   {
      $this->autreLigne .= "</tr><tr>";
      $i2 = 0;
   }
   $this->autreLigne .= "<td>".($i+1)."</td>";
   $i2++;
}

par...

for($i=(7-$this->t_prop['premierJour']),$i2=0;$i<$this->t_prop['nombreJour'];$i2++)
{
   if($i2 == 7)
   {
      $this->autreLigne .= '</tr><tr>';
      $i2 = 0;
   }
   $this->autreLigne .= '<td>'.++$i.'</td>';
}

Mais bon... ça change pas grand chose, pour ne pas dire rien du tout, quand à la façon dont ça s'execute... .. . ;o)

Voili voilou... .. .

@ tchaOo°

Commentaire de FhX le 11/06/2006 17:32:46

C'est où le "orientée objet" la dedand ?

J'arrive pas à voir :o

Commentaire de xque19 le 11/06/2006 18:51:26

Bonjour,

çà marche toujours pas, j'ai toujours l'erreur de timeout.

Commentaire de kankrelune le 11/06/2006 19:08:15

print($ag->afficherAgenda());

tu aurais pu mettre le echo direct dans la méthode... c'est pas afficherAgenda() mais getAgenda()... .. .

@ tchaoO°

Commentaire de momoxe le 12/06/2006 18:47:53

Kankrelune, c'est pas forcement le top le echo direct surtout si tu utilise un système de templates...
@+

Commentaire de kankrelune le 13/06/2006 01:17:26

Bah tu fais deux méthodes... la méthode pour l'afficher et la méthode pour le récupérer... ou alors tu fais... .. .

function afficherAgenda($display = true)
{
...
  if(!$display)
     return $chaine_courante;

  echo $chaine_courante;
}

@ tchaOo°

Commentaire de momoxe le 13/06/2006 02:02:28

c'est vrai que...
@+

Commentaire de ganjamannicoweb le 13/06/2006 03:38:06

trop lol on laisses un code deux jours et hop de la lecture pour dix minutes ;-)
va falloir que je me remettes à la reprise de script utiles dits "exemples" trop lol

bon alors pour répondre un peu à tout le monde :

- orientation objet du script : étant donné la forme en classe et l'utilisation de méthodes n'utilisant pas de echo ou print afin de garantir une stabilité des headers je penses qu'il est très difficile de contester que ce script est orienté objet.
Je me permettrai de rajouter ayant utilisé ce code dans un dev que le tableau t_prop illustre clairement la beauté (enfin le début) de l'objet.

- le tableau permet pour le moment de gérer les langues françaises. Personnllement je n'étais pas parti pour d'un seul coup poster la classe parfaite mais je prendrai pour intégrer la possibilité de charger un autre tableau de libellés mois ce qui est en soi excellent ;-)

- concernant les optimisations de code désolé mais bon j'ai repris le script assez rapidement et il est vrai qu'étant le fonctionnement prouvé je n'ai pas trop parcouru l'algo plutot attardé sur la remise en forme OBJET lol du code

bon be n'hésitez pas à continuer cette discussion je viendrai mettre à jour ce script si j'en ai le temps ;-)

Commentaire de kankrelune le 13/06/2006 05:57:02

[quote]n'utilisant pas de echo ou print afin de garantir une stabilité des headers je penses qu'il est très difficile de contester que ce script est orienté objet.[/quote]

Je ne vois pas le rapport ni entre les header et l'aspect OO ni entre le header et les echo... quand c'est bien codé (je ne parle pas de la class) le $monObj->display() est fait au bon moment et n'interfère en rien avec les headers... .. . ;o)

@ tchaOo°

Commentaire de coucou747 le 13/06/2006 10:02:25 administrateur CS

entre nous, ça reste de l'objet de base, sans interface, sans héritage, sans private, sans public, sans surcharges, bref, pas super super non plus... ici, la class n'est qu'une grosse boiboite...

Commentaire de FhX le 13/06/2006 12:20:34

Hu ? J'en entend des belles tous les jours :)

"étant donné la forme en classe et l'utilisation de méthodes n'utilisant pas de echo ou print afin de garantir une stabilité des headers je penses qu'il est très difficile de contester que ce script est orienté objet."
Reste que l'expression "orientée objet" est un peu vague dans ton cas moi je trouve :)
Et je peux très bien utiliser du echo() ou du print() ou du header() ou du ce_que_tu_veux() dans une classe. Personne a dit que mettre du html dans une classe était malsain !

"entre nous, ça reste de l'objet de base" Appelons ca comme ca alors :)
"sans interface" Impossible, il tourne sous PHP4 :o
"sans héritage" Jvois pas comment il va pouvoir s'en sortir avec une classe comme ca pour faire de l'héritage !
"sans private, sans public" Pareil, PHP4 power ! =)
"sans surcharges" La aussi, jvois pas comment !
"ici, la class n'est qu'une grosse boiboite..." Oui, une grosse fonction aurait tout fait aussi bien :)

Ici, la classe tel-quel ne vaut pas grand chose.

Commentaire de coucou747 le 13/06/2006 12:31:14 administrateur CS

bah oui, c'est bien ce que je dis... une simple fonction aurait suffit...
il aurait pu faire une class date par exemple, même si ça n'aurait pas eu grand interet (et ça n'aurait pas apporté l'héritage, mais ça aurait été mieux...)... pour le reste, bah passer à php5, c'est important ;)

Commentaire de ganjamannicoweb le 19/06/2006 22:42:11

et bien dire que je pensai rendre service en mettant à jour ce code :-(

be merci les gars c clair que je serai tenté de vouloir me prendre à aider ceux pour qui interface, classe, objet ne signifie pas encore grand chose....

et puis bon faudra m'excuser mais les mecs qui font encore des fonctions à l'heure actuelle c'est qu'ils ne savent pas dans quel objet les mettre (ndr : comprendre => come to back dans le code les gars trop lol)

bon sur ce ,

Commentaire de kankrelune le 20/06/2006 13:44:08

Non perso je trouve qu'il est bien ce code... c'est juste qu'un fonction aurait suffit plutot qu'un classe... .. .

[quote]et puis bon faudra m'excuser mais les mecs qui font encore des fonctions à l'heure actuelle c'est qu'ils ne savent pas dans quel objet les mettre[/quote]

Ou alors tout simplement que ça ne sert à rien de mettre ça en classe... code orienter objet ne veut pas dire abandonner les fonction et faire des classe pour tout même pour un echo... les classes et les fonction sont complémentaire... elles n'ont pas le même but et la même utilitée... l'instanciation d'un objet coute en performance ça ne sert donc à rien d'en mettre à toutes les sauces là ou une fonction suffit... .. . ;o)

@ tchaOo°

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

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 Recherche script calendrier html/php (Sans Php objet ni MySql) [ par lolymeupy ] Bonjour,je suis à la recherche d'un script de calendrier en php/html et sans MySql; Pour les détails, voici le genre de calendrier que je recherche :< Calendrier + php [ par lsamsoumal ] Bonjour tout le monde j'ai une page php dans laquelle il ya un formulaire contenant un champ texte où je jeux saisir la date à partir d'un calendrier calendrier [ par ndiou ] bonjour , je developpe sur un projet php et je voudrai recuperer la date dans un formulaie. je demande existe t-il un scripte en php qui fait calend orienté objet en php [ par am1ra2 ] bonjour,    j'ai des connaissances sur la POO en php mais je ne connais pas comment implimenter la POO dans mes applications. Calendrier avec date choisis + php [ par neurone84 ] Bonjour, J'ai un probleme avec les dates (j'avoue ne jamais avoir fait) et aimerais votre avis. Je creer un tableau avec mon calendrier, a l'interie Exemple des projets ou des minis projets en php/POO [ par abdeslam2009 ] Bonjours Je suis en train de développer un projet en php/POO je voudrais quelques exemples sur les projets les minis projets en POO,j'ai suivi les inf 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 recherche script POO [ par mickael56100 ] bonjour a tous, souhaitant m'interesser à la POO en php je souhaiterais lire des scripts afin de savoir comment on code en objet avec le langage php.S 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


Nos sponsors


Sondage...

Comparez les prix

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,437 sec (4)

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