Bonjour à tous,
J'ai un gros soucis pour afficher un tableau sous forme de calendrier.
Tout d'abord, voici l'adresse du calendrier qui pose problème :
[URL="http://bit.ly/11NgTxm"]
http://bit.ly/11NgTxm
[/URL]
Ce qui fonctionne :
- Quand la page charge la première fois, le calendrier fonctionne parfaitement
- Quand on change la valeur de l'année dans la liste déroulante :
- Le mois de janvier n'est pas affiché
- Le calendrier n'est pas correct, il reste toujours sur 2013
J'ai affiché avec un print_r le tableau qui est parcouru pour générer le calendrier, ce tableau contient les données correctes.
Le problème est que le tableau n'est pas affiché correctement sous forme de calendrier.
Sur le change de la liste déroulante, j'exécute ce code :
La page PHP appelée est celle-ci :
pour l'année 2012, j'ai par exemple ce tableau (un peu long car 12 mois) : 1 (lundi) 7 (dimanche)
Le texte qui vient se mettre dans le table est celui-ci :
Je vous remercie d'avance pour votre aide.
bee
J'ai un gros soucis pour afficher un tableau sous forme de calendrier.
Tout d'abord, voici l'adresse du calendrier qui pose problème :
[URL="http://bit.ly/11NgTxm"]
http://bit.ly/11NgTxm
[/URL]
Ce qui fonctionne :
- Quand la page charge la première fois, le calendrier fonctionne parfaitement
- Quand on change la valeur de l'année dans la liste déroulante :
- Le mois de janvier n'est pas affiché
- Le calendrier n'est pas correct, il reste toujours sur 2013
J'ai affiché avec un print_r le tableau qui est parcouru pour générer le calendrier, ce tableau contient les données correctes.
Le problème est que le tableau n'est pas affiché correctement sous forme de calendrier.
Sur le change de la liste déroulante, j'exécute ce code :
$('#sel_annee').change(function()
{
$('.month').hide();
$('.month:first').show();
$('.months a:first').addClass('active');
var current = 1;
$.ajax({
type: 'post',
url: 'changer_annee.php',
data:
{
year:$('#sel_annee').val()
},
dataType: 'text',
success: function(retour_php)
{
console.log(retour_php);
$('#afficher_annee').html($('#sel_annee').val());
$('#tab_cal').html(retour_php);
},
error: function(retour_php)
{
alert("pas ok");
alert(retour_php);
}
}
);
});
La page PHP appelée est celle-ci :
<?php
require('date.php');
$date = new Date();
if(!isset($_POST['year']))
{
$year = date('Y');
}
else
{
$year = $_POST['year'];
}
//$events = $date->getEvents($year);
$dates = $date->getAll($year);
print_r($dates);
$retour = "";
//current — Retourne l'élément courant du tableau
$dates = current($dates);
$i=0;
//$m ce sont les mois
foreach ($dates as $m=>$days)
{
$retour .= '<thead><tr>';
foreach ($date->days as $d)
{
//$i++;
//echo $i."";
//echo $d.'<br />';
$retour.= '<th>'.substr($d,0,3).'</th>';
}
$retour .= '</tr></thead>';
//echo $retour;
//return false;
$retour .= '<tbody><tr>';
//end — Positionne le pointeur de tableau en fin de tableau
$end = end($days);
foreach($days as $d=>$w)
{
$time = strtotime("$year-$m-$d");
//fusion des cellules au cas où le premier jour du mois ne commence pas un lundi
if($d == 1 && $w != 1)
{
$retour.= '<td colspan="'.($w-1).'" class="padding"></td>';
}
$retour.= '<td>';
//echo $d .'d <br />';
//echo $w . 'w <br />';
if($time == strtotime(date('Y-m-d')))
{
$retour.= ' class="today" >';
}
$retour.= '<div class="relative">';
$retour.= '<div class="day">'.$d.'</div>';
$retour.= '</div><div class="daytitle">';
$retour .= $date->days[$w-1];
$retour .= $d;
$retour .= $date->months[$m-1];
$retour.= '</div></td>';
if($w == 7)
{
$retour.= '</tr><tr>';
}
} //fin du foreach($days as $d=>$w)
if($end != 7)
{
$retour .= '<td colspan="'.(7-$end).'" class="padding"></td>';
}
$retour.= '</tr>';
$retour.= '</tbody>';
$retour.='</table>';
$retour.='</div>';
} //fin du foreach ($dates as $m=>$days)
$retour.='</div>';
echo $retour;
?>
pour l'année 2012, j'ai par exemple ce tableau (un peu long car 12 mois) : 1 (lundi) 7 (dimanche)
a écrit :
Array
(
Array
(
[2012] => Array
(
[1] => Array
(
[1] => 7
[2] => 1
[3] => 2
[4] => 3
[5] => 4
[6] => 5
[7] => 6
[8] => 7
[9] => 1
[10] => 2
[11] => 3
[12] => 4
[13] => 5
[14] => 6
[15] => 7
[16] => 1
[17] => 2
[18] => 3
[19] => 4
[20] => 5
[21] => 6
[22] => 7
[23] => 1
[24] => 2
[25] => 3
[26] => 4
[27] => 5
[28] => 6
[29] => 7
[30] => 1
[31] => 2
)
[2] => Array
(
[1] => 3
[2] => 4
[3] => 5
[4] => 6
[5] => 7
[6] => 1
[7] => 2
[8] => 3
[9] => 4
[10] => 5
[11] => 6
[12] => 7
[13] => 1
[14] => 2
[15] => 3
[16] => 4
[17] => 5
[18] => 6
[19] => 7
[20] => 1
[21] => 2
[22] => 3
[23] => 4
[24] => 5
[25] => 6
[26] => 7
[27] => 1
[28] => 2
[29] => 3
)
[12] => Array
(
[1] => 6
[2] => 7
[3] => 1
[4] => 2
[5] => 3
[6] => 4
[7] => 5
[8] => 6
[9] => 7
[10] => 1
[11] => 2
[12] => 3
[13] => 4
[14] => 5
[15] => 6
[16] => 7
[17] => 1
[18] => 2
[19] => 3
[20] => 4
[21] => 5
[22] => 6
[23] => 7
[24] => 1
[25] => 2
[26] => 3
[27] => 4
[28] => 5
[29] => 6
[30] => 7
[31] => 1
)
)
)
Le texte qui vient se mettre dans le table est celui-ci :
<thead><tr><th>Lun</th><th>Mar</th><th>Mer</th><th>Jeu</th><th>Ven</th><th>Sam</th><th>Dim</th></tr></thead><tbody><tr><td colspan="1" class="padding"></td><td><div class="relative"><div class="day">1</div></div><div class="daytitle">Mardi1</div></td><td><div class="relative"><div class="day">2</div></div><div class="daytitle">Mercredi2</div></td><td><div class="relative"><div class="day">3</div></div><div class="daytitle">Jeudi3</div></td><td><div class="relative"><div class="day">4</div></div><div class="daytitle">Vendredi4</div></td><td><div class="relative"><div class="day">5</div></div><div class="daytitle">Samedi5</div></td><td><div class="relative"><div class="day">6</div></div><div class="daytitle">Dimanche6</div></td></tr><tr><td><div class="relative"><div class="day">7</div></div><div class="daytitle">Lundi7</div></td><td><div class="relative"><div class="day">8</div></div><div class="daytitle">Mardi8</div></td><td><div class="relative"><div class="day">9</div></div><div class="daytitle">Mercredi9</div></td><td><div class="relative"><div class="day">10</div></div><div class="daytitle">Jeudi10</div></td><td><div class="relative"><div class="day">11</div></div><div class="daytitle">Vendredi11</div></td><td><div class="relative"><div class="day">12</div></div><div class="daytitle">Samedi12</div></td><td><div class="relative"><div class="day">13</div></div><div class="daytitle">Dimanche13</div></td></tr><tr><td><div class="relative"><div class="day">14</div></div><div class="daytitle">Lundi14</div></td><td><div class="relative"><div class="day">15</div></div><div class="daytitle">Mardi15</div></td><td><div class="relative"><div class="day">16</div></div><div class="daytitle">Mercredi16</div></td><td><div class="relative"><div class="day">17</div></div><div class="daytitle">Jeudi17</div></td><td><div class="relative"><div class="day">18</div></div><div class="daytitle">Vendredi18</div></td><td><div class="relative"><div class="day">19</div></div><div class="daytitle">Samedi19</div></td><td><div class="relative"><div class="day">20</div></div><div class="daytitle">Dimanche20</div></td></tr><tr><td><div class="relative"><div class="day">21</div></div><div class="daytitle">Lundi21</div></td><td><div class="relative"><div class="day">22</div></div><div class="daytitle">Mardi22</div></td><td><div class="relative"><div class="day">23</div></div><div class="daytitle">Mercredi23</div></td><td><div class="relative"><div class="day">24</div></div><div class="daytitle">Jeudi24</div></td><td><div class="relative"><div class="day">25</div></div><div class="daytitle">Vendredi25</div></td><td><div class="relative"><div class="day">26</div></div><div class="daytitle">Samedi26</div></td><td><div class="relative"><div class="day">27</div></div><div class="daytitle">Dimanche27</div></td></tr><tr><td><div class="relative"><div class="day">28</div></div><div class="daytitle">Lundi28</div></td><td><div class="relative"><div class="day">29</div></div><div class="daytitle">Mardi29</div></td><td><div class="relative"><div class="day">30</div></div><div class="daytitle">Mercredi30</div></td><td><div class="relative"><div class="day">31</div></div><div class="daytitle">Jeudi31</div></td></tr></tbody></table></div></div>
Je vous remercie d'avance pour votre aide.
bee