0 / 0 / 0
Регистрация: 28.06.2018
Сообщений: 2

PHP API - Фильтр товара по дням доставки

28.06.2018, 15:25. Показов 825. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всю голову уже сломал, кто поможет дельным советом в долгу не останусь!

Краткая предыстория:
Заказывали сайт, долго очень делали и исправляли ошибки. Теперь все у нас и программистов тех днем с огнем не найдешь.
Пытаемся разобраться...

Краткая история:
Есть несколько поставщиков от них дергаем товары онлайн по API и создаем массив данных, артикул, цена и т.д.
Есть настройки в MySQL по поставщикам и там в таблице w_wbs у поставщика есть поля: limit_delivery_active (активны ограничения - параметр 0/1) и limit_delivery_max(лимит в днях поставки).
К слову добавлю ощущение, что limit_delivery_max - задумали как дни на ограничение, а по факту это количество позиций..

Далее есть файл на ограничения/лимиты.
wbs_limits.model.php - в нем:

--------------------------------------начало файла --------------------------------------
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
<?php
 
class Wbs_limitsModel extends Orm
{
   public static function set_limits( $wbsData = array(), $data = array() )
   {
     $model = new Wbs_limitsModel();
 
     // ставим лимиты по "сроку поставки"  - минимальные и от установ. кол-ва
     // ставим лимиты по "цене"  - минимальные и от установ. кол-ва
 
     $limits = array();
     $limits ['price'] = ($wbsData['limit_price_active'])?$wbsData['limit_price_max']:false;
     $limits ['delivery'] = ($wbsData['limit_delivery_active'])?$wbsData['limit_delivery_max']:false;
     if ($limits['price'] || $limits['delivery'])
       $data = $model->data($data, $limits);
 
   
     return $data;
   }
   // конец
 
   private function data( $data = array(), $param_limits = array() )
   {
     $model = new Wbs_limitsModel();
     $array = array();
 
     // !!! ПОДГОТОВКА сортируем по бренду и артикулу
     // для того чтоб выделить группы для лимитов
   
   if (isset($data) && count($data)>0)
     {
       foreach ($data as $row)
       {
           $row = (array)$row;
         // если сроки имеет множественное значение типа 2-5 дня, берем максимальный
         $convert_delivery = $row['DELIVERY'];
         if (strpos($convert_delivery, "-")){
           list( , $convert_delivery) = explode("-", $convert_delivery);
         }
         elseif (strpos($convert_delivery, "/")){
           list( , $convert_delivery) = explode("/", $convert_delivery);
         }
 
         $array [FuncModel::stringfilter($row['BRAND_NAME']).FuncModel::stringfilter($row['ARTICLE'])] []= array_merge( (array)$row, array('DELIVERY' => (int)$convert_delivery) );
       }
     }
     // сброс
     unset($data);
 
 
     // !!!! ОБРАБОТКА
     $data = array();
     // лимитируем выдачу группы бренда
     if (count($array)>0)
     {
       ksort($array);
       foreach ($array as $key => $row)
       {
         // группа бренда и артикула
         $get_group_of_braart = $array[$key];
 
         // цена - лимиты
         if (isset($param_limits['price']) && $param_limits['price']){
           // сортируем по цене
           $get_group_of_braart = $model->array_usort_price( $get_group_of_braart );
 
           // проверяем - цены
           $i = 0;
           foreach ($get_group_of_braart as $id => $list) { $i++;
             if ( $param_limits['price'] >= $i ){
               // возврат
               $data []= $list;
               // удаляем что уже привязали
               unset($get_group_of_braart[$id]);
             }
             else
               break;
           }
         }
 
         // поставка срок - лимиты
         if (isset($param_limits['delivery']) && $param_limits['delivery'])
         {
           if (count($get_group_of_braart)>0) {
             // сортируем по поставке
             $get_group_of_braart = $model->array_usort_delivery( $get_group_of_braart );
             // проверяем - поставка
             $i = 0;
             $day = $wbsData['limit_delivery_max']; // переменная для отсекания по дням поставки
             foreach ($get_group_of_braart as $list) { $i++;
               if ( $param_limits['delivery'] >= $i)
                 $data []= $list;
               else
               break;
             }
           }
         }
         // сброс
         unset($array[$key], $get_group_of_braart);
       }
     }
     unset($array);
 
     return $data;
   }
   // конец
 
   // сортировка
   function array_usort_delivery($array)
   {
     usort($array, function($lft, $rgt) {
 
       if ($lft['DELIVERY'] > $rgt['DELIVERY'])
         return 1;
 
       if ($lft['DELIVERY'] < $rgt['DELIVERY'])
         return -1;
 
       if ($lft['DELIVERY'] == $rgt['DELIVERY'] && $lft['PRICE'] > $rgt['PRICE'])
         return 1;
 
       if ($lft['DELIVERY'] == $rgt['DELIVERY'] && $lft['PRICE'] < $rgt['PRICE'])
         return -1;
 
       return 0;
     });
 
     return $array;
   }
 
