Дата доставки для интернет магазина на PHP

3 минуты на чтение
[caption id="attachment_118" align="alignleft" width="300"]дата доставки дата доставки[/caption] Очень часто в интернете на сайте можно увидеть "Ближайшая доставка:" и выводится дата доставки. Согласитесь это очень удобно множество вопросов у клиента убирается и он четко видит когда он получит свой заказ. Сейчас это очень стало популярным ведь клиенты логично не хотят ждать. И для самого магазина удобно когда пользователь видит всю информацию на сайте и оформляет его на сайте. Это снижает расходы на операторов и.т.д. Конечно данный пример очень примитивный и очень просто, но в тоже время дает развернуться. Ведь условия доставки у всех магазинов свои. Тут показан самый простой вариант представим, что мы небольшой магазин и зачастую работаем через службу доставки(курьерские службы для интернет магазинов). Этот вариант подойдет под условия:
  • Мы должны знать в службу доставки до определенного времени к примеру до 18 часов
  • Пример не учитывает праздничные и выходные дни
  • Берет из расчета, что работает с собственным складом. Если мы делаем заказ до определенного времени доставка будет на следующий день. Если мы уже в этот день передали заказы на след. день, то доставка будет соответственно через 1 день
  • Не привязан к году и код сам будет определять сколько дней в этом месяце и брать след. день
Сам код с пояснениями:
<?php
$hours = date('G'); //здесь не трогаем получаем сколько сейчас часов.
$start = 18; // С какого часа будет переключаться доставка. В данном случае указываем до каких часов принимаем заказы на завтра например.

echo ($hours > $start) ? "Ближайшая доставка: ". date('d-m-Y',strtotime("+2 day")) :  "Ближайшая доставка: " . date('d-m-Y',strtotime("+1 day")); //специально использовал strtotime чтобы легко можно было исправить на следующий день или через сколько дней доставка.
?>
Здесь в принципе все просто, но можно легко его расширить. Например если мы хотим, чтобы клиент видел день недели да и ещё чтобы по русски было написано например "понедельник". Можно дополнить в таком виде
<?php
$month = array('','января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря');
$hours = date('G');
$start = 18;
$day = array('','понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота', 'воскресенье');

echo ($hours > $start) ? "Ближайшая доставка: ". date('d-m-Y',strtotime("+2 day")). ' - ' . $day[date('N', strtotime("+2 day"))] :  "Ближайшая доставка: " . date('d-m-Y',strtotime("+1 day")) . ' - ' . $day[date('N', strtotime("+1 day"))];

?>
Как мы видим я уже заготовил вариант если мы и месяцы хотим видеть не 03 например, а чтобы февраля было написано, то можно действовать по аналогии с днями неделями. Почему первый элемент массива пустой ? Потому, что date('N') возвращает день недели от 1 до 7, а массивов идет отсчет с 0-ого элемента. Как вариант можно было сделать ещё:
$day = array('1'=>'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота', 'воскресенье'); // вместо строчки $day в примеру прописать эту строчку результат будет один и тот же.
Т.е. мы принудительно понедельнику дали ключ 1. Последующие соответственное будут 2,3,4 и.т.д. В принципе ничего сложного и как мы видим все довольно таки просто. Этот пример демонстрационный и вряд ли где то пригодится на сайте, но от него можно отталкиваться и доделать учет выходных и праздников, но здесь уже кому как больше нравится, хочется или нужно)
Facebook Vk Ok Twitter Telegram Whatsapp

Похожие записи:

[caption id=&#34;attachment_16&#34; align=&#34;alignleft&#34; width=&#34;300&#34; class=&#34;left &#34;] Пошаговое создание интернет магазина[/caption] Очень часто люди спрашивают меня
Функционирование интернет магазина дает возможность существенно поднять уровень сбыта компании и привлечь новых покупателей, которые
[caption id=&#34;attachment_85&#34; align=&#34;alignleft&#34; width=&#34;300&#34;] Откуда приходят посетители в ваш интернет-магазин[/caption] Прибыльные интернет-магазины