Интервал эхо-даты в PHP-календаре - PullRequest
0 голосов
/ 06 июня 2018

Я создаю календарь и остро нуждаюсь в решении.Есть записи информации в базе данных, и код читает эти записи.Два столбца содержат date from и date to.Я должен вывести эти даты, которые появляются в базе данных в разных цветах.Я пробовал много раз.И проблема в том, что код выводит либо последнюю запись, которую он может извлечь в базе данных, либо все периоды дат, однако эти периоды дублируются в зависимости от количества строк в базе данных. Вот вывод, который я получаю

<div id="calender_section_top">
            <ul>
                <li>Mon</li>
                <li>Tue</li>
                <li>Wed</li>
                <li>Thu</li>
                <li>Fri</li>
                <li>Sat</li>
                <li>Sun</li>
            </ul>
        </div>
        <div id="calender_section_bot">
            <ul>
            <?php
$dateYear = ($year != '') ? $year : date("Y");
$dateMonth = ($month != '') ? $month : date("m");
$date = $dateYear . '-' . $dateMonth . '-01';
$currentMonthFirstDay = date("N", strtotime($date));
$totalDaysOfMonth = cal_days_in_month(CAL_GREGORIAN, $dateMonth, $dateYear);
$totalDaysOfMonthDisplay = ($currentMonthFirstDay == 7) ? ($totalDaysOfMonth) : ($totalDaysOfMonth + $currentMonthFirstDay);
$boxDisplay = ($totalDaysOfMonthDisplay <= 35) ? 35 : 42;
$dayCount = 1;

for ($cb = 1; $cb <= $boxDisplay; $cb++) {
    if (($cb >= $currentMonthFirstDay || $currentMonthFirstDay == 7) && $cb <= ($totalDaysOfMonthDisplay - 1)) {
        $duh = array();
        array_push($duh, $dayCount);

        // Current date

        $currentDate = $dateYear . '-' . $dateMonth . '-' . $dayCount;
        $currentDate = strtotime($currentDate);
        $eventNum = 0;
        $sql = ("SELECT * FROM booking_2 GROUP BY date_from ORDER BY COUNT(book2_id) DESC");
        $result = $this->connect()->query($sql);
        $eventNum = $result->num_rows;
        if ($eventNum > 0) {
            while ($row = $result->fetch_assoc()) {
                $date_from = $row['date_from'];
                $date_to = $row['date_to'];
                $time_from = strtotime($date_from);
                $time_fromm = idate('d', $time_from);
                $time_to = strtotime($date_to);
                $time_too = idate('d', $time_to);
                if ($currentDate >= $time_from && $currentDate <= $time_to) {
                    for ($i = $time_from; $i <= $time_to; $i++) {
                        $cope = array();
                        array_push($cope, $dayCount);
                    }

                    echo '<li id="' . $row['book2_id'] . '" style="background-color:#FF3232 !important;" date="' . date("Y-m-d H:i:s", $currentDate) . '" class="date_cell"><span>' . implode($cope) . '</span>';
                }
            }

            if (!($currentDate >= $time_from && $currentDate <= $time_to)) {
                for ($g = $time_from; $g <= $time_to; $g++) {
                    $duh = array();
                    array_push($duh, $dayCount);
                }

                echo '<li date="' . date("Y-m-d H:i:s", $currentDate) . '" class="date_cell"><span>' . implode($duh) . '</span>';
            }
        }
        else {
            echo '<li date="' . date("Y-m-d H:i:s", $currentDate) . '" class="date_cell"><span>' . implode($duh) . '</span>';
        }

        echo '</li>';
        $dayCount++;
?>
            <?php
    }
    else { ?>
                <li><span>&nbsp;</span></li>
            <?php
    }
} ?>
            </ul>
        </div>
    </div>

извините за TL; DR.Но очень нужна помощь с этим.Я перепробовал все известные мне способы, поэтому, если у вас есть решение, можете ли вы быть уверены, что это сработает?Я считаю, что это сложная проблема, чтобы найти решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...