Bonjour a tous,
J'ai cherché un peu partout sur le forum mais je ne trouve pas de sujet similaire
j'ai suivi le tutoriel sur le calendrier en PHP et j'ai un problème que je n'arrive pas du tout a identifierq.Lorsque le mois commence à 1, la première ligne est décalée d'une case
screenshot : http://img11.hostingpics.net/pics/356432calendrier.jpg
mon code
<?php
require('config.php');
require('date.php');
$date= new Date();
$year = date('Y');
$dates = $date->getAll($year);
$events = $date->getEvent($year);
?>
<div class="periods">
<!--Affichage de l'Année-->
<div class= "year"> <?php echo $year; ?></div>
<!--Affichage des mois-->
<div class="months">
<ul>
<?php foreach ($date->months as $id=>$m): ?>
<li> <a href="#" id="linkMonths<?php echo $id + 1 ?>"><?php echo substr($m, 0,3); ?></a></li>
<?php endforeach; ?>
</ul>
</div>
<!--cases du calendrier-->
<div class="clear"></div>
<?php $dates = current($dates); ?>
<?php foreach ($dates as $m => $days): ?>
<div class="month relative" id="month<?php echo $m; ?>">
<table>
<!--affichage des trois premiere lettres des jours sur une ligne-->
<thead>
<tr>
<?php foreach ($date->days as $d): ?>
<th><?php echo substr($d,0,3); ?></th>
<?php endforeach; ?>
</tr>
</thead>
<!-- Parcrourir le tableau pour les jour de la semaine (1. 2. 3 ...) -->
<tbody>
<tr>
<?php $end = end($days); foreach ($days as $d => $w): ?>
<?php $time = strtotime("$year-$m-$d") ?>
<!-- Insertion de case vide si le premier jour n'est pas lundi -->
<?php if ($d == 1): ?>
<td colspan="<?php echo $w-1; ?>" class="padding"></td>
<?php endif; ?>
<!--Mise en forme CSS avec la classe relative-->
<td<?php if($time == strtotime(date('Y-m-d'))): ?> class="today" <?php endif; ?>>
<div class="relative">
<div class="day"><?php echo $d; ?></div>
</div>
<div class="daytitle">
<?php echo $date->days[$w-1]; ?> <?php echo $d; ?> <?php echo $date->months[$m-1]; ?>
</div>
<ul class="events">
<?php if(isset($events[$time])): foreach($events[$time] as $e): ?>
<li><?php echo $e; ?></li>
<?php endforeach; endif; ?>
</ul>
</td>
<!-- Retour à la ligne aprés dimanche -->
<?php if ($w == 7): ?>
</tr>
<tr>
<?php endif; ?>
<?php endforeach; ?>
<!-- ajout des cases vide après le dernier jour du mois -->
<?php if ($d != 7): ?>
<td colspan="<?php echo 7-$end; ?>" class="padding"></td>
<?php endif; ?>
</tr>
</tbody>
</table>
</div>
<?php endforeach; ?>
</div>
merci d'avance pour votre aide :-)
Finalement en relisant mon code tranquillement j'ai trouvé la solution :-)
<!-- Insertion de case vide si le premier jour n'est pas lundi -->
<?php if ($d == 1): ?>
<td colspan="<?php echo $w-1; ?>" class="padding"></td>
<?php endif; ?>
est à remplacer par
<!-- Insertion de case vide si le premier jour n'est pas lundi -->
<?php if ($d == 1 && $w != 1): ?>
<td colspan="<?php echo $w-1; ?>" class="padding"></td>
<?php endif; ?>
Je passe le sujet en résolu, bonne soirée