   function array_usort_price($array)
   {
     usort($array, function($lft, $rgt) {
 
       if ($lft['PRICE'] > $rgt['PRICE'])
         return 1;
 
       if ($lft['PRICE'] < $rgt['PRICE'])
         return -1;
 
       return 0;
     });
 
     return $array;
   }
   // конец
}
 
?>
--------------------------------------конец файла --------------------------------------

Главная проблема, как сделать что бы фильтр ограничения по дням доставки работал как фильтр ОГРАНИЧЕНИЯ по дням доставки. Беря данные в ячейках от текущего поставщика, которого он обрабатывает и режет товар, который по дням поставки больше.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.06.2018, 15:25
Ответы с готовыми решениями:

Программа продажи товара в магазине по дням
Программа продажи товара в магазине по дням CLS INPUT “ Кол. рабочих дней: “, n INPUT “ Начальное кол. товара: “, R REM “...

На сайте я хочу сделать калькулятор расчета доставки товара,
Здравствуйте! На сайте я хочу сделать калькулятор расчета доставки товара, но я новичок в php. Для начала мне надо написать формулу расчета...

API Яндекс.Доставки
Добрый день. Пытаюсь создать черновик заказа так как указано в документации ...

2
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
28.06.2018, 16:19
Смотрю все форумы обошли с этой темой и везде тишина. А все почему? Потому что вы даже движок не указали.

PHP
1
$day = $wbsData['limit_delivery_max'];
Здесь точно бред. $day нигде не используется. $wbsData не определена в методе data.

Что конкретно надо сделать можно только гадать, надо вникать проект. Это уже не помощь новичку, а конкретная задача для какого-нибудь фрилансера.
0
0 / 0 / 0
Регистрация: 28.06.2018
Сообщений: 2
29.06.2018, 09:24  [ТС]
Движок сайта, вот я даже немогу ответить на данный вопрос. Почему?
Да потому как:

Хостинг организован через reg.ru

Там же и лежат базы SQL.

Сам сайт и его админ панель написана индивидуально. На чем он написан? С чего переделан?
Могу только сказать, что через сервис https://2ip.ru/cms/ показывает следующее.

CMS Результат
1C:Битрикс признаков использования не найдено
WordPress найдены признаки использования
Drupal признаков использования не найдено
Joomla! признаков использования не найдено
NetCat признаков использования не найдено
UMI.CMS признаков использования не найдено
MODx найдены признаки использования
HostCMS признаков использования не найдено
Amiro CMS признаков использования не найдено
DLE признаков использования не найдено
Insales признаков использования не найдено
Diafan.CMS признаков использования не найдено
TYPO3 признаков использования не найдено
Site Sapiens признаков использования не найдено
OpenCart признаков использования не найдено
CS-Cart признаков использования не найдено
ABO.CMS признаков использования не найдено
Tilda признаков использования не найдено
PHPShop признаков использования не найдено
S.Builder признаков использования не найдено
Magento признаков использования не найдено
SiteEdit признаков использования не найдено
Adlabs.CMS признаков использования не найдено
OpenCMS признаков использования не найдено
LiveStreet признаков использования не найдено
ExpressionEngine признаков использования не найдено
InstantCMS признаков использования не найдено
SiteDNK признаков использования не найдено
Klarnet CMS признаков использования не найдено
Joostina признаков использования не найдено


(К Слову Админ панель вся своя, таких нигде не видел, написана индивидуально.)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.06.2018, 09:24
Помогаю со студенческими работами здесь

Как лучше реализовать фиксацию произвольной суммы доставки (заказ товара)?
С битриксом знаком недавно, прошу совета от опытных зубров. Есть сайт на Управление сайтом редакции Малый бизнес. Есть 3 типа доставки:...

Расчёт стоимости доставки, API Яндекс.Карт
как сделать несколько точек вместо одной неизменяемой? (если есть примеры оставьте ссылку на них пожалуйста!) // Если вы хотите задать...

Вывод картинки на страницу товара по ID товара PHP MYSQL
Добрый день! У меня при выводе картинки из бд ничего не выводится, а мне нужно, чтобы при заходе на определенную страницу (id)...

Фильтр цены товара
Добрый день, форумчане! Решил попробовать сделать себе магаз на СMS OpenCart.... Установил встроенный модуль фильтра по товара, но...

Фильтр по опциям товара
Добрый день столкнулся с проблемой фильтр не выбирает по двоим значениям вот что у меня есть Таблица products product_id -- name ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru