powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите с логикой работы (диаграмма гранта)
1 сообщений из 1, страница 1 из 1
Помогите с логикой работы (диаграмма гранта)
    #37772783
Zhenek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица.

В ней 3 поля date_close time_start date_auk они 100% идут друг за другом. т.е -> 25.04.2012 10:00 -> 27.04.2012 - > 27.04.2012 22:00

У второго поля нет времени. только число.

Мне необходимо построить диаграмму ганта.

Для первого поля красный цвет
Второе поле оранжевый
Третий зелены

Например открываем диаграмму 24 числа (исходя из примера) весь день красного цвета т.к идет прием заявок,
Но на 25 уже до 10:00 красное, а дальше оранжевое, 26 тоже.
27 оранжевое , но 27 после 22:00 уже зеленое. Началась игра.

Код: 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.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
if($_GET['date']==''){
$date = date('d.m.Y',time());   
$datee = date('d.m.Y',time());
$date2 .= $date.' 23:59';
}else{
$date = $_GET['date'];
$date2 = $date.' 23:59';
}

// На выходе имеем $date - число на которое смотрим график $date2 - окончание числа на которое смотрим график

$dt = new DateTime($date2);
$date2 = $dt->getTimestamp(); // получили юникс время все еще по москве
	$dt = new DateTime($date);
$date = $dt->getTimestamp()		;			
echo "<table style='border:1px'><tr><td width=150px>ИМЯ</td>";
for ($i=1;$i<=24;$i++){
echo "<td >$i:00</td>"; // выводим шапку со временем от 01 до 24:00
}
echo "</tr>";



							$res = mysql_query("SELECT * FROM auk WHERE date_close>$date OR t_start>$date OR date_auk>$date");
							
                               while($data=mysql_fetch_array($res)) {
							   echo "<tr><td><a href='?do=auk_card&id=$data[id]' target=blank>...".substr($data['number'],-8)."</a></td>";
								for ($i=1;$i<=24;$i++){
								
								$itogo = $datee." $i:00";
								$dt = new DateTime($itogo);
								$itogo = $dt->getTimestamp(); // текущая дата в графике и время
								
								$t_start = date('H:i',$data['t_start']);
								if(date('d',$data['t_start']) == date('d',$date)){
								$t_start = $datee.' '.$t_start;           // дата и время аукциона адаптированная под текущий день графика
								$dt = new DateTime($t_start);$t_start = $dt->getTimestamp();
								$t_start = return_time($t_start,$_SESSION['gmt']);
								}
								
								if(date('d',$data['date_auk']) == date('d',$date)){
								$date_auk = date('H:i',$data['date_auk']);
								$date_auk = $datee.' '.$date_auk;           // дата и время аукциона адаптированная под текущий день графика
								$dt = new DateTime($date_auk);$date_auk = $dt->getTimestamp();
								$date_auk = return_time($date_auk,$_SESSION['gmt']);
								}
								/////////////////////////////////////////////////////////////////
								$date_close = date('H:i',$data['date_close']);
								$date_close = $datee.' '.$date_close;           // дата и время аукциона адаптированная под текущий день графика
								$dt = new DateTime($date_close);$date_close = $dt->getTimestamp();
								$date_close = return_time($date_close,$_SESSION['gmt']);
								if($date_close <= $itogo AND $t_start > $itogo ){$color='red';$title='Подача заявок';}else{$color=''; $title='';}
                                /////////////////////////////////////////////////////////////////
								/////////////////////////////////////////////////////////////////
								
								if($t_start > $itogo AND $date_auk > $itogo AND $color !='red'){$color='orange';$title='Рассмотрение первых частей заявок';}else{}
								if($date_auk < $itogo AND $color !='red' AND $color !='orange'){$color='green';$title='Проведение аукциона';}
								
								$g = date('d.m.Y H:i', $date_auk);
                                /////////////////////////////////////////////////////////////////
								
								echo "<td title='$title' bgcolor=$color></td>";
								}
							   
							   
							   echo "</tr>";
							   
							   }

							   echo "</table>";



Но показывает не всегда верно. Где-то ошибка в логике сравнений((( Может можно сделать как-то проще?

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

Если даты без времени, то между датами точно разница сутки есть.. 26-27 и т.д
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите с логикой работы (диаграмма гранта)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]