Menu

Calendrier dynamique

Messages postés
165
Date d'inscription
mardi 24 avril 2012
Statut
Membre
Dernière intervention
21 mai 2019
-
Bonjour à tous,

J'ai suivi un tuto sur un site pour réaliser un calendrier dynamique en PHP. C'est plutôt pas mal si on met de côté quelques petits soucis. Certains caractères ne s'affichent pas correctement. Les mois qui devraient être masqués sont tous visibles et l'animation qui affiche le mois demandé ne fonctionne pas bien. Et lorsque le dimanche tombe un 6 le chiffre 7 sort du tableau à droite alors qu'il devrait revenir à la ligne et se fixer au lundi. Ci-dessous tous les éléments.

<script type="text/javascript">
 jQuery(function($) {
  $('.month').hide();
  $('.month:first').show();
  $('months a:first').addClass('active');
  var current = 1;
  $('.months a').click(function() {
   var month = $(this).attr('id').replace('linkMonth', '');
   if(month != current) {
    $('#month'+current).slideUp();
    $('#month'+month).slideDown();
    $('.months a').removeClass('active');
    $('.months a#linkMonth'+month).addClass('active');
    current = month;
   }
   return false;
  });
 });
</script>
<?php
 require('date.php');
 $date = new Date();
 $year = date('Y');
 $dates = $date->getAll($year);
?>
<div class="periods">
 <div class="year"><?php echo $year; ?></div>
 <div class="months">
  <ul>
   <?php foreach ($date->months as $id=>$m): ?>
    <li><a href="#" id="linkMonth<?php echo $id+1; ?>"><?php echo utf8_encode(substr(utf8_encode($m),0,3)); ?></a></li>
   <?php endforeach; ?>
  </ul>
 </div>
 <div class="clear"></div>
 <?php $dates = current($dates); ?>
 <?php foreach ($dates as $m=>$days): ?>
  <div class="months" id="month<?php echo $m; ?>">
   <table>
    <thead>
     <tr>
      <?php foreach ($date->days as $d): ?>
       <th><?php echo substr($d,0,3); ?></th>
      <?php endforeach; ?>
     </tr>
    </thead>
    <tbody>
     <tr>
      <?php $end = end($days); foreach ($days as $d=>$w): ?>
       <?php if($d == 1): ?>
        <td colspan="<?php echo $w-1; ?>"></td>
       <?php endif; ?>
       <td>
        <div class="relative">
         <div class="day"><?php echo $d; ?></div>
        </div>
       </td>
       <?php if($w == 7): ?>
        </tr><tr>
       <?php endif; ?>
      <?php endforeach; ?>
      <?php if($end != 7): ?>
       <td colspan="<?php echo 7-$end; ?>"></td>
      <?php endif; ?>
     </tr>
    </tbody>
   </table>
  </div>
 <?php endforeach; ?>
</div>




EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
Afficher la suite 

3 réponses

Messages postés
165
Date d'inscription
mardi 24 avril 2012
Statut
Membre
Dernière intervention
21 mai 2019
0
Merci
Personne pour m'aider ?

...
Commenter la réponse de YameFAZE
Messages postés
165
Date d'inscription
mardi 24 avril 2012
Statut
Membre
Dernière intervention
21 mai 2019
0
Merci
J'ai oublié...

<?php
class Date {
var $days = array('Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche');
var $months = array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
function getAll($year) {
$r = array();
$date = new DateTime($year.'-01-01');
while($date->format('Y') <= $year) {
$y = $date->format('Y');
$m = $date->format('n');
$d = $date->format('j');
$w = str_replace('0', '7', $date->format('w'));
$r[$y][$m][$d] = $w;
$date->add(new DateInterval('P1D'));
}
return $r;
}
}
?>
Commenter la réponse de YameFAZE
Messages postés
25832
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 juin 2019
1666
0
Merci
Bonjour,

Certains caractères ne s'affichent pas correctement

C'est à dire ? Les caractères accentués ???
Donc problème d'encodage...
Applique ceci :http://www.commentcamarche.net/faq/47069-html-php-caracteres-accentues-et-l-utf8


Ensuite... quel est le code de ta class Date.php ?

Pour finir ..

l'animation qui affiche le mois demandé ne fonctionne pas bien.

Les animations sont gérées en Javascript... pas en PHP ...
Il faudra donc ouvrir une nouvelle discussion dans le bon forum propre à ce souci. (sans oublier de mettre tout le code JS concerné et en expliquant en détail en quoi ça ne fonctionne pas correctement selon toi.)
NB : Pour les soucis Javascript... pense à regarder dans la console de ton navigateur si il n'y a pas un souci (ou au moins des messages pouvant nous aider à diagnostiquer le problème)




Commenter la réponse de jordane45