Salut à tous !
J'ai crée une fonction qui affiche des reservations dans un calendrier.
Seulement pour une raison étrange et inconnue, toutes les réservations situées entre le 27mars et le 31 octobre ne s'affichent pas !
Une idée de ce qui ne fonctionne pas ?
Merci !
Voici ce que ça donne en image :
http://goo.gl/HV3Q6X
![http://goo.gl/HV3Q6X]

Et voici le code :

function tableauAppartement($numeroAppartement, $annee)
{
// On crée une requete permettant d'obtenir pour l'année $annee les réservations de l'appartement $numeroAppartement
global $DB;
$req = $DB->query('
SELECT id,nom,appartement,dateArrivee,dateDepart,note, statutReservation
FROM calendrierReservations
WHERE appartement=' . $numeroAppartement . ' AND YEAR(dateArrivee)=' . $annee . '
ORDER BY dateArrivee ASC
');

    // on met dans un array tous les jours où l'appartement est reservé
    // r[timestamp du jour]=nom de la personne qui occupe l'appartement
    $k=0;
    $l=0;
    $reservation = array();
    while ($datas = $req->fetch(PDO::FETCH_OBJ)) {

        $dateArrivee = strtotime($datas->dateArrivee);
        $dateDepart = strtotime($datas->dateDepart);

        for ($i = $dateArrivee; $i <= $dateDepart; $i = $i + 86400) {

            $reservation[$i]['nom'] = $datas->nom;
            $reservation[$i]['statut'] = $datas->statutReservation;
            $reservation[$i]['id'] = $datas->id;
            if($reservation[$i]['nom']=="ARDITTI+Marcelle")
            {

                //echo "<h3>".$datas->dateArrivee." - ".$datas->dateDepart."</h3>"; 
            }

        }

    }

    $mois = array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');

    for ($compteurLigne = 0; $compteurLigne < 12; $compteurLigne++) {

        $moisActuel = $mois[$compteurLigne];

        $nbJoursMoisActuel = cal_days_in_month(CAL_GREGORIAN, ($compteurLigne + 1), $annee);

        // On crée les cases de la ligne du mois du tableau (une par jour) et on check si la date de la case est réservée ( et donc présente dans l'array $reservations)
        $l++;
        for ($compteurCase = 0; $compteurCase < $nbJoursMoisActuel; $compteurCase++) {

            $dateCase = strtotime($annee . '-' . ($compteurLigne + 1) . '-' . ($compteurCase + 1));
            if($reservation[$dateCase]['nom']=="ARDITTI+Marcelle")
            {
            echo "<h3>".$dateCase."</h3>";  
            echo "<h3>".print_r($reservation[$dateCase])."</h3>";   
            $k++;
            }

            if (isset($reservation[$dateCase])) {

                $actionBouton = '<a href="index.php?page=calendrierCourtsSejours&modificationReservation=show&id_reservation=' . $reservation[$dateCase][id] . '"">';

                if ($reservation[$dateCase]['statut'] == 'reservation') {
                    $couleurCase = 'danger';
                    $couleurBouton = 'btn-reservation';
                    $glyphicon = '<span class="glyphicon glyphicon-minus" style="color: rgba(229,69,69,1.00);"></span>';

                } else {
                    $couleurCase = 'success';
                    $couleurBouton = 'btn-ok';
                    $glyphicon = '<span class="glyphicon glyphicon-ok" style="color: rgba(19,133,29,1.00);"></span>';

                }
                $td .= '<td class="' . $couleurCase . '" id=' . $dateCase . '><button type="button" class="btn ' . $couleurBouton . ' btn-xxs" data-toggle="tooltip" data-placement="top" title="' . $reservation[$dateCase]['nom'] . '">' . $actionBouton . $glyphicon . '</button></td>';

                $compteurOccupation++;
                global $compteurOccupationAllAppart;
                $compteurOccupationAllAppart++;
            } else {
                $td .= '<td id="' . date("Y-m-d", $dateCase) . '"></td>';
            }

            // on met des colspsan pour que le tableau soit plus joli
            if ($nbJoursMoisActuel != 31) {
                $nbColspan = 31 - $nbJoursMoisActuel;
                $colspan = '<td style="background-color: #EEEEEE;" colspan="' . $nbColspan . '"></td>';

            } else {
                $colspan = "";
            }
            //
        }

        $ligneMois = '<tr><th>' . $moisActuel . '</th>' . $td . $colspan . '</tr>';
        $td = "";
        $allLignesMois .= $ligneMois;

    }

    for ($j = 1; $j < 32; $j++) {
        $ligneJours .= '<th width="25px">' . $j . '</th>';
    }

    $tableauAnnuel = '
            <div class="calendrier">
            <table class="table table-bordered table-condensed-xs table-calendrier">
             <caption><strong>Appartement ' . $numeroAppartement . '</strong> (occupation : ' . $compteurOccupation . '/365)</caption>
            <tr><th></th>' . $ligneJours . '</tr>'
        . $allLignesMois .
        '</table>
            </div>';

    return $tableauAnnuel;

}

3 réponses


Et Bim, tape toi le placard de code et l'image qui fonctionne pas et aucune structure DB à fournir.
Du gateau ! ;)

du 27 mars au 31 octobre c'est les heures d'été
à quoi ressemblent tes dates dans la bd ?

@PallMallShow quand on pense qu'il suffirait que Graph nous fasse un tuto sur 'comment déboguer' et on pourrait fermer ce forum

Bonsoir !
Merci de vos réponses.
J'ai remis un lien pour l'image (en esperant que cela fonctione cette fois).
Désolé pour le "placard de code" je m'efforçais de donner du détail.
La structure DB c'est juste une table simple avec en champs : ID (auto incrémenté), nom, date d'arrivée, date de départ, statut et note.

@Huggy, bien vu les heures d'été ! Le format des dates est de type 2016-12-31