Bonjour,

Voila je rencontre un petit problème avec mon code.

je cherche à faire un planning "dynamique". Je me suis donc aidé du tutoriel Grafikart [(https://www.youtube.com/watch?v=wjF7vP_cudg)
]
voici mon code ( qui est en fait le code du tuto.....)

<!doctype html>
<html>
    <head>
    <meta charset="UTF-8">
    <title>planning</title>
    <link rel="stylesheet" type="text/css" href="style.css" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    </head>

    <body>
        <?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_decode($m),0,3));?></a></li>                
                        <?php endforeach; ?>
                    </ul>
                </div>
                <?php $dates = current($dates); ?>
                <?php foreach ($dates as $m=>$days): ?>
                    <?php /** for ($i=1; $i=$days;$i++){ **/?>
                    <div class="month" 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>
                        <?php /**}**/ ?>
                        <tbody>
                            <tr>
                                <?php foreach ($days as $d=>$w) : ?>
                                    <td><?php echo $d; ?></td>
                                <?php endforeach; ?>
                            </tr>
                        </tbody>
                    </table>
                    </div> 
                <?php endforeach; ?>

        </div>
    <pre><?php print_r($dates); ?></pre>

</body>
</html>

dans le tutoriel on vois que l'auteur du tutoriel affiche les noms des jours de la semaine ( lun, mar, etc.....) et en dessous les numeros de jour.
je voudrais afficher les noms des jours du mois en cours sur une seul ligne tant que le mois n'est pas finis et en dessous le numero de jour .
par exemple pour la semaine 1 : lun 1; mar 2 etc.... et que la semaine deux soit juste à coté et ainsi de suite pour tout le mois ! ( en ligne quoi au lieu d'etre en colonne !!!! )

pour se faire j'ai essayé des boucles ( while, for j'en ai meme laissé une en commentaire pour que vous puissiez voir ) mais ça boucle jusqu'au plantage du navigateur !!!!!! ;(

je vous remercie de votre aide !

3 réponses


Salut,

Ça boucle jusqu'à planter tu dis ?
On peut voir ta classe "Date" ? (au moins le constructeur et getAll())

Bonjour.
C'est normal que ta boucle déconne étant donné que $days est un tableau des 7 jours de la semaine, tu devrais revoir comment s'utilise la boucle for.

herve911
Auteur

bonsoir
donc voici le code ma classe Date :

<?php
class Date{
    var $days = array ('Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi','Dimanche');
    var $months = array ('Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Aout','Septembre','Octobre','Novembre','Décembre');
    function getAll($year){
        $r = array();
    /** $date = strtotime($year.'-01-01');
        while(date('Y',$date) <= $year){
            //Ce que je veux obtenir => $r[ANNEE][MOIS][JOUR] = JOUR DE LA SEMAINE
            $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 =  $date + 24*3600; 
        }

        *
        */
        $date = new DateTime($year.'-01-01');
        while ($date->format('Y') <= $year){
        //Ce que je veux obtenir => $r[ANNEE][MOIS][JOUR] = JOUR DE LA SEMAINE
        $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;

    } 
}

sinon en effet je dois revoir mes boucles..... ;( puisqu'en effet j'ai besoin de boucler cette partie du code :

<thead>
                            <tr>
                                <?php foreach ($date->days as $d) : ?>

                                    <th><?php echo substr($d,0,3); ?></th>

                                  <?php endforeach; ?>
                            </tr>
                        </thead>

tant que le mois en cours n'est pas fini le mois en cours étant contenut dans la variable ( si j'ai bien tout compris ) dans $m.