Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 28.06.2018
Сообщений: 2

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

28.06.2018, 15:25. Показов 801. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru