IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Calendrier en cours de developpement


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 73
    Par défaut Calendrier en cours de developpement
    Bonjour,

    Je suis actuellement en stage et je dois developper un petit calendrier pour un site intranet que je fais.

    J'ai commencé à faire ce calendrier (le code est en vrac je l'ordonnerai après):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
    <?php
    $m = date(m);
    $a = date(Y);
    $nom_jour_fr = array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samdi");
    $mois_fr = Array("", "JANVIER", "FEVRIER", "MARS", "AVRIL", "MAI", "JUIN", "JUILLET", "AOÛT",
            "SEPTEMBRE", "OCTOBRE", "NOVEMBRE", "DECEMBRE");
    list($nom_jour, $jour, $mois, $annee) = explode('/', date("w/d/n/Y"));
    $premierJ = date("w",mktime(1,1,1,$m,1,$a));
     
    ?>
    <html>
    <head>
    <title>Calendrier</title>
    </head>
    <body>
    <?php
     
    $joursM=cal_days_in_month(CAL_GREGORIAN,$m,$a);
    // calcul du nombe de semaine soit nb_jour ds le mois diviser par 7
    $nb_semaine=ceil($joursM/6);
    $jours_a_afficher=$nb_semaine*6;
     
    ?>
    <form>
    <fieldset style="width: 15%;"><legend><?php echo $nom_jour_fr[$nom_jour].' '.$jour.' '.$mois_fr[$mois].' '.$annee; ?></legend>
    <table>
    	<thead>
    		<tr>
    			<td><?php echo mois_precedent($m,$mois_fr[$mois],$a)?></td>
    			<td><?php echo $mois_fr[$mois],' ' .$a?></td>
    			<td><?php echo mois_suivant($m,$a)?></td>
    		</tr>
    	</thead>
    	<tr>
    		<td>Lun</td>
    		<td>Mar</td>
    		<td>Mer</td>
    		<td>Jeu</td>
    		<td>Ven</td>
    		<td>Sam</td>
    		<td>Dim</td>
    		<?php for($i=1;$i<=$jours_a_afficher;$i++) {
    			if($i%7 == 1) { ?>
    	</tr>
    	<tr>
    	<?php }
    	if(($i<($joursM+$premierJ ))&&($i>=$premierJ)) { ?>
    		<td><?php echo $i-$premierJ+1; ?></td>
    		<?php }
    		else { ?>
    		<td>&nbsp;</td>
    		<?php }
    		} ?>
     
    </table>
    </fieldset>
    </form>
    </body>
    </html>
    		<?php
    		function mois_precedent($m,$mois,$a)
    		{
    			$m--;
    			if ($m==0)
    			{
    				$a --;
    				$m = 12;
    			}
    			return '<a href="'.$_SERVER['PHP_SELF']."?m=$m&a=$a\"> &laquo; </a>";
    		}
    		function mois_suivant($m,$a)
    		{
    			$m++;
    			if ($m==0)
    			{
    				$a++;
    				$m=13;
     
    			}
    			return '<a href="'.$_SERVER['PHP_SELF']."?m=$m&a=$a\"> &raquo; </a>";
    }
    ?>
    j'arrive à afficher le mois en cours mais pas a afficher les mois precedent et suivant.

    Pourriez vous m'eclaircir a se sujet s'il vous plait!

    merci d'avance.

    Ps : En attendant je vais continuer à chercher si je trouve je ferais partager.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    A mon avis au début de ton code tu voulais plutot ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $m = $_GET['m'];
    $a = $_GET['a'];
    Par contre
    soit tu considères
    12/2009 + 1 mois = 13/2009
    soit
    12/2009 + 1 mois = 1/2010

    Les deux fonctionnent mais il faut choisir.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 73
    Par défaut
    Merci ca fonctionne mais j'ai du adapté un peu ca ne fonctionner plus avec le $_GET le code donne ceci je me suis aider d'un script déja existant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
     
    <?php
    function calendrier($m_donne,$a_donne){
    	include("config.php");
     
    	$m = $_GET['m'];
    	$a = $_GET['a'];
     
    	if ($m == "") { $m = $m_donne; }
    	if ($a == "") { $a = $a_donne; }
     
    	if (($a % 4) == 0){
    		$nbrjour = array(0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    	}else{
    		$nbrjour = array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    	}
     
    	$premierdumois = jddayofweek(cal_to_jd($CAL_FRENCH, $m, 1, $a), 0);
    	//jdjayofweek :
    	//retourne le numéro du jour comme un entier ou
    	//une chaîne contenant le nom du jour (anglais grégorien) ou
    	//une chaîne contenant le nom abrégé du jour de la semaine (anglais grégorien).
    	if($premierdumois == 0){
    		$premierdumois = 7;
    	}
     
    	//tableau avec le nom du mois et la liste des jours de la semaine
    	echo "<fieldset style='width: 16%'><legend>".affiche_legend()."</legend>";
    	echo "<table border='1'><td>"
    	.mois_precedent($m,$mois[$m],$a)
    	."</td><td>$mois[$m] $a</td><td>"
    	.mois_suivant($m,$a)
    	."</td></tr><tr></table><table  border='1'>"
    	."<td>$jours[1]</td><td>$jours[2]</td><td>$jours[3]</td><td>$jours[4]</td>
    		<td>$jours[5]</td><td>$jours[6]</td><td>$jours[7]</td></tr><tr>";
     
    	//affiche les jours de la semaine
    	$jour=1;
    	//affiche les jours du mois précédent qui apparaissent
    	$joursmoisavant = $nbrjour[$m-1] - $premierdumois+2;
    	//affiche les jours du mois suivant
    	$jourmoissuivant = 1;
     
    	if($m == 1){
    		//si janvier, le mois d'avant n'est pas à 0 mais 31 jours!
    		$joursmoisavant = $nbrjour[$m+11] - $premierdumois+2;
    	}
     
    	//affichage du calendrier !
    	for($i=1;$i<40;$i++){
    		// Tant que la variable i ne correspond pas au premier jour du mois,
    		//on fait des cellules de tableau avec les derniers jours du mois précédent
    		if($i < $premierdumois)
    		{
    			echo "<td class=\"cases_vides\">$joursmoisavant</td>";
    			$joursmoisavant++;
    		}
    		else
    		{
    			if($jour == date("d") && $m == date("n"))
    			{ 	//Si la variable $jour correspond à la date d'aujourd'hui, la case est d'une couleur différente
    				echo "<td class=\"aujourdhui\">$jour</td>";
    			}
    			else
    			{
    				echo "<td class=\"jours\">$jour</td>";
    			}
    			$jour++;	//On passe au lendemain ^^
     
    			//Si la variable $jour est plus élevée que le nombre de jours du mois,  c'est que c'est la fin du mois!
    			// On remplit les cases vides avec les premiers jours des mois suivants
    			// et on met la variable $i à 41 pour sortir de la boucle
    			if($jour > ($nbrjour[$m]))
    			{
    				while($i % 7 != 0)
    				{
    					echo "<td class=\"cases_vides\">$jourmoissuivant</td>";
    					$i++;
    					$jourmoissuivant++;
    				}
    				echo "</tr></table>";
    				$i=41;
    			}
    		}
     
    		// Si la variable i correspond à un dimanche (multiple de 7), on passe à la ligne suivante dans le tableau
    		if($i % 7 == 0){
    			echo "</tr><tr>";
    		}
     
    	}
     
    }
     
    //FONCTION POUR AFFICHER LE MOINS SUIVANT
    function mois_suivant($m,$a){
    	$m++;	//mois suivant, donc on incrémente de 1
    	if($m==13){	//si le mois et 13 ça joue pas! cela veut dire qu'il faut augmenter l'année de 1 et repasser le mois à 1
    		$a++;
    		$m=1;
    	}
    	return '<a href="'.$_SERVER['PHP_SELF']."?m=$m&a=$a\"> &raquo; </a>";
    }
     
    //FONCTION POUR AFFICHER LE MOINS PRECEDENT
    function mois_precedent($m,$mois,$a){
    	$m--;
    	if($m==0){
    		$a--;
    		$m=12;
    	}
    	return '<a href="'.$_SERVER['PHP_SELF']."?m=$m&a=$a\"> &laquo; </a>";
    }
     
    //soit on considère
    //-> 12/2009 + 1 mois = 13/2009 (j'ai decidé de choisir cette option)
    //soit
    //-> 12/2009 + 1 mois = 1/2010
     
     
    function affiche_legend()
    {
    	$m = date(m);
    	$a = date(Y);
    	$nom_jour_fr = array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samdi");
    	$mois_fr = Array("", "JANVIER", "FEVRIER", "MARS", "AVRIL", "MAI", "JUIN", "JUILLET", "AOÛT",
            "SEPTEMBRE", "OCTOBRE", "NOVEMBRE", "DECEMBRE");
    	list($nom_jour, $jour, $mois, $annee) = explode('/', date("w/d/n/Y"));
    	$premierJ = date("w",mktime(1,1,1,$m,1,$a));
     
    	$dateJour = $nom_jour_fr[$nom_jour].' '.$jour.' '.$mois_fr[$mois].' '.$annee;
     
    	return $dateJour;
    }
     
    echo"</fieldset>";
    ?>
    et j'appelle le tout dans une autre page style index.php

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [OL-2007] ajouter un rendez vous sur calendrier en cour
    Par neuneu1 dans le forum VBA Outlook
    Réponses: 0
    Dernier message: 14/07/2011, 15h04
  2. Réponses: 2
    Dernier message: 18/08/2009, 13h22
  3. [AJAX] Calendrier cours AJAX
    Par sodaw dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/08/2008, 16h08
  4. Réponses: 11
    Dernier message: 02/06/2008, 21h02
  5. Developpement en cours sur Akrogen
    Par azerr dans le forum Akrogen
    Réponses: 0
    Dernier message: 06/08/2007, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo