Задать вопрос
sizintsev
@sizintsev
Developer U-CRM, CEO

Как сделать чтобы одна запись на все дни распределилась?

Друзья, коллеги, код писали давно и не я. По этому прошу помощи.

Есть эфирная сетка, в которой расставляются радио-шоу по дням и часам.

Что нужно:

У радио есть программа например: "Новые релизы" идет 7 дней в неделю в одно и тоже время, дико не нравится, что для этого пришлось добавить целых 7 записей в базу. Хотелось бы оставить одну и поставить галочку или выбрать вместо дня недели "распределить на все дни".

Хочется, чтобы была возможность поставить не день недели, а например вся неделя. И добавленное шоу просто дублировалось на каждый день.

вот так выглядит

ca5bd49ded6f4eb19a4f5261172ed6cd.png

Код формирования таблицы:

<table cellpadding="0" cellspacing="0">

        <?php $dayweek = date('w');?>
        <tr>
            <th class="system">день/<br>время</th>
            <th <?php if ($dayweek == 1 ) { echo "class='today'"; } ?> >Понедельник</th>
            <th <?php if ($dayweek == 2 ) { echo "class='today'"; } ?> >Вторник</th>
            <th <?php if ($dayweek == 3 ) { echo "class='today'"; } ?> >Среда</th>
            <th <?php if ($dayweek == 4 ) { echo "class='today'"; } ?> >Четверг</th>
            <th <?php if ($dayweek == 5 ) { echo "class='today'"; } ?> >Пятница</th>
            <th <?php if ($dayweek == 6 ) { echo "class='today'"; } ?> >Суббота</th>
            <th <?php if ($dayweek == 0 ) { echo "class='today'"; } ?> >Воскресенье</th>
        </tr>

        <?php

        $weekly = array(
            1 => "Понедельник",
            2 => "Вторник",
            3 => "Среда",
            4 => "Четверг",
            5 => "Пятница",
            6 => "Суббота",
            7 => "Воскресенье"
        );
        $timeonair = array(
            array("time" => "10:00", "color" => "c2d697", "colortext" => "000"),
            array("time" => "11:00", "color" => "c2d697", "colortext" => "000"),
            array("time" => "12:00", "color" => "c2d697", "colortext" => "000"),
            array("time" => "13:00", "color" => "c2d697", "colortext" => "000"),
            array("time" => "14:00", "color" => "c2d697", "colortext" => "000"),
            array("time" => "15:00", "color" => "c2d697", "colortext" => "000"),
            array("time" => "16:00", "color" => "c2d697", "colortext" => "000"),
            array("time" => "17:00", "color" => "c2d697", "colortext" => "000"),
            array("time" => "18:00", "color" => "00afee", "colortext" => "000"),
            array("time" => "19:00", "color" => "00afee", "colortext" => "000"),
            array("time" => "20:00", "color" => "00afee", "colortext" => "000"),
            array("time" => "21:00", "color" => "00afee", "colortext" => "000"),
            array("time" => "22:00", "color" => "00afee", "colortext" => "000"),
            array("time" => "23:00", "color" => "00afee", "colortext" => "000"),
            array("time" => "00:00", "color" => "375d88", "colortext" => "fff")
        );

        $dbase = "";
        $user = "";
        $pass = "";
        try {
            $dbh = new PDO('mysql:host=localhost;dbname=' . $dbase, $user, $pass);

        } catch (PDOException $e) {
            echo $e->getMessage();
        }

        $rowspan2_array = array();
        for ($i = 0; $i < count($timeonair); $i++) {
            echo "<tr>";
            if ($i + 1 == count($timeonair))
                echo "<td style='background: #" . $timeonair[$i]["color"] . ";color: #" . $timeonair[$i]["colortext"] . ";'>{$timeonair[$i]['time']}<br>01:00</td>";
            else
                echo "<td style='background: #" . $timeonair[$i]["color"] . ";color: #" . $timeonair[$i]["colortext"] . ";'>{$timeonair[$i]['time']}<br>{$timeonair[$i+1]['time']}</td>";

            $rowset = $dbh->query("SELECT * FROM radioshow WHERE radioshow.timeonair = '{$timeonair[$i]['time']}' and active='yes'")->fetchAll(PDO::FETCH_ASSOC);

            for ($j = 1; $j <= count($weekly); $j++) {

                if (!isset($rowspan2_array["day" . $weekly[$j] . "time" . $timeonair[$i-1]['time']]))
                    $result = "<td>";
                else
                    $result = "";
                if ($rowset && !isset($rowspan2_array["day" . $weekly[$j] . "time" . $timeonair[$i-1]['time']])) {
                    foreach ($rowset as $row) {
                        if ($row["dayweek"] == $weekly[$j] && $row["time_limit"] == 60) {
                            $result = "<td class='radioshow' style='background: #99CCFF;'><a target='_blank'  href='http://gtiradio.ru/radioshow/".$row["radioshowurl"]."'>" . $row["title"] . "<br>with " . $row["author"] . "</a>";
                        } else if ($row["dayweek"] == $weekly[$j] && $row["time_limit"] == 120) {
                            $rowspan2_array["day" . $weekly[$j] . "time" . $timeonair[$i]['time']] = true;
                            $result = "<td class='radioshow' rowspan=2 style='background: #66CCFF;'><a target='_blank'  href='http://gtiradio.ru/radioshow/".$row["radioshowurl"]."'>" . $row["title"] . "<br>with " . $row["author"] . "</a>";
                        } else {
                            $result .= "&nbsp;";
                        }
                    }
                } else {
                    $result .= "&nbsp;";
                }

                if (!isset($rowspan2_array["day" . $weekly[$j] . "time" . $timeonair[$i-1]['time']]))
                    $result .= "</td>";
                echo $result;
            }

            echo "</tr>";
        }
        ?>
    </table>
  • Вопрос задан
  • 2303 просмотра
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
nalomenko
@nalomenko
Руководитель отдела разработок в студии «Lava»
Почитайте вот эту статью, думаю она Вас натолкнёт на решение поставленного вопроса.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