Перейти к содержанию

Рекомендуемые сообщения

Всем привет, помогите пожалуйста.

foreach($this->request->post['product'] as $key => $product) {
					$week = $product['week'];
					$id = $product['id'];
					$quantity = $product['quantity'];

					$this->db->query(""
						. " INSERT INTO"
						. " `" . DB_PREFIX . "ar_productday`"
						. " SET"
						. " product_id='". $id ."', quantity='". $quantity ."', week='". $week ."'"
						. " ON DUPLICATE KEY UPDATE product_id='". $id ."'");

				}

Есть такой цикл, проблема в том, что записываются все данные кроме поля $quantity, в БД данная ячейка присутствует.

Не могу понят в чём проблема.

Заранее спасибо за помощь!)

Изменено пользователем owner25

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. У вас проблема с безопасностью!
Сделают inject
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@owner25 , кроме сказанного выше, неправильно собран запрос при ON DUPLICATE KEY UPDATE.

Проверка на дубликат происходит по первичному ключу поля product_id, то есть при повторе по product_id вы хотите обновить product_id на тот же product_id, что не даст никакого эффекта и запись не будет обновлена.

Обновлять как раз нужно все данные, кроме product_id, по которому идет сравнение.

Ну и забегая наперед, собирайте пакетный запрос с одним INSERT'ом, чтобы ускорить обновление.

Пример хорошего подхода:

 

$products = $this->request->post['product'];

while ($products) {
  $insert = array();

  foreach (array_splice($products, 0, 250) as $item) {
    $insert[] = "'" . (int)$item['id'] . "','" . (int)$item['quantity']  . "','" . (int)$item['week'] . "'";
  }

  if ($insert) {
    $this->db->query("INSERT INTO " . DB_PREFIX . "ar_productday (product_id, quantity, week) VALUES (" . implode("),(", $insert) . ") ON DUPLICATE KEY UPDATE quantity = VALUES(quantity), week = VALUES(week)");
  }
}

 

  • +1 3

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, SooR сказал:

@owner25 , кроме сказанного выше, неправильно собран запрос при ON DUPLICATE KEY UPDATE.

Проверка на дубликат происходит по первичному ключу поля product_id, то есть при повторе по product_id вы хотите обновить product_id на тот же product_id, что не даст никакого эффекта и запись не будет обновлена.

Обновлять как раз нужно все данные, кроме product_id, по которому идет сравнение.

Ну и забегая наперед, собирайте пакетный запрос с одним INSERT'ом, чтобы ускорить обновление.

Пример хорошего подхода:

 


$products = $this->request->post['product'];

while ($products) {
  $insert = array();

  foreach (array_splice($products, 0, 250) as $item) {
    $insert[] = "'" . (int)$item['id'] . "','" . (int)$item['quantity']  . "','" . (int)$product['week'] . "'";
  }

  if ($insert) {
    $this->db->query("INSERT INTO " . DB_PREFIX . "ar_productday (product_id, quantity, week) VALUES (" . implode("),(", $insert) . ") ON DUPLICATE KEY UPDATE quantity = VALUES(quantity), week = VALUES(week)");
  }
}

Не работает к сожадению

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
11 часов назад, SooR сказал:

@owner25 , кроме сказанного выше, неправильно собран запрос при ON DUPLICATE KEY UPDATE.

Проверка на дубликат происходит по первичному ключу поля product_id, то есть при повторе по product_id вы хотите обновить product_id на тот же product_id, что не даст никакого эффекта и запись не будет обновлена.

Обновлять как раз нужно все данные, кроме product_id, по которому идет сравнение.

Ну и забегая наперед, собирайте пакетный запрос с одним INSERT'ом, чтобы ускорить обновление.

Пример хорошего подхода:

 


$products = $this->request->post['product'];

while ($products) {
  $insert = array();

  foreach (array_splice($products, 0, 250) as $item) {
    $insert[] = "'" . (int)$item['id'] . "','" . (int)$item['quantity']  . "','" . (int)$product['week'] . "'";
  }

  if ($insert) {
    $this->db->query("INSERT INTO " . DB_PREFIX . "ar_productday (product_id, quantity, week) VALUES (" . implode("),(", $insert) . ") ON DUPLICATE KEY UPDATE quantity = VALUES(quantity), week = VALUES(week)");
  }
}

 

После выполнения запроса 504 ошибка

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
7 часов назад, owner25 сказал:

После выполнения запроса 504 ошибка

У меня ошибка, не $product['week'], а $item['week'], исправил. 

Но также включите отображение ошибок 

 

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(-1);

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От optimlab
      Скачать/Купить дополнение


      OptimBlog
      OptimBlog – блог для Opencart 3
      Описание
      Данный модуль позволяет создать бесконечное множество статей и категорий для них. Например вы можете создавать категории «Новости», «Статьи», «Акции», а также создать полноценный блог для своего магазина с разбитием материалов по категориям.
      Концепция и отличие от других блогов для Опенкарт 3.
      Другие блоги для Opencart 3
      Большинство (как бы не 100%, аналогов не видел) модулей блогов и других аналогичных используют концепцию клонирования программного кода(контроллеров и сопутствующих файлов - Model-View-Controller) категорий товаров и самих товаров, превращая скрипты:
      «категорию товаров» → «категорию статей»
      «товар» → «статья»
      клонирование таблиц Базы Данных аналогично категориям и товарам.
      Такой подход вызывает много конфликтов. Например наименования таблиц при смене одного модуля на другой совпадали, а неопытные пользователи недоумевали от полученных ошибок и не понимали причины. Ошибок и несостыковок на практике было более чем достаточно. Описывать их все тут не имеет смысла..
      OptimBlog – концепция и основная идея
      Категории присваивается тип — Товар/Статья.
      Функционал Статьи расширяется аналогично функционалу Товара.
      Отзывы аналогично категориям разделены на 2 типа — Товар/Статья.
      А также добавлена возможность вывода «Ответа магазина» на «Отзыв» с использованием HTML.
      Данный модуль блога не заменяет родных файлов Opencart 3.
      Сохранена концепция Опенкарт в названиях и определениях, а также сохранён привычный для администратора магазина внешний вид интерфейса.
      Нет конфликтов по SEO URL, так как используется штатный функционал Opencart. Который вы можете расширить приложенными модификаторами.
      Модуль на 90% состоит из файлов модификаторов, которые можно удалить или отключить в любое время.
       
      Функционал и возможности модуля OptimBlog
      Общие для категорий, товаров и статей:
      Заголовок H1
      Краткое описание -
      Выводится в категории и в модулях выводящих товары или статьи. Модификатор для товарных модулей отсутствует.
      Общие для товаров и статей:
      Главная категория -
      Используется для определения хлебных крошек в «URL от базового домена» находящихся в индексе Поисковых Систем. А так же правильной настройки свойства canonical для страниц сайта.
      Рекомендуемые товары и статьи -
      Нет добавления страницы саму на себя.
      Рекомендовать можно в трёх направлениях: двойное, или в одну из сторон.
      Статьи:
      Теги
      Начало и конец публикации
      Автор
      Атрибуты
      Изображения
      Возможности для разработчиков:
      Заложены на будущее некоторые функции и возможности, которые разработчики могут использовать для создания своих модулей. Например: «дополнительные изображения» в настройках категории, можно выводить с помощью слайдера. А «Производителя» использовать для соответствующих привязок и сортировок.
      Модули разработчиков связанные с выводом товаров, можно легко переопределить для Статей. Так как php-код контролеров и моделей практически зеркальный.
      Использовалась верстка с классами Bootstrap 3. Что можно легко использовать для своих шаблонов без лишних заморочек и потерей времени.
       
      Установка OptimBlog
      Установить installer.ocmod.zip.
      Обновить кэш модификаторов.
      Установить optimblog-admin.ocmod.zip.
      Установить optimblog-category.ocmod.zip.
      Установить optimblog-category-theme-default.ocmod.zip или optimblog-category-theme-all.ocmod.zip.
      Установить optimblog-seo_url.ocmod.zip .
      Удалить или отключить модификатор installer.ocmod.zip.
      Обновить кэш модификаторов.
      Зайти в «Группы пользователей» и назначить соответствующие права доступа.
      В выпадающем списке раздела «Модули / Расширения» выберите «Статьи».
      Активируйте модуль OptimBlog для своего магазина (модуль мультимагазинный, аналогично модулей Темы).
      Редактируйте настройки модуля OptimBlog и сохраните.
       
       
       
      Состав модулей и модификаторов семейства OptimCart
      optimblog-admin.ocmod.zip — отвечает за административную часть.
      optimblog-category.ocmod.zip — отвечает за пользовательскую часть.
      optimblog-category-theme-default.ocmod.zip — отвечает за пользовательскую часть шаблона «Стандартная тема». (Для создания модификатора для своего шаблона скопируйте, разархивируйте и отредактируйте данный файл под свой шаблон заменив путь к шаблону в коде модификатора или установите вместо этого optimblog-category-theme-all.ocmod.zip модифицирующий все шаблоны.)
      optimblog-seo_url.ocmod.zip — вносит необходимую правку в catalog/controller/startup/seo_url.php.
      installer.ocmod.zip — вносит разрешения в часть кода, для установки модуля(контроллера) поиска по статьям, находящегося в составе optimblog-category.ocmod.zip.
      breadcrumb-last.ocmod.zip — модификатор убирающий кликабельность последнего пункта хлебных крошек.
      canonical-category.ocmod.zip — модификатор добавляющий материнские категории в канонический URL подкатегории. Продолжение предыдущей версии модификатора: Канонические страницы категорий в Opencart 2.0.x.x - 2.3.x.x (Canonical URL)
      canonical-category-no-page.ocmod.zip — модификатор аналогичный предыдущему, только убирающий канонический URL на страницах листинга(page=n).
      canonical-information.ocmod.zip — модификатор аналогичный canonical-category.ocmod.zip, добавляющий подкатегории в канонический URL статьи, при наличии главной категории в её настройках.
      optimblog-module-bestseller-information.ocmod.zip — модуль «Лучшие статьи».
      optimblog-module-featured-information.ocmod.zip — модуль «Рекомендуемые статьи».
      optimblog-module-latest-information.ocmod.zip — модуль «Новые статьи».
      optimblog-module-category-information.ocmod.zip — модуль «Категории статей».
      optimblog-module-search-information.ocmod.zip - модуль «Поиск статей».
       
       
       
      Информация:
      Демо: http://demo.optimcart.com
      Админка: http://demo.optimcart.com/admin
       
      GitHub: https://github.com/optimlab/optimblog

      Лицензия: GNU General Public License version 3 (GPLv3)
      Добавил optimlab Добавлено 14.06.2018 Категория Блоги, новости, статьи Системные требования Сайт разработчика http://optimlab.ru Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 3.0 ocStore Несовместим OpenCart.Pro, ocShop  
    • От optimlab
      OptimBlog – блог для Opencart 3
      Описание
      Данный модуль позволяет создать бесконечное множество статей и категорий для них. Например вы можете создавать категории «Новости», «Статьи», «Акции», а также создать полноценный блог для своего магазина с разбитием материалов по категориям.
      Концепция и отличие от других блогов для Опенкарт 3.
      Другие блоги для Opencart 3
      Большинство (как бы не 100%, аналогов не видел) модулей блогов и других аналогичных используют концепцию клонирования программного кода(контроллеров и сопутствующих файлов - Model-View-Controller) категорий товаров и самих товаров, превращая скрипты:
      «категорию товаров» → «категорию статей»
      «товар» → «статья»
      клонирование таблиц Базы Данных аналогично категориям и товарам.
      Такой подход вызывает много конфликтов. Например наименования таблиц при смене одного модуля на другой совпадали, а неопытные пользователи недоумевали от полученных ошибок и не понимали причины. Ошибок и несостыковок на практике было более чем достаточно. Описывать их все тут не имеет смысла..
      OptimBlog – концепция и основная идея
      Категории присваивается тип — Товар/Статья.
      Функционал Статьи расширяется аналогично функционалу Товара.
      Отзывы аналогично категориям разделены на 2 типа — Товар/Статья.
      А также добавлена возможность вывода «Ответа магазина» на «Отзыв» с использованием HTML.
      Данный модуль блога не заменяет родных файлов Opencart 3.
      Сохранена концепция Опенкарт в названиях и определениях, а также сохранён привычный для администратора магазина внешний вид интерфейса.
      Нет конфликтов по SEO URL, так как используется штатный функционал Opencart. Который вы можете расширить приложенными модификаторами.
      Модуль на 90% состоит из файлов модификаторов, которые можно удалить или отключить в любое время.
       
      Функционал и возможности модуля OptimBlog
      Общие для категорий, товаров и статей:
      Заголовок H1
      Краткое описание -
      Выводится в категории и в модулях выводящих товары или статьи. Модификатор для товарных модулей отсутствует.
      Общие для товаров и статей:
      Главная категория -
      Используется для определения хлебных крошек в «URL от базового домена» находящихся в индексе Поисковых Систем. А так же правильной настройки свойства canonical для страниц сайта.
      Рекомендуемые товары и статьи -
      Нет добавления страницы саму на себя.
      Рекомендовать можно в трёх направлениях: двойное, или в одну из сторон.
      Статьи:
      Теги
      Начало и конец публикации
      Автор
      Атрибуты
      Изображения
      Возможности для разработчиков:
      Заложены на будущее некоторые функции и возможности, которые разработчики могут использовать для создания своих модулей. Например: «дополнительные изображения» в настройках категории, можно выводить с помощью слайдера. А «Производителя» использовать для соответствующих привязок и сортировок.
      Модули разработчиков связанные с выводом товаров, можно легко переопределить для Статей. Так как php-код контролеров и моделей практически зеркальный.
      Использовалась верстка с классами Bootstrap 3. Что можно легко использовать для своих шаблонов без лишних заморочек и потерей времени.
       
      Установка OptimBlog
      Установить installer.ocmod.zip.
      Обновить кэш модификаторов.
      Установить optimblog-admin.ocmod.zip.
      Установить optimblog-category.ocmod.zip.
      Установить optimblog-category-theme-default.ocmod.zip или optimblog-category-theme-all.ocmod.zip.
      Установить optimblog-seo_url.ocmod.zip .
      Удалить или отключить модификатор installer.ocmod.zip.
      Обновить кэш модификаторов.
      Зайти в «Группы пользователей» и назначить соответствующие права доступа.
      В выпадающем списке раздела «Модули / Расширения» выберите «Статьи».
      Активируйте модуль OptimBlog для своего магазина (модуль мультимагазинный, аналогично модулей Темы).
      Редактируйте настройки модуля OptimBlog и сохраните.
       
       
       
      Состав модулей и модификаторов семейства OptimCart
      optimblog-admin.ocmod.zip — отвечает за административную часть.
      optimblog-category.ocmod.zip — отвечает за пользовательскую часть.
      optimblog-category-theme-default.ocmod.zip — отвечает за пользовательскую часть шаблона «Стандартная тема». (Для создания модификатора для своего шаблона скопируйте, разархивируйте и отредактируйте данный файл под свой шаблон заменив путь к шаблону в коде модификатора или установите вместо этого optimblog-category-theme-all.ocmod.zip модифицирующий все шаблоны.)
      optimblog-seo_url.ocmod.zip — вносит необходимую правку в catalog/controller/startup/seo_url.php.
      installer.ocmod.zip — вносит разрешения в часть кода, для установки модуля(контроллера) поиска по статьям, находящегося в составе optimblog-category.ocmod.zip.
      breadcrumb-last.ocmod.zip — модификатор убирающий кликабельность последнего пункта хлебных крошек.
      canonical-category.ocmod.zip — модификатор добавляющий материнские категории в канонический URL подкатегории. Продолжение предыдущей версии модификатора: Канонические страницы категорий в Opencart 2.0.x.x - 2.3.x.x (Canonical URL)
      canonical-category-no-page.ocmod.zip — модификатор аналогичный предыдущему, только убирающий канонический URL на страницах листинга(page=n).
      canonical-information.ocmod.zip — модификатор аналогичный canonical-category.ocmod.zip, добавляющий подкатегории в канонический URL статьи, при наличии главной категории в её настройках.
      optimblog-module-bestseller-information.ocmod.zip — модуль «Лучшие статьи».
      optimblog-module-featured-information.ocmod.zip — модуль «Рекомендуемые статьи».
      optimblog-module-latest-information.ocmod.zip — модуль «Новые статьи».
      optimblog-module-category-information.ocmod.zip — модуль «Категории статей».
      optimblog-module-search-information.ocmod.zip - модуль «Поиск статей».
       
       
       
      Информация:
      Демо: http://demo.optimcart.com
      Админка: http://demo.optimcart.com/admin
       
      GitHub: https://github.com/optimlab/optimblog

      Лицензия: GNU General Public License version 3 (GPLv3)
    • От Vapebanda
      Перенёс новый сайт на хостинг мог зайти suite/admin после установки бд при переходе на сайт/админ переносит на сайт не могу зайти на страницу админки, кто сталкивался? все конфинги прописаны правильно
    • От Pavel666
      Скачал я значит модуль, открыл контроллер, а там...
       
    • От nikeforce111
      Помогите устранить данную ошибку!!! В вебмастере яндекс при проверке sitemap пишет:
      Неправильный адрес страницы
      https://******/vezuvij-legenda/pechi-vezuvij/vezuvij-legenda/pechi-vezuvij/vezuvij-legenda/pechi-vezuvij/vezuvij-legenda/pechi-vezuvij/vezuvij-legenda/  
      При переходе на данную ссылку, выглядит вот так (прикрепил)
      Где копаться?

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.