Прогрес бар

Статус
В этой теме нельзя размещать новые ответы.

NeoLynx

Новичок
Прогрес бар

Суть такова есть числа от 12 до 23.
Это даты, соответственно ряд идет следующим образом:
12,13,14,..., 31,1,2,3,...,23
Над ним есть квадратики (типа прогресс бар)
Нужно чтобы до завтрашнего числа все квадраты были черными, а потом белыми.

Понятно, что точкой преломления является сегодняшняя дата, но с чем её сравнивать?
Вчера заведомо меньше, чем сегодня, завтра - больше....

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

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

makRo

Guest
NeoLynx, ты можешь объяснить ситуацию исходя из предположения, что никто раньше не слыхал о твоей проблеме ?
ээ.. т.е. попонятней объяснить, чего собственно нужно :)
 

Апокалипсис

Guest
>Понятно, что точкой преломления является сегодняшняя >дата, но с чем её сравнивать?

[m]time[/m] - время в секундах
 

nagash

Guest
не поняли вы человека...
его смушает то что вроде как 1 число меньше чем сегодня но лежит практически в конце его прогесс бара...
делай вот как...
$date[1] = 12;
$date[2] = 13;
..
$date[n] = 31
..
$date[30] = 10;
$date[31] = 11;

ищещь в этом массивесвоё число...
и далее уже просто...
все числа которые идут раньше в масиве одного цвета те что позже другого... =)
 

NeoLynx

Новичок
Апокалипсис "сегодняшняя дата" = time(), это и так понятно,
а вот с чем time() сравнивать...

nagash, верно, именно это меня и смущает.
Решение интересное, но в этом массиве будет два раза встречаться цифры 12,13 и т.д.

Попробую объяснить по другому:
есть n квадратов, один квадрат, это один день
Нужно, чтобы все квадраты до сегодняшнего числа, включительно, были одним цветом, а после другим.

Я нашел решение с двумя массивами, но оно распространяется только на два месяца, по одному массиву на месяц. Но это сликом громозкое решение, должно быть решение проще.
 

Larson

Новичок
Ты лучше объясни что у тебя за даты такие странные? Начинается с 12, заканчивается на 23.
Если обычный календарь, то сравнивай еще и месяц.
 

NeoLynx

Новичок
похоже так и придеться сравнивать месяц, хотя должно быть решение проще.
 

Larson

Новичок
Куда проще? Только надо не с 12 массивами, а там где ты хранишь свои даты, добавь еще месяц.
 

Linker

Guest
NeoLynx:

date("z") - порядковый номер дня в году.

Только самое главное - какие нужны числа, только те что указаны (с12 ... по 23) об чём речь-то ??
 

Linker

Guest
NeoLynx:

Дата откуда берётся?
Можно самому формировать или необходимо работать именно с последовательностью "12 ... 23" ?

Я просто хотел бы поучаствовать в "академическом программировании" :)
 

NeoLynx

Новичок
Жаль, но Linker прав, а использовать date("z") еще более не удобно.
Вообщем реализовал в виде массива дат и месяцев.
И уже с ним сравниваю текущюю дату, получаю номер массива $date[18], дальше дело техники.
 

NeoLynx

Новичок
Linker, к примеру есть 40 дней-квадратов, один квадрат, это один день. Нужно, чтобы все квадраты до сегодняшнего числа, включительно, были одним цветом, а после другим.

Вообщем, я подхалтурил и сделал, только по текущему месяцу.
http://blackbird.tagtech.ru/date.php

Но суть надеюсь понятна.
 

RomikChef

Guest
господи, если надо написать шкалу от -20 дней до +20, то это задачка на пару строчек.
все примитивно вычисляется. для любого дня
 

Georgy

Guest
PHP:
/************************************************************************
	*	function:	getDayBar()												* 
	*	notes:		создает прогресс бар из кол-ва дней прошедших с начала	*
	*				месяца													* 
	*				Так же три необязательных аргумента существуют для того,*
	*				чтобы подсвечивать дату (например день рожденья)		*
	*				аргументы стоит вводить так (1,2,3), а не (02, 03, 04)	*
	*************************************************************************/
	function getDayBar( $day = '', $month = '' , $year = '' ) 
	{
		$dayofmonth		= date ( 'j' ); // номер текущего дня месяца 1-(29)(30)(31)
		$weekday		= date ( 'w' ); // номер дня в неделе 
		$monthofyear	= date ( 'n' ); // номер месяца в году 1-12
		$curyear		= date ( 'Y' ); // текущий год
		$x				= 1;
		$DayBar			= '';
		$imagepath		= 'your_path_to_image_dir;

			for ( $i = 0; $i < $dayofmonth; $i ++ ) /* begin of for */
				{

						if ( $day != '' && $x == $day) 
						{
							$image[$i] = $imagepath . 'day_bar_select.gif';
								if ( $month != '' ) 
								{
									$image[$i] = ($month == $monthofyear) ? $imagepath . 'day_bar_select.gif' : $imagepath . 'day_bar.gif'; 
								}

								if ( $year != '' ) 
								{
									$image[$i] = ($year == $curyear) ? $imagepath . 'day_bar_select.gif' : $imagepath . 'day_bar.gif';
								}


						}
						else 
						{
							$image[$i] = $imagepath . 'day_bar.gif';
						}

					$alt[$i] = $x;

					$DayBar .= '<img src="'.$image[$i].'" hspace="1" alt="'.$alt[$i].'" title="'.$alt[$i].'">';
					$x ++;

			} /* end of for */

		return $DayBar;
	}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху