Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
 Аватар для allukard
307 / 218 / 70
Регистрация: 08.11.2010
Сообщений: 1,899

Вывод календаря с привязкой к базе данных

16.01.2017, 12:04. Показов 2508. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, Господа.
Подскажите пожалуйста как сделать выборку.

хочу в таблицу выводить столбец "avg" по месяцам см. на рисунке №1.

данные в таблице

так то все работает, если запись начинать с начала месяца, но хотелось бы что бы привязка была к конкретному дню, вот полностью код, выводу конкретный контроллер, потом выборка по месяцам.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
    <?php   while($my_c3 = mysql_fetch_array($res_c3)){
        $arrd = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18,20,21,22,23,24,25,26,27,28,29,30,31);
 
        foreach ($arrd as $valued) {
            if($valued == $my_c3['count_date_d']){
                echo "<td>".round($my_c3['avg'])."</td>";
            }
            else
            {
            echo "<td></td>";
            }
        }
    }?>
вот тут у меня проблема, получается я каждый день перебираю числа если они ровняются то выводе число, если нет, то столбец и этом столбцов с каждым днем все больше и больше.

Кликните здесь для просмотра всего текста

PHP
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
<?php
echo "<table cellspacing="0" cellpadding="0" class="temp_table">";
   $res_c2 = mysql_query("SELECT DISTINCT DATE_FORMAT(date, '%m') AS count_date FROM `avg`",$db);
   echo "<tr>";
   echo "<td></td>";
    $arr = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18,20,21,22,23,24,25,26,27,28,29,30,31);
        foreach ($arr as $value) {
        echo "<td>".$value."</td>";
        }
   echo "</tr>";
    while($my_c2 = mysql_fetch_array($res_c2)){
        echo "<tr><td><b>";
        switch ($my_c2['count_date']){
        case '01': $m = "January"; break;
        case '02': $m = "February"; break;
        case '03': $m = "March"; break;
        case '04': $m = "April"; break;
        case '05': $m = "May"; break;
        case '06': $m = "June"; break;
        case '07': $m = "July"; break;
        case '08': $m = "August"; break;
        case '09': $m = "September"; break;
        case '10': $m = "October"; break;
        case '11': $m = "November"; break;
        case '12': $m = "December"; break;};
        echo "</b></td></tr>";
        $res_c3 = mysql_query("SELECT DATE_FORMAT(date, '%m') AS count_date, DATE_FORMAT(date, '%d') AS count_date_d,id, id_controller, avg, min, max
        FROM `avg`
        WHERE id_controller = '".$my_c['id']."' and DATE_FORMAT(date, '%m') = ".$my_c2['count_date']." ORDER BY date",$db);
        echo "<tr><td>$m</td>";
    
        while($my_c3 = mysql_fetch_array($res_c3)){
        $arrd = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18,20,21,22,23,24,25,26,27,28,29,30,31);
 
        foreach ($arrd as $valued) {
            if($valued == $my_c3['count_date_d']){
                echo "<td>".round($my_c3['avg'])."</td>";
            }
            else
            {
            echo "<td></td>";
            }
        }
        echo $no." ";
        //if($arrd['2'] = 2){echo "Ровно";}
        //echo "<td>".round($my_c3['avg'])."</td>";
    
    }
        echo "</tr>";
    }
    echo "</table>";
    echo "</div>
    </div>
    </div>
    <br>";
}
?>


надеюсь что понятен смысл
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.01.2017, 12:04
Ответы с готовыми решениями:

Поиск по базе данных и вывод найденной информации
В общем суть вот в чем у меня поиск идет из одной страницы а результат получаем на другой как это сделать при нажатие на кнопку поиск вот...

Статистический вывод ссылок с привязкой определенной страницы
Привет всем вопрос такого плана имеется код if(strstr(strtolower($_SERVER), &quot;mozilla&quot;) or strstr(strtolower($_SERVER),...

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

14
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
16.01.2017, 16:11
Цитата Сообщение от allukard Посмотреть сообщение
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
switch ($my_c2['count_date']){
case '01': $m = "January"; break;
case '02': $m = "February"; break;
case '03': $m = "March"; break;
case '04': $m = "April"; break;
case '05': $m = "May"; break;
case '06': $m = "June"; break;
case '07': $m = "July"; break;
case '08': $m = "August"; break;
case '09': $m = "September"; break;
case '10': $m = "October"; break;
case '11': $m = "November"; break;
case '12': $m = "December"; break;};
PHP
1
$m = date('F', mktime(0, 0, 0, $my_c2['count_date'], 1));
Но смысл того, что вам нужно, я не понял.
1
 Аватар для allukard
307 / 218 / 70
Регистрация: 08.11.2010
Сообщений: 1,899
16.01.2017, 17:52  [ТС]
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
$m = date('F', mktime(0, 0, 0, $my_c2['count_date'], 1));
Спасибо за рефакторинг! сейчас попробую обьяснить что я хочу сделать
0
 Аватар для allukard
307 / 218 / 70
Регистрация: 08.11.2010
Сообщений: 1,899
16.01.2017, 18:25  [ТС]
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
Но смысл того, что вам нужно, я не понял.
хорошо, использую динамическое программирование.

есть такая таблица

вне нужно вывести среднее значение по дням как на той таблице


получается надо привязать поле AVG к своему дню.

я делал так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$arrd = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18,20,21,22,23,24,25,26,27,28,29,30,31);
        foreach ($arrd as $valued) {
            if($valued == $my_c3['count_date_d']){
                echo "<td>".round($my_c3['avg'])."</td>";
            }
                         else
                    {
                        echo "<td></td>";
                    }
        }
?>
из таблицы выводил месяца, далее каждый день перебирался массив $arrd и сравнивался с базой
if($valued == $my_c3['count_date_d']) если день совпадает с днем в базе то вывожу среднее значение а если нет то пустую ячейку. Но тут получается что каждый день он прогоняет массив заново.

если смотреть на таблице то 9-го и 10 дня первого контроллера должна быть температура 32
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
16.01.2017, 20:18
Лучший ответ Сообщение было отмечено allukard как решение

Решение

allukard,
PHP
1
2
3
4
5
6
7
8
9
10
$arrd = range(1, 31);
$my_c3 = mysql_fetch_assoc($res_c3);
foreach ($arrd as $valued) {
    if ($my_c3 && $my_c3['count_date_d'] == $valued) {
        echo '<td>', round($my_c3['avg']), '</td>';
        $my_c3 = mysql_fetch_assoc($res_c3);
    } else {
        echo '<td></td>';
    }
}
1
 Аватар для allukard
307 / 218 / 70
Регистрация: 08.11.2010
Сообщений: 1,899
16.01.2017, 20:40  [ТС]
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
PHP
1
2
3
4
5
6
7
8
9
10
$arrd = range(1, 31);
$my_c3 = mysql_fetch_assoc($res_c3);
foreach ($arrd as $valued) {
    if (isset($my_c3) && $my_c3['count_date_d'] == $valued) {
        echo '<td>', round($my_c3['avg']), '</td>';
        $my_c3 = mysql_fetch_assoc($res_c3);
    } else {
        echo '<td></td>';
    }
}
Благодарю за ответ! все четко но вот почему то первая запись не выводится, из 4 выводит 3, из 2 выводит 1.

сейчас постараюсь разобраться
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
16.01.2017, 20:45
стыдно в 2017 использовать mysql_* функции
в PHP 7 их вообще уже нет
0
 Аватар для allukard
307 / 218 / 70
Регистрация: 08.11.2010
Сообщений: 1,899
16.01.2017, 20:49  [ТС]
Цитата Сообщение от полудух Посмотреть сообщение
стыдно в 2017 использовать mysql_* функции
в PHP 7 их вообще уже нет
для автоматизации десятка контроллеров температуры по протоколе snmp пойдет
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
16.01.2017, 20:52
Цитата Сообщение от allukard Посмотреть сообщение
для автоматизации десятка контроллеров температуры по протоколе snmp пойдет
я уверен, там много чего пойдёт
например perl
или bash

кстати, там 2 раза 18,18
а вообще задача нихрена не понятна
но для генерации таблицы делается так:
PHP
1
2
3
$TR[] = "<tr><td>...</td></tr>"
 
implode("\n",$TR);
1
 Аватар для allukard
307 / 218 / 70
Регистрация: 08.11.2010
Сообщений: 1,899
16.01.2017, 21:00  [ТС]
Цитата Сообщение от полудух Посмотреть сообщение
но для генерации таблицы делается так:
проанализирую рекомендацию, да perl классная штука... автоматизировал процесс почтового сервера по протоколу imap. по архивации, мониторинга и уведомлений.

если честно толком не могу сильно освоить язык, много времени трачу сейчас на с# что бы понять принцип ООП. на работе то одно то второе
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
16.01.2017, 21:02
Цитата Сообщение от allukard Посмотреть сообщение
первая запись не выводится
Покажите весь измененный код.
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
16.01.2017, 21:03
Цитата Сообщение от allukard Посмотреть сообщение
perl классная штука
нет.
каменный век он

Цитата Сообщение от allukard Посмотреть сообщение
на работе то одно то второе
Название: 5438988_m.png
Просмотров: 68

Размер: 52.5 Кб

ПХП решает любые задачи. На данный момент PHP7 - лучший, Я щетаю
0
 Аватар для allukard
307 / 218 / 70
Регистрация: 08.11.2010
Сообщений: 1,899
16.01.2017, 21:14  [ТС]
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
Покажите весь измененный код.
PHP
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
    <?php
echo "<table cellspacing=\"0\" cellpadding=\"0\" class=\"temp_table\">";
   $res_c2 = mysql_query("SELECT DISTINCT DATE_FORMAT(date, '%m') AS count_date FROM `avg`",$db);
   echo "<tr>";
   echo "<td></td>";
    $arr = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18,20,21,22,23,24,25,26,27,28,29,30,31);
        foreach ($arr as $value) {
        echo "<td>".$value."</td>";
        }
   echo "</tr>";
    while($my_c2 = mysql_fetch_array($res_c2)){
        echo "<tr><td><b>";
       $m = date('F', mktime(0, 0, 0, $my_c2['count_date'], 1));
        echo "</b></td></tr>";
        $res_c3 = mysql_query("SELECT DATE_FORMAT(date, '%m') AS count_date, DATE_FORMAT(date, '%d') AS count_date_d,id, id_controller, avg, min, max
        FROM `avg`
        WHERE id_controller = '".$my_c['id']."' and DATE_FORMAT(date, '%m') = ".$my_c2['count_date']." ORDER BY date",$db);
        echo "<tr><td>$m</td>";
    
        while($my_c3 = mysql_fetch_array($res_c3)){
        
    $arrd = range(1, 31);
    $my_c3 = mysql_fetch_assoc($res_c3);
    foreach ($arrd as $valued) {
        if (isset($my_c3) && $my_c3['count_date_d'] == $valued) {
                echo '<td>', round($my_c3['avg']), '</td>';
                    $my_c3 = mysql_fetch_assoc($res_c3);
                } else {
                    echo '<td></td>';
                }
        }
    
    }
        echo "</tr>";
    }
    echo "</table>";
    echo "</div>
    </div>
    </div>
    <br>";
}
?>
Добавлено через 2 минуты
понял я в чем дело!

Добавлено через 3 минуты
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
Покажите весь измененный код.
Спасибо!
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
16.01.2017, 21:30
Цитата Сообщение от allukard Посмотреть сообщение
PHP
1
while($my_c3 = mysql_fetch_array($res_c3)){
Лишнее это
1
 Аватар для volodin661
6684 / 2276 / 347
Регистрация: 10.12.2013
Сообщений: 7,855
17.01.2017, 13:44
Цитата Сообщение от полудух Посмотреть сообщение
нет.
каменный век он
каменный 21-й век.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.01.2017, 13:44
Помогаю со студенческими работами здесь

Нахождение в базе данных строк,содержащих одинаковые значения и вывод их id
Доброго времени суток.Цель состоит в том,что бы проверять в базе данных tabel значения столбцов и находить одинаковые в столбце text,а...

Вывод имен файлов которые есть в папке, но нет в базе данных!
Написал кнопку которая выводит количество файлов в папке, количество файлов в базе, и выводит имена тех файлов которые есть в папке но нет...

Вывод записей в виде календаря
http://auto.obzor.ru/index.asp?act=news&amp;n=14324 Подскажите пожалуйста по какому принципу работает календарь записей как например на...

Передача данных между страницами html (запрос к базе)-> php (обработка) -> html (вывод результата обработки)
Есть два файла: 1) index.php HTML c кнопкой, которая запускает PHP обработчик запроса к базе данных 2) do.php PHP обработчик,...

Поведение ComboBox с привязкой к базе данных
Доброго дня. Схема такая: При изменении свойства Text, свойству ItemsSource присваивается таблица с данными...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru