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

Solonik
5 Май 2014
дата доставки

дата доставки

Очень часто в интернете на сайте можно увидеть «Ближайшая доставка:» и выводится дата доставки. Согласитесь это очень удобно множество вопросов у клиента убирается и он четко видит когда он получит свой заказ. Сейчас это очень стало популярным ведь клиенты логично не хотят ждать. И для самого магазина удобно когда пользователь видит всю информацию на сайте и оформляет его на сайте. Это снижает расходы на операторов и.т.д.

Конечно данный пример очень примитивный и очень просто, но в тоже время дает развернуться. Ведь условия доставки у всех магазинов свои. Тут показан самый простой вариант представим, что мы небольшой магазин и зачастую работаем через службу доставки(курьерские службы для интернет магазинов).

Этот вариант подойдет под условия:

  • Мы должны знать в службу доставки до определенного времени к примеру до 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 и.т.д.

В принципе ничего сложного и как мы видим все довольно таки просто. Этот пример демонстрационный и вряд ли где то пригодится на сайте, но от него можно отталкиваться и доделать учет выходных и праздников, но здесь уже кому как больше нравится, хочется или нужно)

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

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

Оставить комментарий

You must be logged in to post a comment.