Всем привет! В этом году мне придётся заняться не программированием а огородом и животными. =) Опыта собственно нет, поэтому решил для себя сделать небольшой калькулятор, который поможет уследить хотя бы за огородом. Что нужно: Берем например морковь: вписываем: - Номер сектора посадки (например а1) - Дата посадки (15 мая) - Ориентировочное количество дней 95-100 дней (например 98 дней) нужно указать эти данные и получить примерную дату сбора урожая. и привинтить нотификатор, мол "через неделю урожай морковки в секторе а1", "сегодня уродай кабачков в секторе 15ф"... Дайте пожалуйста наводки и свои соображения. И прошу показать как приплюсовать даты, чтобы как то получалось вот такая конструкция: (15 мая плюс 98 дней равно 20 августа) Заранее очень благодарен за советы и помощь!
Приплюсовать данные средствами PHP можно, например, так: Код (PHP): <?php $month = 5; $day = 15; $year = 2012; $days = 98; $end = mktime(0, 0, 0, $month, $day, $year) + (60 * 60 * 24 * $days); echo(date('d.m.Y', $end)); ?> Ну, или так: Код (PHP): <?php echo(date('d.m.Y', strtotime('15.05.2012 +98 days'))); ?>
Спасибо sobachnik! Получилось вот что: Код (PHP): <?php $start_day = "15.05.2012"; //дата посадки $seedling = "98"; //сколько дней до урожая $end_day = (date('d.m.Y', strtotime($start_day. ' + ' . $seedling . ' days'))); //расчет конечного дня. $month_num = array(".01.",".02.",".03.",".04.",".05.",".06.",".07.",".08.",".09.",".10.",".11.",".12."); //ищем месяц в цифрах $month_abc = array(" Января "," Февраля "," Марта "," Апреля "," Мая "," Июня "," Июля "," Августа "," Сентября "," Октября "," Ноября "," Декабря "); //переводим месяц в буквы $new_end_day = str_replace($month_num, $month_abc, $end_day); //Создаём печатную дату посадки $new_start_day = str_replace($month_num, $month_abc, $start_day); //Создаём печатную дату урожая echo <<<HTML Посажено: {$new_start_day} <br> Урожай: {$new_end_day} HTML; ?> Это верная конструкция кода? Теперь нужно создать список овощей и разные даты сбора урожая. Тоесть сейчас этот код рассчитывает один овощ... Чтобы не дублировать этот код на каждый овощь, можно ли его унифицировать? Например создать список: Морковь, посажена: 15 мая, зреет: 98 дней, дата сбора уражая (21 Августа 2012). Томаты, посажены: 30 мая, зреют: 120 дней, дата сбора уражая (31 Августа 2012). Огурцы, посажены: 20 мая, зреют: 44 дня, дата сбора уражая 29 Августа 2012. Добавлено спустя 40 минут 17 секунд: В общем вот что получилось: Код (PHP): <?php $data = array(); /*морковь*/ $parnik = array(); $parnik['name'] = "Морковь Фараон"; $parnik['visadka'] = "15.05.2012"; $parnik['vizrevaet'] = "85"; $parnik['sektor_parnika'] = "А1"; $data[0] = $parnik; /*Томаты*/ $parnik = array(); $parnik['name'] = "Томаты Бычье Сердце"; $parnik['visadka'] = "20.05.2012"; $parnik['vizrevaet'] = "120"; $parnik['sektor_parnika'] = "А7"; $data[1] = $parnik; /*Огурцы*/ $parnik = array(); $parnik['name'] = "Огурцы Гектор"; $parnik['visadka'] = "31.05.2012"; $parnik['vizrevaet'] = "44"; $parnik['sektor_parnika'] = "Б3"; $data[2] = $parnik; /*Овощи кончились, теперь генерируем расчетные данные*/ $generator_parnika = ''; for ($i = 0; $i < sizeof($data); $i++) { $number = $i + 1; // Калькулируем весь список овощей и создаём даты урожая $start_day = $data[$i]['visadka']; //дата посадки $seedling = $data[$i]['vizrevaet']; //сколько дней до урожая $end_day = (date('d.m.Y', strtotime($start_day. ' + ' . $seedling . ' days'))); //расчет конечного дня. $month_num = array(".01.",".02.",".03.",".04.",".05.",".06.",".07.",".08.",".09.",".10.",".11.",".12."); //ищем месяц в цифрах $month_abc = array(" Января "," Февраля "," Марта "," Апреля "," Мая "," Июня "," Июля "," Августа "," Сентября "," Октября "," Ноября "," Декабря "); //переводим месяц в буквы $new_end_day = str_replace($month_num, $month_abc, $end_day); //Создаём печатную дату посадки $new_start_day = str_replace($month_num, $month_abc, $start_day); //Создаём печатную дату урожая // Генерируем HTML $generator_parnika .= <<<HTML \n Номер: {$number}<br /> Название: {$data[$i]['name']}<br /> Дата высадки: {$new_start_day}<br /> Урожай: {$new_end_day}<br> Дней вызревает: {$data[$i]['vizrevaet']}<br /> Сектор парника: {$data[$i]['sektor_parnika']}<br /> <br /> <br /> HTML; } // Дополнительные данные для расчета, для информера... $segodna = date("d-m-Y"); $informer = <<<HTML Сегодня: {$segodna}, через 10 дней высаживаем томаты, (А в конце лета тут этот же информер должен сообщать что через 8 дней собираем Томаты) HTML; // Воводим готовый результат в таблицу echo <<<HTML <table> <tr> <th> {$informer} </th> </tr> <tr> <td> {$generator_parnika} </td> </tr> </table> HTML; ?> Я всё верно делаю? Можно оформлять в красивую оболочку? Или пересобирать код? Добавлено спустя 10 минут 8 секунд: Опять столкнулся с проблемой... Помогите составить конструкцию этого кода чтобы производилось сопоставление даты, чтобы информировало два раза... Первый информер сообщал ближайшую дату посадки отталкиваясь от от текущего дня $segodna = date("d-m-Y"); и высчитывая разницу $data[$i]['visadka'], мол "Через семь дней нужно высадить Томаты".. или "Сейчас зима, ничего не растёт.." =) Второй информер высчитывал сопоставление даты сбора урожая отталкиваясь от $new_end_day,... мол "Через семь дней пора собирать кабачки"...