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

Записи дублируются в таблицах order_product и order

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

Приветствую.

Заглянул в БД в познавательных целях (все работает ОК, во всяком случае мне так кажется) и заметил, что после оформления заказа в таблицы order_product и order добавляется 2 идентичных поля. Отличаются только индексы и в колонке order_status_id у одного из заказов стоит "0" т.е. несуществующее значение т.к. в таблице order_status первый индекс "1".

В чем подвох?

  • +1 1

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


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

No comments? Так и должно быть? Так не должно быть?

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


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

Все именно так и должно быть, как раз недавно разбирался с данным вопросом, краткий вывод – не стоит забивать себе этим голову!

Если принципиально важно разобраться в вопросе - могу аргументировать! :wink:

  • +1 1

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


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

Все именно так и должно быть, как раз недавно разбирался с данным вопросом, краткий вывод – не стоит забивать себе этим голову! Если принципиально важно разобраться в вопросе - могу аргументировать! :wink:

Спасибо, успокоили. Если не сложно, то не откажусь от краткого пояснения для каких целей создается дубль.

P.S. Хрень какая-то. Отключил 2-ой и 3-ий язык (оставил один) и запись в базу без дубля. Хотя в этих таблицах нет языкового поля. С чего в друг... Сейчас буду искать...

Так... Запись в 4-ой и 9-ой строке соответственно catalogmodelcheckoutorder.php

Дублей нет. Значит где-то 2 раза вызывается функция addOrder класса ModelCheckoutOrder

Ищем. Находим:

catalogcontrollercheckoutconfirm.php один вызов в 327 строке.

Не пойму. Откуда дубль берется?

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

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


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

Ну, если так, то вот цитата из переписки с Русланом Брестом (разработчик QuickCheckout):

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

При стандартном оформлении заказ постепенно собирается, при переключениях и возвратах это фиксируется и записывается в базу, а когда человек доходит до конца - последняя такая запись помечается как завершенный заказ. То есть выбрал один способ доставки, прошёл дальше - есть запись, передумал, вернулся, изменил на самовывоз - ещё запись. Передумал на последнем шаге платить визой и вернулся на предыдущий шаг, чтобы WMZ или QIWI выбрать - ещё одна.

Я думаю этого достаточно для понимания механизма, и еще раз повторюсь - не стоит забивать себе этим голову, это штатный и весьма надежный механизм, который справляется с множеством видов оплаты и доставки!

Удачи! :wink:

  • +1 2

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


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

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

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

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

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

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

Войти

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

