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

EDI, CMS, Outils, Scripts et API PHP Discussion :

[Calendrier] Planning sur 2 lignes


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Points : 5
    Points
    5
    Par défaut [Calendrier] Planning sur 2 lignes
    Bonjour,

    Je remarque que nous sommes nombreux à rechercher ce genre de source et ce n'est pas à priori très facile à trouver.
    J'essaie de modifier une source d'un calendrier sur 7 jours pour le présenter sur 2 lignes et ensuite mettre une première colonne avec des noms pour pouvoir afficher des présences en cliquant dans une des cases du tableau.

    J'arrive à mettre le calendrier sur 2 lignes mais ce n'est pas optimal, j'ai 2 PB.

    1-la liste des jours sur la première ligne ne s'affiche pas automatiquement en fonction du mois affiché.
    2-J'ai un bug sur le nombre de jour en juin2009 et février2010 et est-il possible d'enlever les cases vides en début et fin de mois.

    Voici le code complet du calendrier tiré d'un tutoriel.
    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
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    <html>
    <head>
    <style>
    caption 
    {
       margin: auto; 
       font-family: Arial, Times, "Times New Roman", serif;
       font-weight: bold;
       font-size: 1.2em;
       color: #EFF3FF;
       margin-bottom: 20px; 
     
    }
    table 
    {
       margin: auto; 
       border: 4px outset #EFF3FF; 
       border-collapse: collapse; 
       width: 100%;
    }
    th
    {
       background-color: #EFF3FF;
       color: black;
       font-size: 1em;
       font-family: Arial, "Arial Black", Times, "Times New Roman", serif;
       border: 1px
    }
    td 
    {
       border: 1px solid black;
       font-family: "Trebuchet MS", "Times", serif;
       font-size: 1em;
       text-align: center; 
       padding: 5px; 
    }
    .lienCalendrierJour 
    {
    	background-color: #CDF0F0;
    	text-decoration: underline;
    }
    </style>
    </head>
    <body>
    <?php
    if(!isset($_GET['m']) && !isset($_GET['y']))
    {
    	// Si on ne récupère rien dans l'url, on prend la date du 1er jour du mois actuel.
    	$timestamp = mktime(0, 0, 0, date('m'), 1, date('Y'));
    }
    else
    {
    	// Sinon on récupère la date du 1er jour du mois donné.
    	$timestamp = mktime(0, 0, 0, $_GET['m'], 1, $_GET['y']);
    }
    ?>
    <?php
    /* Si le mois et l'année de la variable $timestamp correspondent au mois et à l'année d'aujourd'hui, on retient le jour actuel.
    Sinon le jour actuel ne se situe pas dans le mois et on ne retient rien */if(date('m', $timestamp) == date('m') && date('Y', $timestamp) == date('Y'))
    {
    	$coloreNum = date('j');
    }
    ?>
    <?php
    $m = array("01" => "Janvier", "02" => "Février", "03" => "Mars", "04" => "Avril");
    $m += array("05" => "Mai", "06" => "Juin", "07" => "Juillet", "08" => "Août");
    $m += array("09" => "Septembre", "10" => "Octobre",  "11" => "Novembre", "12" => "Décembre");
    $j = array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
    // Souvenez-vous que les dates en PHP commencent par dimanche !
    ?>
    <?php
    $numero_mois = date('m', $timestamp);
    $annee = date('Y', $timestamp);
    if($numero_mois == 12)
    {
    	// Dans le cas du mois de décembre
    	$annee_avant = $annee;
    	$annee_apres = $annee + 1;	// L'année d'après change
    	$mois_avant = $numero_mois - 1;
    	$mois_apres = 01;		// Le mois d'après est janvier
    }
    elseif($numero_mois == 01)
    {
    	// Dans le cas du mois de janvier
    	$annee_avant = $annee - 1;	// L'année d'avant change
    	$annee_apres = $annee;
    	$mois_avant = 12;		// Le mois d'avant est décembre
    	$mois_apres = $numero_mois + 1;
    }
    else
    {
    	// Il ne s'agit ni de janvier ni de décembre
    	$annee_avant = $annee;
    	$annee_apres = $annee;
    	$mois_avant = $numero_mois - 1;
    	$mois_apres = $numero_mois + 1;
    }
    $numero_jour1er = date('w', $timestamp);  // 0 => Dimanche, 1 => Lundi, 2 = > Mardi...
     
    // Changement du numéro du jour car l'array commence à l'indice 0.
    if ($numero_jour1er == 0)
    {
    	/*
    		Si c'est dimanche, on le place en 6e position
    		(car on commencera notre boucle à 0)
    	*/	$numero_jour1er = 6; 
    }
    else
    {
    	// Sinon on met lundi à 0 ou mardi à 1 ou mercredi à 2...
    	$numero_jour1er--;
    }
    ?>
    <table>
    	<caption>
    		<?php 
    		// Lien pour aller au mois précédent
    		echo '<a href="?m='.$mois_avant.'&amp;y='.$annee_avant.'"><<</a>';
    		// Affichage du mois et de l'année
    		echo '<span style="color: #000000;">  '.$m[$numero_mois].' '.$annee.'</span>  ';
    		// Lien pour aller au mois suivant
    		echo '<a href="?m='.$mois_apres.'&amp;y='.$annee_apres.'">>></a>';
    		?>
    	</caption>
     
    	<?php
    	//Première ligne qui affiche les jours du mois
    $daytab = array();
    $daytab[1] = 'Lu';
    $daytab[2] = 'Ma';
    $daytab[3] = 'Me';
    $daytab[4] = 'Je';
    $daytab[5] = 'Ve';
    $daytab[6] = 'Sa';
    $daytab[7] = 'Di';
    $daytab[8] = 'Lu';
    $daytab[9] = 'Ma';
    $daytab[10] = 'Me';
    $daytab[11] = 'Je';
    $daytab[12] = 'Ve';
    $daytab[13] = 'Sa';
    $daytab[14] = 'Di';
    $daytab[15] = 'Lu';
    $daytab[16] = 'Ma';
    $daytab[17] = 'Me';
    $daytab[18] = 'Je';
    $daytab[19] = 'Ve';
    $daytab[20] = 'Sa';
    $daytab[21] = 'Di';
    $daytab[22] = 'Lu';
    $daytab[23] = 'Ma';
    $daytab[24] = 'Me';
    $daytab[25] = 'Je';
    $daytab[26] = 'Ve';
    $daytab[27] = 'Sa';
    $daytab[28] = 'Di';
    $daytab[29] = 'Ve';
    $daytab[30] = 'Sa';
    $daytab[31] = 'Di';
    $daytab[32] = 'Lu';
    $daytab[33] = 'Ma';
    $daytab[34] = 'Me';
    $daytab[35] = 'Je';
    $daytab[36] = 'Ve';
    $daytab[37] = 'Sa';
    $daytab[38] = 'Di';
     
     
    echo('<tr>');
     
    	for($i = 1 ; $i <= 38; $i++)
         {   
    	 if($i <= date('d', $timestamp))
    			{ 
                    echo('<th>'.$daytab[$i].'</th>');
                }
    			else
    			{
    						echo '<th>'.$daytab[$i].'</th>';
    			}
     
    	}
     
     
    	echo('</tr>');	
     
    echo '<tr>';
    $nbLignes = ceil((date('t', $timestamp) - ($i-1)) / 7);
    // Nouvelle ligne du tableau (celle de la 1ère semaine, donc)
    	// Écriture de colonnes vides tant que le mois ne démarre pas.
    	for($i = 0 ; $i < $numero_jour1er ; $i++)
    	{ 
    		echo '<td></td>';
    	}
    	for($i = 1 ; $i <= 31 - $numero_jour1er; $i++)
    	{	
     
    		echo '<td><div class="';
    		if(isset($coloreNum) && $coloreNum == $i)
    		{
    			echo 'lienCalendrierJour';
    		}
    		else
    		{
    			echo 'lienCalendrier';
    		}
    		echo '">'.$i.'</div></td>';	
    	}
    	$nbLignes = ceil((date('t', $timestamp) - ($i-1)) / 7);
    for($ligne = 0 ; $ligne < $nbLignes ; $ligne++)
    {
    	//echo '<tr>'; // Nouvelle ligne du tableau (celle de la nouvelle semaine)
    	for($colone = 0 ; $colone < 7 ; $colone++)
    	{
    		if($i <= date('t', $timestamp))
    		{
    			echo '<td><div class="';
    			if(isset($coloreNum) && $coloreNum == $i)
    			{
    				echo 'lienCalendrierJour';
    			}
    			else
    			{
    				echo 'lienCalendrier';
    			}
    			echo '">'.$i.'</div></td>';
    		}
    		else
    		{
    			// On a fini d'écrire le mois on termine la tableau par des cellules vides
    			echo '<td></td>';
    		}
    		$i = $i +1;
    	}
    	echo '</tr>';
    }
    echo '</tr>';
    ?>
     
    </table>
    </body>
    </html>
    La partie qui affiche la liste des jours n'est pas automatique
    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
    //Première ligne qui affiche les jours du mois
    $daytab = array();
    $daytab[1] = 'Lu';
    $daytab[2] = 'Ma';
    $daytab[3] = 'Me';
    $daytab[4] = 'Je';
    $daytab[5] = 'Ve';
    $daytab[6] = 'Sa';
    $daytab[7] = 'Di';
    $daytab[8] = 'Lu';
    $daytab[9] = 'Ma';
    $daytab[10] = 'Me';
    $daytab[11] = 'Je';
    $daytab[12] = 'Ve';
    $daytab[13] = 'Sa';
    $daytab[14] = 'Di';
    $daytab[15] = 'Lu';
    $daytab[16] = 'Ma';
    $daytab[17] = 'Me';
    $daytab[18] = 'Je';
    $daytab[19] = 'Ve';
    $daytab[20] = 'Sa';
    $daytab[21] = 'Di';
    $daytab[22] = 'Lu';
    $daytab[23] = 'Ma';
    $daytab[24] = 'Me';
    $daytab[25] = 'Je';
    $daytab[26] = 'Ve';
    $daytab[27] = 'Sa';
    $daytab[28] = 'Di';
    $daytab[29] = 'Ve';
    $daytab[30] = 'Sa';
    $daytab[31] = 'Di';
    $daytab[32] = 'Lu';
    $daytab[33] = 'Ma';
    $daytab[34] = 'Me';
    $daytab[35] = 'Je';
    $daytab[36] = 'Ve';
    $daytab[37] = 'Sa';
    $daytab[38] = 'Di';
     
     
    echo('<tr>');
     
    	for($i = 1 ; $i <= 38; $i++)
         {   
    	 if($i <= date('d', $timestamp))
    			{ 
                    echo('<th>'.$daytab[$i].'</th>');
                }
    			else
    			{
     
    			echo '<th>'.$daytab[$i].'</th>';
    			}
     
    	}
     
     
    	echo('</tr>');
    Si j'arrive à corriger ces problèmes, cette source pourra sans doute servir d'exemple en y ajoutant une gestion des évènements en cliquant dans les cases du tableau.

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Je trouve a premiere vue que ce code est bien trop compliqué pour ce qu'il fait.

    en oubliant ce code, que cherches-tu a avoir comme vue de planning ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    Je cherche à réaliser un tableau qui va me permettre de renseigner des absences mais présenté avec une première ligne les Jours du mois en sous la forme LUN, MAR, MER etc.

    La 2éme ligne les jours correspondants sous la forme de N° 1,2,3 etc

    La 3ème c'est le tableau correspondant aux donnée à entrer, avec une première colonne avec les noms et ensuite les cases pour les jours du mois.

    Voilà à quoi doit resembler mon tableau:

    << -------------------------AVRIL 2009-------------------------->>
    ------------lun Mar Mer Jeu Ven Sam Dim lun Mar Mer Jeu Ven Sam Dim
    ------------ 1 2 3 4 5 6 7 8 9 10 11 12 13 14
    Jean ----------------P P A P A
    Louis----------------P A P

    Je suis parti d'un calendrier car ce sont des dates qui servent de référence dans les cases.

    La gestion des absences se fera en cliquant sur une case qui appellera une fenêtre pop-up pour sélectionner ce qu'il y a à afficher dans la case.

    Je vais y ajouter également une plage de date avec une date de début et de fin dans le pop-up de sélection.

    Un partie administration pour gérer les utilisateurs et les groupes.

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 091
    Points : 8 194
    Points
    8 194
    Billets dans le blog
    17
    Par défaut
    Ben laisse tomber le truc que tu as récupéré. Comme dit Sabotage c'est bien trop "complexe" dirais-je pudiquement pour ce que tu veux faire.

    A 1re vue tu auras besoin de :
    - Récupérer facilement le timestamp du 1er jour d'un mois donné : strtotime( ) http://fr.php.net/strtotime
    - Savoir si c'est un lundi, mardi, etc. : date('w') http://fr.php.net/date
    - Savoir combien de jours contient le mois : date('t')
    Ensuite suffit de boucler...
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  5. #5
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    un exemple pour démarrer :
    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
    <?php
    $annee = 2009;
    $mois = 4;
     
    $ligne_jours = array();
    $ligne_date = array();
    $ligne_donnee = array();
     
    $aJours = array('Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam');
    $aPersonne = array('Jean', 'Louis');
    $njours = date('t', mktime(0,0,0,$mois,1,$annee));
     
    //construction
    for ($jour = 1; $jour <= $njours; $jour++) {
    		$timestamp = mktime(0,0,0,$mois,$jour,$annee);
    		$ligne_jours[$timestamp] =  '<td>' . $aJours[date('w', $timestamp)] . '</td>';
    		$ligne_date[$timestamp] =  '<td>' . $jour . '</td>';
    		foreach ($aPersonne as $personne) {
    			$ligne_donnee[$personne][$timestamp] = '<td><input type="checkbox" name="' . $personne . '[' . $timestamp . ']" /></td>';
    		}
    }
     
    //affichage
    echo '<table>
    		<tr>
    			<td></td>' . implode('',$ligne_jours) . '
    		</tr>
    		<tr>
    			<td></td>' . implode('',$ligne_date) . '
    		</tr>';
    		foreach ($ligne_donnee as $nom=>$ligne_personne) {
    			echo '<tr>
    					<td>' . $nom . '</td>' . implode('',$ligne_personne) . '
    				</tr>';
    		}
    echo '</table>';
    ?>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    Merci pour ton aide et ton code Sabotage, c'est sympa, c'est ce que je souhaite faire.

    Je vais essayer d'automatiser les 2 premières lignes et je te mettrai le code pour critique.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    J'ai automatisé les 2 premières lignes du tableau, y a t'il des erreurs où des améliorations à apporter ?

    Pour l'instant il n'y a pas de mise en forme personnalisée
    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
    <?php
    if(!isset($_GET['m']) && !isset($_GET['y']))
    {
    	// on prend la date du 1er jour du mois actuel.
    	$timestamp = mktime(0, 0, 0, date('m'), 1, date('Y'));
    }
    else
    {
    	// on récupère la date du 1er jour du mois donné.
    	$timestamp = mktime(0, 0, 0, $_GET['m'], 1, $_GET['y']);
    }
     
    $ligne_jours = array();
    $ligne_date = array();
    $ligne_donnee = array();
     
    $m = array('01' => 'Janvier', '02' => 'Fevrier', '03' => 'Mars', '04' => 'Avril', '05' => 'Mai', '06' => 'Juin', '07' => 'Juillet', '08' => 'Aout', '09' => 'Septembre', '10' => 'Octobre', '11' => 'Novembre', '12' => 'Decembre');
    $aJours = array('0' => 'Dim', '1' => 'Lun', '2' => 'Mar', '3' => 'Mer', '4' => 'Jeu', '5' => 'Ven', '6' => 'Sam');
    $aPersonne = array('Jean', 'Louis');
     
    $numero_mois = date('m', $timestamp);
    $annee = date('Y', $timestamp);
     
    if($numero_mois == 12)
    {
    	// Dans le cas du mois de décembre
    	$annee_avant = $annee;
    	$annee_apres = $annee + 1;	// L'année d'après change
    	$mois_avant = $numero_mois - 1;
    	$mois_apres = 01;		// Le mois d'après est janvier
    }
    elseif($numero_mois == 01)
    {
    	// Dans le cas du mois de janvier
    	$annee_avant = $annee - 1;	// L'année d'avant change
    	$annee_apres = $annee;
    	$mois_avant = 12;		// Le mois d'avant est décembre
    	$mois_apres = $numero_mois + 1;
    }
    else
    {
    	// Il ne s'agit ni de janvier ni de décembre
    	$annee_avant = $annee;
    	$annee_apres = $annee;
    	$mois_avant = $numero_mois - 1;
    	$mois_apres = $numero_mois + 1;
    } 
    ?>
    	<table>
    		<caption>
    		<?php
    		//affichage barre de navigation mois, année
    		// Lien pour aller au mois précédent
    		echo '<a href="?m='.$mois_avant.'&amp;y='.$annee_avant.'"><<</a>';
    		// Affichage du mois et de l'année
    		echo '<span style="color: #000000;">  '.$m[$numero_mois].' '.$annee.'</span>  ';
    		// Lien pour aller au mois suivant
    		echo '<a href="?m='.$mois_apres.'&amp;y='.$annee_apres.'">>></a>';
    		?>
    		</caption>
    	</table>
    <?php
    //construction
    $numero_mois = date('m', $timestamp);
    $njours = date('t', mktime(0,0,0,$numero_mois,1,$annee));
    $mois = date('m', $timestamp);
     
     
    for ($jour = 1; $jour <= $njours; $jour++) {
    		$timestamp = mktime(0,0,0,$mois,$jour,$annee);
    		$ligne_jours[$timestamp] =  '<td>' . $aJours[date('w', $timestamp)] . '</td>';
    		$ligne_date[$timestamp] =  '<td>' . $jour . '</td>';
    		foreach ($aPersonne as $personne) {
    			$ligne_donnee[$personne][$timestamp] = '<td><input type="checkbox" name="' . $personne . '[' . $timestamp . ']" /></td>';
    		}
    }
     
    //affichage tableau
    echo '<table>
    		<tr>
    			<td></td>' . implode('',$ligne_jours) . '
    		</tr>
    		<tr>
    			<td></td>' . implode('',$ligne_date) . '
    		</tr>';
    		foreach ($ligne_donnee as $nom=>$ligne_personne) {
    			echo '<tr>
    					<td>' . $nom . '</td>' . implode('',$ligne_personne) . '
    				</tr>';
    		}
    echo '</table>';
    ?>

  8. #8
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux faire beaucoup plus simple :

    le mois suivant et precedents sont :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $suivant = mktime(0,0,0,$mois + 1,1,$annee);
    $precedent = mktime(0,0,0,$mois -1,1,$annee);
    et tu recuperes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $mois = date('m',$_GET['date']);
    $annee = date('Y',$_GET['date']);
    Pas besoin de t'occuper de savoir si on est en janvier ou en decembre.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    Je reprends le développement, je n'ai pas eu trop le temps cette semaine.

    La prochaine étape sera de gérer des évènements dans les lignes du tableau avec un choix soit en cliquant directement dans une case où en spécifiant une plage de date.

    Je voudrais lorsque l'on passe la souris sur l'évènement dans le tableau qu'une fenêtre apparaisse, je suppose que cela doit se faire en javascript.

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    J'ai un autre PB avec mon planning, je n'arrive pas à insérer des données dans les cases du tableau à partir d'une BDD MYSQL.

    J'ai créé une table toute simple avec quelques donnée et je n'arrive pas à afficher les données du champ "dispo_type_dispo".

    Dans chaque case, j'ai créé un lien qui ouvre une fenêtre popup afin de pouvoir sélectionner le type de dispo via un select et l'insérer dans la table mais là encore ça ne marche pas.

    La table dans la BDD:
    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
    CREATE TABLE IF NOT EXISTS `dispo_users` (
      `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
      `dispo_name` varchar(30) NOT NULL,
      `dispo_type_dispo` varchar(1) NOT NULL,
      `dispo_date` date NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC AUTO_INCREMENT=7 ;
     
    --
    -- Contenu de la table `dispo_users`
    --
     
    INSERT INTO `dispo_users` (`id`, `dispo_name`, `dispo_type_dispo`, `dispo_date`) VALUES
    (4, 'Michel', 'D', '2009-04-21'),
    (2, 'Michel', 'D', '2009-04-19'),
    (3, 'Pierre', 'A', '2009-04-19'),
    (5, 'Louis', 'P', '2009-04-23'),
    (6, 'Jean', 'P', '2009-04-23');
    Première colonne j'extrais le nom et l'affiche dans le tableau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $aPersonne = array();
    $i=0;
    $result = mysql_query("SELECT dispo_name FROM dispo_users");
    while ($a = mysql_fetch_array($result)) {
    	$aPersonne[$i] = $a['dispo_name']; 
    	$i++;
    }
    Le code du select de la fenêtre popup
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <SELECT name="dispo_type_dispo" >
    				<OPTION VALUE="A">Absent</OPTION>
    				<OPTION VALUE="D">Dispo</OPTION>
    				<OPTION VALUE="R">Réunion</OPTION>
    				<OPTION VALUE="M">Maladie</OPTION>
    				<OPTION VALUE="S">Stage</OPTION>
    				<OPTION VALUE="V">Vacances</OPTION>
     
    			</SELECT>

  11. #11
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Classe ta récolte d'activité dans un tableau comme precedemment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $result = mysql_query("SELECT dispo_date, dispo_name, dispo_type_dispo FROM dispo_users");
    while ($a = mysql_fetch_array($result)) {
            $name = $a['dispo_name'];
            $date = strtotime($a['dispo_date']);
     
    	$aActivite[$name][$date] = $a['dispo_name'];
    }
    Ensuite quand tu construis le planning, tu as juste a regarder si tu as recolté quelque chose pour cette personne à cette date :

    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
    for ($jour = 1; $jour <= $njours; $jour++) {
    		$timestamp = mktime(0,0,0,$mois,$jour,$annee);
    		$ligne_jours[$timestamp] =  '<td>' . $aJours[date('w', $timestamp)] . '</td>';
    		$ligne_date[$timestamp] =  '<td>' . $jour . '</td>';
     
                   // ca change a partir d'ici
     
    		foreach ($aPersonne as $personne) {
                           if (isset($aActivite[$personne][$timestamp])) { 
                                $activite = $aActivite[$personne][$timestamp];
                           }
                           else {
                                $activite = '';
                           }
    			$ligne_donnee[$personne][$timestamp] = '<td>' . $activite . '</td>';
    		}
    }
    PS : dans nos exemples on a travaillé avec le nom de la personne comme reference pour les tableaux ; dans la realité il faut evidemment utiliser un id numerique pour referencer de maniere unique la personne afin de ne peux mélanger deux "robert".
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    Merci pour ta réponse, c'est exactement ce que je voulais faire.
    Ton aide est vraiment précieuse dans la réalisation de mon planning.

    Comme tu l'as indiqué, pour éviter les doublons je vais créer une table users et dans la table dispo users je vais reprendre les id.
    Je vais également rajouter dans la table users un groupe_users pour pouvoir par la suite les classer dans le tableau en fonction du groupe. Ca peut servir par exemple dans un service qui a plusieurs bureaux pour classer les gens en fonction du bureau

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    J'ai un peu avancé dans le planning, j'affiche la dispo avec une couleur en fonction du type de dispo.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if ($activite == 'A') $montd='style="background-color: #FF0000"'; 
    			else if ($activite == 'D') $montd='style="background-color: #33FF00"';
    			else if ($activite == 'P') $montd='style="background-color: #339933"';
    			else if ($activite == 'I') $montd='style="background-color: #0033CC"';
    			else if ($activite == 'M') $montd='style="background-color: #339933"';
    			else $montd=''; 
     
     
    			$ligne_donnee[$personne][$timestamp] = '<td '.$montd.'><span class="special"> '. $activite .'<a href="#" title="" onclick="window.open(\'popup_absence.php\',\'_popup\',\'width=180,height=140,toolbar=no,status=no,left=500,top=200\')">&nbsp;</a></span></td>';
    Je bloque sur l'insertion des données dans la table dispo_users que j'ai modifié, j'ai rajouté une table dispo_membres. Les 2 tables:
    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
    CREATE TABLE IF NOT EXISTS `dispo_users` (
      `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
      `dispo_name` varchar(30) NOT NULL,
      `dispo_type_dispo` varchar(1) NOT NULL,
      `dispo_date` date NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC AUTO_INCREMENT=7 ;
     
    --
    -- Contenu de la table `dispo_users`
    --
     
    INSERT INTO `dispo_users` (`id`, `dispo_name`, `dispo_type_dispo`, `dispo_date`) VALUES
    (4, '1', 'D', '2009-04-21'),
    (2, '1', 'D', '2009-04-19'),
    (3, '2', 'A', '2009-04-19'),
    (5, '3', 'P', '2009-04-23'),
    (6, '4', 'P', '2009-04-23');
     
    CREATE TABLE IF NOT EXISTS `dispo_membres` (
      `id_membres` int(3) NOT NULL AUTO_INCREMENT,
      `user` varchar(30) NOT NULL,
      PRIMARY KEY (`id_membres`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
     
    --
    -- Contenu de la table `dispo_membres`
    --
     
    INSERT INTO `dispo_membres` (`id_membres`, `user`) VALUES
    (1, 'Michel'),
    (2, 'Pierre'),
    (3, 'Louis'),
    (4, 'Jean');
    La page que j'appelle dans chaque case du tableau est une form avec un select qui affiche le type de dispo. Le PB c'est que je n'arrive pas à récupérer les infos de la case du planning(l'id_membre,le dispo_type,la date) pour les insérer dans la table dispo_users.

    Je pense qu'il doit falloir mettre des champs cachés en provenance du planning mais j'ai un peu tout essayé et je n'y arrive pas.
    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
    <?php
      session_start();
      //error_reporting(0);
      require_once './include/mysql.inc.php';
      require_once './include/dbdata.inc.php';
      $db1 = new Mysql($dbdata['host'],$dbdata['db'],$dbdata['user'],$dbdata['pass']);
      require_once './include/fonctions.inc.php';
    ?>
    <html>
    <title>Dispo</title>
    <meta name="description" Content="">
    <meta name="keywords" Content="">
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <link rel="stylesheet" href="css.css" type="text/css">
    <script language="JavaScript">
    function fermer() {
    opener=self;
    self.close();
    }
    </script>
    <body id="body">
    	<form name="CHOIX" action="insert_dispo.php"" onsubmit="fermer()" method="post" enctype='multipart/form-data'>
    	<table id="main_table" border="0" cellpadding="5" align="center" valign="middle">
    	<tr height="24">
    		<td id="normal" align="center">Type de disponibilité</td>
    	</tr>
    	<tr>
    		<td align="center">
    			<SELECT name="dispo_type_dispo" >
    				<OPTION VALUE="A">Absent</OPTION>
    				<OPTION VALUE="D">Dispo</OPTION>
    				<OPTION VALUE="R">Réunion</OPTION>
    				<OPTION VALUE="M">Maladie</OPTION>
    				<OPTION VALUE="S">Stage</OPTION>
    				<OPTION VALUE="V">Vacances</OPTION>
     
    			</SELECT>
    		</td>
    	</tr>
    	<tr height="24">
    		<td align="center"><input type="submit" name="ajouter" value="Ajouter"></td>
    	</tr>
    	</table>
    	</form>
    </body>
    </html>
    Le fichier insert_dispo
    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
    <?php
      session_start();
      //error_reporting(0);
      require_once './include/mysql.inc.php';
      require_once './include/dbdata.inc.php';
      $db1 = new Mysql($dbdata['host'],$dbdata['db'],$dbdata['user'],$dbdata['pass']);
      require_once './include/fonctions.inc.php';
    ?>
    <?php
     
        $dispo_type    = htmlentities(addslashes($_POST['dispo_type']));   
        $dispo_date = htmlentities(addslashes($_POST['dispo_date']));   
        $id_membres       = htmlentities(addslashes($_POST['id_membres']));   
     
     
    if (isset($_POST['dispo_type']) && isset($_POST['dispo_date']) && isset($_POST['id_membres'])) { 
     
    $sql = mysql_query("INSERT INTO dispo_users VALUES ('', '".$id_membres."', '".$dispo_type."', '".$dispo_date."')");
     mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    }
     
    header("Location:dispo.php");
     
     
    ?>

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    C'est bon j'ai réussit à entrer les données dans la table.

    J'ai encore 2 questions:

    1- Comment changer la couleur des colonnes des week-end ?

    2- Comment sélectionner une plage de cellule pour insérer les données au lieu d'une seule case actuellement ?

  15. #15
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    1 - Tu peux utiliser date() pour savoir si tu es sur un samedi ou un dimanche.
    2 - La on part sur des choses beaucoup plus compliqués en javascript., ou alors tu proposes a l'utilisateur d'indiquer une plage de dates ou un nombre de jours depuis le jour cliqué.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  16. #16
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    Pour le changement de couleur pour les week-end je n'y arrive pas, j'ai besoin d'aide, merci.

    Concernant la sélection d'une plage de cellule, j'y travaille, ça me parait moins compliqué.

  17. #17
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Monte nous ce que tu as fais pour le week-end
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  18. #18
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    Mon travail du week-end
    Concernant la plage de cellules sélectionnées pour insertion et affichage c'est OK, ça fonctionne parfaitement.

    J'ai adapté à ce que je souhaite faire en final donc les infos du sélecte ne sont pas les mêmes que celui que j'ai déjà posté

    Je passe en argument dans le lien du popup le timestamp et la personne, le code du popup:
    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
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    <?php
      session_start();
      //error_reporting(0);
      require_once './/include/mysql.inc.php';
      require_once '../include/dbdata.inc.php';
      $dbdata['db']='dispo';
      $db1 = new Mysql($dbdata['host'],$dbdata['db'],$dbdata['user'],$dbdata['pass']);
      require_once '../include/fonctions.inc.php';
    ?>
    <html>
    <title>Dispo </title>
    <meta name="description" Content="">
    <meta name="keywords" Content="">
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <link rel="stylesheet" href="css.css" type="text/css">
    <link type="text/css" rel="stylesheet" href="dhtmlgoodies_calendar/dhtmlgoodies_calendar.css" media="screen"></LINK>
    <SCRIPT type="text/javascript" src="dhtmlgoodies_calendar/dhtmlgoodies_calendar.js"></script>
    <script language="JavaScript">
    function fermer() {
    opener.document.location = "dispo.php";;
    window.close();
    }
    </script>
    <body>
    <?php
    /**
    * function getDatesBetween
    * renvoie un tableau contenant toutes les dates, jour par jour,
    * comprises entre les deux dates passées en paramètre.
    * NB : les dates doivent être au format aaaa-mm-dd (mais on peut changer le parsing)
    * @param (string) $dStart : date de départ
    * @param (string) $dEnd : date de fin
    * @return (array) aDates : tableau des dates si succès
    * @return (bool) false : si échec
    */
    function getDatesBetween ($dStart, $dEnd) {
        $iStart = strtotime ($dStart);
        $iEnd = strtotime ($dEnd);
        if (false === $iStart || false === $iEnd) {
            return false;
        }
        $aStart = explode ('-', $dStart);
        $aEnd = explode ('-', $dEnd);
        if (count ($aStart) !== 3 || count ($aEnd) !== 3) {
            return false;
        }
        if (false === checkdate ($aStart[1], $aStart[2], $aStart[0]) || false === checkdate ($aEnd[1], $aEnd[2], $aEnd[0]) || $iEnd <= $iStart) {
            return false;
        }
        for ($i = $iStart; $i < $iEnd + 86400; $i = strtotime ('+1 day', $i) ) {
            $sDateToArr = strftime ('%Y-%m-%d', $i);
            $sYear = substr ($sDateToArr, 0, 4);
            $sMonth = substr ($sDateToArr, 5, 2);
            //$aDates[$sYear][$sMonth][] = $sDateToArr;
    		$aDates[] = $sDateToArr;
        }
        if (isset ($aDates) && !empty ($aDates)) {
            return $aDates;
        } else {
            return false;
        }
    }
     
     
    if (isset($_POST['ajouter'])) {
     
    $req = mysql_query('select id_membres from dispo_membres where user = "'.$_POST['membre'].'"') or die(mysql_error());
    $id = mysql_fetch_array($req);
    if (isset($id['id_membres'])) {
    	mysql_query('INSERT INTO dispo_users(dispo_name,dispo_type_dispo,dispo_date) VALUES ("'.$id['id_membres'].'","'.htmlentities($_POST['dispo_type_dispo']).'",FROM_UNIXTIME('.$_POST['dispo_date'].')') or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
     
    }
    echo '<script language="javascript">fermer()</script>';
    } else {
    ?>
    	<form name="choix" action="#" method="post">
    	<table id="main_table" border="0" cellpadding="5" align="center" valign="middle">
    	<input type="hidden" name="membre" value="<?php echo $_GET['p'];?>">
    	<input type="hidden" name="dispo_date" value="<?php echo $_GET['t'];?>">
    	<tr height="24">
    		<td id="normal" align="center">Insérer la disponibilité du jour sélectionné</td>
    	</tr>
    	<tr>
    		<td align="center">
     
    	<select id="type" name="dispo_type_dispo" >
     
    				<OPTION VALUE="A">Absent</OPTION>
    				<OPTION VALUE="D">Dispo</OPTION>
    				<OPTION VALUE="P">Présent</OPTION>
    				<OPTION VALUE="C">Campagne</OPTION>
    				<OPTION VALUE="E">Ecolage</OPTION>
    				<OPTION VALUE="I">Incertain</OPTION>
    				<OPTION VALUE="V">Vacances</OPTION>
    				<OPTION VALUE="S">Supprimer</OPTION>
    	</select>
    		</td>
    	</tr>
    	<tr height="24">
     
    		<td align="center"><input type="submit" name="ajouter" value="Ajouter Dispo"></td>
    	</tr>
    	</table>
    	</form>
    <?php
    }
    ?>
    	<?php
     
    		if (isset($_POST['plage'])) {
     
    		$req = mysql_query('select id_membres from dispo_membres where user = "'.$_POST['membre'].'"') or die(mysql_error());
    		$id = mysql_fetch_array($req);
    		if (isset($id['id_membres'])) {
     
    		$aDates = getDatesBetween ($_POST['date_debut'], $_POST['dispo_fin']);
     
    		for ($i=0;$i<count($aDates);$i++) {
     
    			mysql_query('INSERT INTO dispo_users(dispo_name,dispo_type_dispo,dispo_date) VALUES ('.$id['id_membres'].',"'.htmlentities($_POST['dispo_type_dispo']).'","'.$aDates[$i].'")') or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    		}
     
    		}
    echo '<script language="javascript">fermer()</script>';
    } else {
    ?>
    	<form name="choix2" action="#" method="post">
    	<table id="main_table" border="0" cellpadding="5" align="center" valign="middle">
    	<input type="hidden" name="membre" value="<?php echo $_GET['p'];?>">
    	<input type="hidden" name="dispo_date" value="<?php echo $_GET['t'];?>">
     
    	<tr height="24">
    		<td id="normal" align="center">Insérer une plage de disponibilité à partir du jour sélectionné</td>
    	</tr>
    	<tr><td><input type="text" align="center" size="11" readonly name="date_debut"   value="<?php
    	$timestamp= $_GET['t'];
    	echo $date1= date('Y-m-d',$timestamp);
    	?>"><select id="type" name="dispo_type_dispo" >
     
    				<OPTION VALUE="A">Absent</OPTION>
    				<OPTION VALUE="D">Dispo</OPTION>
    				<OPTION VALUE="P">Présent</OPTION>
    				<OPTION VALUE="C">Campagne</OPTION>
    				<OPTION VALUE="E">Ecolage</OPTION>
    				<OPTION VALUE="I">Incertain</OPTION>
    				<OPTION VALUE="V">Vacances</OPTION>
    				<OPTION VALUE="S">Supprimer</OPTION>
    	</select>
     
    <input type="text"  name="dispo_fin" size="11" align="center" value="<?php echo $date1= date('Y-m-d',$timestamp);?>" readonly name="dispo_fin"><input type="button" value="Cal" onclick="displayCalendar(document.forms[1].dispo_fin,'yyyy-mm-dd',this)"></td></tr>
     
    </tr>
    	<tr height="24">
     
    		<td align="center"><input type="submit" name="plage" value="Ajouter Plage Dispo"></td>
    	</tr>
    	</table>
    	</form>
    <?php
    }
    ?>
    </body>
    </html>
    Par contre je sêche toujours sur le changement de couleur pour les colonnes du week-end

    EDIT: j'ai corrigé le code il y avait une erreur dans la première requète

  19. #19
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $jour = date('N',$timestamp);
    if ($jour == 6 || $jour == 7) { $couleur = xxxxx; }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  20. #20
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    J'avais déjà essayé ça mais ça ne fonctionne pas, où alors je l'utilise mal.

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/02/2015, 11h54
  2. Afficher un calendrier sur une ligne
    Par azorol dans le forum Langage
    Réponses: 17
    Dernier message: 16/02/2014, 22h55
  3. [Calendrier] Planning en ligne
    Par TallyHo dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 11
    Dernier message: 02/10/2013, 11h14
  4. Define sur plusieurs lignes
    Par Gogoye dans le forum C
    Réponses: 6
    Dernier message: 06/10/2003, 11h45
  5. Récuperer Arguments sur la ligne de commande ?
    Par Muetdhiver dans le forum x86 16-bits
    Réponses: 9
    Dernier message: 20/01/2003, 21h01

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