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

Langage PHP Discussion :

Affichage calendrier


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 40
    Points : 29
    Points
    29
    Par défaut Affichage calendrier
    Bonjour à tous, j'ai suivi un tuto pour réaliser un calendrier avec la possibilité de mettre des événements mais j'ai un petit problème. Le calendrier s'affiche le 01/01/ de l'année en cours comme je lui ai demandé mais quand je clique sur un autre mois plus rien ne s'affiche. Je peux seulement consulter le mois de Janvier.

    page index :
    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
    <!DOCTYPE html> 
    <html> 
        <head> 
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
            <title>Calendrier</title> 
            <link rel="stylesheet" type="text/css" href="designCalendrier.css" /> 
            <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script> 
            <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>
    </head>
    <body>
     
        <?php
        require ('date.php');
        require ('connect_bdd.php');
        $date = new Date();
        $year = date('Y');
        $dates = $date->getAll($year);
        $events = $date->getevents($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_decode($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="month relative" id="month<?php  echo $m; ?>">
     
                    <table>
                        <thead>
                            <tr>
                                <?php foreach ($date->days as $d): ?>
                                    <th><?php echo substr($d,0,8); ?></th>
                                <?php endforeach; ?>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <?php $end = end($days);  foreach($days as $d => $w): ?>
                                    <?php $time = strtotime("$year-$m-$d"); ?>
                                  <?php if ($d == 1  and $w != 1): ?>
                                        <td colspan="<?php echo $w - 1; ?>" class="padding"></td>
                                    <?php endif; ?>
                                        <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>
                                    <?php if ($w == 7): ?>
                                    </tr>
                                    <tr>
                                    <?php endif; ?>    
                                <?php endforeach; ?>
                                <?php if ($end != 7): ?>
                                    <td colspan="<?php echo 7 - $end; ?>"  class="padding"></td>
     
     
                                    <?php endif; ?>    
                            </tr>
                        </tbody>
                    </table>
                </div>
     
    <?php endforeach; ?> </div>
     
    </body>
     
    </html>
    page class 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
    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
    <?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 getEvents($year)
    { 
            global $bdd;
            $req = $bdd->query('SELECT id,title,date FROM events WHERE YEAR(date)='.$year);
            $r = array();
            while($d = $req->fetch(PDO::FETCH_OBJ))
            {
                    $r[strtotime($d->date)][$d->id] = $d->title;
            }
     
            return $r; 
    }
     
    function getAll($year){
            $r = array();
            /*$date = strtotime($year.'-01-01');
            while(date('Y',$date) &lt;= $year){
            $y=date('Y',$date);
            $m=date('n',$date);
            $d=date('j',$date);
            $w=str_replace('0','7', date('w',$date));
            $r[$y][$m][$d]= $w;
            $date = strtotime(date('Y-m-d', $date).'+1 DAY');
            }
            */
     
            $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;
     
    }
     
    }
    Merci par avance

  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
    Vu qu'il n'y aucun commentaire dans ton code et qu'on n'a pas la classe Date, c'est un peu dur du comprendre ce qui ne va pas dans ton code.


    Au passage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $w=str_replace('0','7', $date->format('w') );
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo utf8_encode(substr(utf8_decode($m), 0, 3))
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo mb_substr($m, 0, 3)

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 40
    Points : 29
    Points
    29
    Par défaut
    Merci de ta réponse.
    La classe 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
    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
    <?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 getEvents($year)
    { 
            global $bdd;
            $req = $bdd->query('SELECT id,title,date FROM events WHERE YEAR(date)='.$year);
            $r = array();
            while($d = $req->fetch(PDO::FETCH_OBJ))
            {
                    $r[strtotime($d->date)][$d->id] = $d->title;
            }
     
            return $r; 
    }
     
    function getAll($year){
            $r = array();
            /*$date = strtotime($year.'-01-01');
            while(date('Y',$date) &lt;= $year){
            $y=date('Y',$date);
            $m=date('n',$date);
            $d=date('j',$date);
            $w=str_replace('0','7', date('w',$date));
            $r[$y][$m][$d]= $w;
            $date = strtotime(date('Y-m-d', $date).'+1 DAY');
            }
            */
     
            $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;
     
    }
     
    }

  4. #4
    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 as mis un " en trop :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <li><a href="#" id="linkMonth<?php echo $id + 1; ?>">

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 40
    Points : 29
    Points
    29
    Par défaut
    Merci beaucoup sabotage d'avoir vu mon erreur et merci pour les conseils.
    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Affichage calendrier different FF/IE
    Par roy51 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 17/05/2008, 08h53
  2. Modification affichage calendrier
    Par glucas59 dans le forum SharePoint
    Réponses: 0
    Dernier message: 16/04/2008, 11h46
  3. Affichage calendrier en semaines
    Par Mescaline dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/03/2008, 12h55
  4. Problmème sur liste avec affichage Calendrier
    Par HGDL1 dans le forum SharePoint
    Réponses: 0
    Dernier message: 28/09/2007, 10h51
  5. Réponses: 2
    Dernier message: 20/03/2006, 16h29

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