Calendrier dynamique [Fermé]

Signaler
Messages postés
180
Date d'inscription
mardi 24 avril 2012
Statut
Membre
Dernière intervention
26 avril 2020
-
Messages postés
29170
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 août 2020
-
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.

3 réponses

Messages postés
180
Date d'inscription
mardi 24 avril 2012
Statut
Membre
Dernière intervention
26 avril 2020

Personne pour m'aider ?

...
Messages postés
180
Date d'inscription
mardi 24 avril 2012
Statut
Membre
Dernière intervention
26 avril 2020

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;
}
}
?>
Messages postés
29170
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 août 2020
2 676
Bonjour,

Certains caractères ne s'affichent pas correctement

C'est à dire ? Les caractères accentués ???
Donc problème d'encodage...
Applique ceci :https://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)