Войти

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

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


      Sypex Dumper менеджер
      Sypex Dumper - мощная утилита для создания дампов (бекапов) и восстановления из этих бекапов. Отлично справляется с базами большого размера, которые не может загрузить phpMyAdmin.
      БЕЗОПАСНОСТЬ
      Добавлен файл /system/library/sxd/backup/.htaccess, который запрещает доступ к дампам через URL. Если по какой-то причине, инструкция deny from all не
      может быть выполнена на Вашем хостинге, то Вам следует обязательно переименовать папку с Sypex Dumper. Шаги:
      1. Перейдите /system/library/sxd и переименуйте папку случайным образом
      2. Перейдите /admin/controller/module/sxd.php и поменяйте значение переменной $sxd_folder на новое имя папки
      Например, если путь к новому названию выглядит так /system/library/sxd_8b1 , то $sxd_folder должна иметь значение 'sxd_8b1'
      Эти простые меры безопасности защитят Ваши дампы от брутфорс-атак и в целом повысят безопасность.
      /***************************************************************************\
      | Sypex Dumper version 2.0.10 |
      | © 2003-2011 zapimir zapimir@zapimir.net http://sypex.net/ |
      | © 2005-2011 BINOVATOR info@sypex.net |
      |---------------------------------------------------------------------------|
      | created: 2003.09.02 19:07 modified: 2012.11.14 06:27 |
      |---------------------------------------------------------------------------|
      | Sypex Dumper is released under the terms of the BSD license |
      | http://sypex.net/bsd_license.txt |
      \***************************************************************************/
      P.S. Вдохновлялся и заимствовал код у sv2109 - SQL менеджер SQL Buddy за что ему "Спасибо".
      Добавил cmd Добавлено 07.08.2013 Категория Прочее  
    • От WebDevYV
      Есть скрипт, который на локальной машине работает корректно, но при установке его на сервер в файл product.tpl (cms OpenCart 2.3.0.2, theme Next Default 3)ничего не происходит. Скрипт берет цену из таблицы с учетом id товара. Ошибок код никаких не выводит. Спасибо за помощь.
      <?php $host = 'хост'; $db = 'имя бд'; $user = 'юзер нейм'; $pass = 'пароль'; $charset = 'utf8'; $dsn = "mysql:host=$host;dbname=$db;charset=$charset"; $opt = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]; $pdo = new PDO($dsn, $user, $pass, $opt); $stmt = $pdo->prepare('SELECT price FROM oc_product WHERE product_id = ?'); $stmt->execute([$_GET['id']]); foreach ($stmt as $row) { echo 'price '.$row['price'] . "\n"; } ?>  
    • От sanguinato
      Добрый день, при добавлении заказа  в базу данных значение "currency_code" = "UAH", хотя валюта по умолчанию да и в куках  написано "USD"



    • От sanguinato
      Доброе время суток, подскажите пожалуйста как можно быстрее всего перенести базу данных товаров с webasyst на opencart 2 ? модули может какие то бесплатные есть ? ковырял liveimport не понял как перенести все товары целиком
    • От makeitfast
      Доброго времени суток!
       
      Краткая предыстория проблемы (иногда помогает): недавно над нашим сайтом поработал фрилансер (имя озвучивать наверное не по правилам? а то я бы озвучил), замечу, что это был плохой фрилансер. 
      Необходимо было перенести рабочий интернет-магазин на более новую версию опенкарта, использовалась непосредственно тема acceptus (kuler themes).
      Сперва сайт был перенесён на хостинг фрилансера, затем на поддомен нашего хостинга, затем - на основной домен.
      Уже при проверке работоспособности сайта на поддомене, было выявлено, что письма о новых заказах не приходят, но фрилансер сказал, что эта проблема будет устранена при переносе на основной домен и что это зависит от хостинга и тп. Тогда ещё я не заметил, что заказы не появляются также и в админке. Но зато заметил, что не открываются некоторые модули, на что было сказано что это либо модули не подходят для новой версии прошивки , либо та же самая проблема с хостингом .
       
      Итак, проблема: 
      если сделать заказ в магазине , он вообще не появяется в админке (ни в каких статусах заказа) , не появляется он и в БД.
      чуть позже мы выяснили , что фрилансер изменил нашу предыдущую рабочую базу данных на тестовую. тоесть сайт теперь взаимодействует с "тестовой" (по сути бекап) , а не с предыдущей основной БД. 
       
      сделав заказ непосредственно в "тестовой" БД, он появился в админке. это было уже хорошо. тоесть сайт худо-бедно работает с БД, но не отображает заказы в ней, сделанные извне. 
      решили, что дело в форме заказа. 
      используется simplecheckout, в котором фрилансер тоже что-то менял.
       
      затем мы обнаружии следующее: во многих файлах и таблицах БД, после переноса сайта с хостинга фрилансера на наш основной домен, всё равно осталось имя ЕГО САЙТА, вместо нашего. 
      изменив это, получили глюк: Notice: unserialize() [function.unserialize]: Error at offset 298 of 359 bytes in /alex/index.php on line 63
       
      привожу функцию из индекс.пхп : 
       
      почему ЭТО - я не знаю(
       
      на этом пока всё , что я могу вам сообщить ! задавайте вопросы  и пишите ответы)
       
      заранее спасибо всем откликнувшимся!!
  • Последние посетители   0 пользователей онлайн

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

×

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

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