Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: помогите с листалкой

Сообщения:  [1-10]   [11-17] 

 
 автор: confirm   (09.04.2012 в 17:52)   письмо автору
 
   для: technic611   (09.04.2012 в 15:13)
 

Методы чего?
Если о том как при смене года менять и месяц, то зачем?
Что еще вам надо?
Вот я, к примеру, так и не увидел до сих пор, где же вы проверяете високосный год. Либо вы делаете это каким-то своим запутанным методом понятным только вам (хотя для этого достаточно разделить год по модулю 4), либо вообще ничего не делаете, а значит неминуема ошибка. У вас до сих пор февраль в массиве определен 29 днями, словно ваш календарь рассчитан только на 2012, или исключительно на високосные года. Тоже самое и с днем недели, откуда берется этот $week, что вы там считаете...
А ведь, если вам не разрешено пользоваться функциями работы с датой, что является полным идиотизмом (но это так, к слову), то значит вы должны получать день недели первого дня каждого месяца, начиная с известной опорной точки. Ваш календарь с 2012 года, а первым днем января этого года является воскресенье. Учитывая то, что работаем с массивами, то этот день будет иметь индекс: $firstday = 6;. Узнаем сколько дней в неделе занимают первая неделя этого месяца: 7-6=1. Количество этих дней нужно вычитать из общего числа дней, равных как число лет (от стартового года календаря) помноженное на 365, плюс по одному дню для каждого входящего високосного года в это число лет. Естественно, что если число лет равно 1, то нужно брать сумму только дней от января по месяц предыдущий текущему, тоже самое учитывать и для последнего года.
А далее получать день недели:
$week_day = (($days % 28)-(7-$firstday))%7;
Это будет возвращать индекс ячейки таблицы с которой и надо начинать вывод дней календаря.

  Ответить  
 
 автор: technic611   (09.04.2012 в 15:13)   письмо автору
 
   для: confirm   (08.04.2012 в 15:42)
 

Кто-нибудь предложит какие-нибудь методы?

  Ответить  
 
 автор: confirm   (08.04.2012 в 15:42)   письмо автору
 
   для: technic611   (08.04.2012 в 15:29)
 

А вы можете представить такую ситуацию? Вроде бы как по логике действий, пользователь смещается в календаре либо выбирая год, либо месяц.
Ваш календарь должен выполнять две однотипные операции - указывать скрипту что изменяется по требованию пользователя и в каком направлении. Если выбран год, значит в зависимости от выбранного направления либо добавлять к текущему году 1, либо отнимать, проверяя установленные вами пределы календаря.
Тоже самое для месяца, с той лишь разницей, что вы должны еще проверять, достигнут ли край года, и надо ли осуществить и переход на следующий год, с одновременной сменой месяца.
Ну и хранить на клиенте текущий год и месяц, если вам и сессии не разрешены по условию.

  Ответить  
 
 автор: technic611   (08.04.2012 в 15:29)   письмо автору
 
   для: confirm   (07.04.2012 в 14:48)
 

это пустой разговор. а как быть если листать год и тут же одновременно месяц?

  Ответить  
 
 автор: confirm   (07.04.2012 в 14:48)   письмо автору
 
   для: technic611   (07.04.2012 в 12:17)
 

Ясно.
Вы же задаете изначально стартовую точку календаря (как можете указать и предел его), вы прописываете параметры в url кнопок. Вот и вставляйте их, день вперед/назад, с проверкой. Только число дней февраля нужно корректировать, а так как в нашем календаре високосный год, это каждый четвертый, значит удобнее в массиве для этого месяца указать 28 дней.
Ну а год еще проще - просто плюсуйте/минусуйте по 1 к текущему году, проверяя достижение краев календаря.

  Ответить  
 
 автор: technic611   (07.04.2012 в 13:13)   письмо автору
 
   для: technic611   (07.04.2012 в 12:17)
 

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

  Ответить  
 
 автор: technic611   (07.04.2012 в 12:17)   письмо автору
 
   для: confirm   (07.04.2012 в 10:27)
 

по заданию date использовать нельзя

  Ответить  
 
 автор: confirm   (07.04.2012 в 10:27)   письмо автору
 
   для: technic611   (07.04.2012 в 10:18)
 

Это почему нельзя? Не считать пустые ячейки текущего месяца, а узнать день недели первого дня текущего месяца. Функция date() может вернуть все необходимое для календаря, а strtotime() позволит работать с одной get-переменной, чтобы листать календарь.
Я поэтому и говорил - так как бы я хотел сделать, это тайна покрытая мраком. )

  Ответить  
 
 автор: technic611   (07.04.2012 в 10:18)   письмо автору
 
   для: confirm   (07.04.2012 в 07:21)
 

использовать функцию date () нельзя. я так понял нужно считать пустые ячейки текущего месяца и потом делать отступ в следующем месяце на это кол-во ячеек, некоторые месяцы работают верно, а некоторые не правильно заполняют таблицу

  Ответить  
 
 автор: confirm   (07.04.2012 в 07:21)   письмо автору
 
   для: technic611   (07.04.2012 в 00:04)
 

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

А в чем выражается некорректность?

  Ответить  

Сообщения:  [1-10]   [11-17] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования