YuZi

ВОПРОС: Как подключить один магазин к разным БД Mysql ?

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

YuZi    7

В CMS Opencart подключение к БД MySQL проходит через файл config.php где и указываются данные к ОДНОЙ базе MySQL.

Как подключить ДВЕ базы MySQL ?

Например:

Есть два магазина на движке opencart 1.5.3.1, каждый из них использует свою БД MySQL и свой файл config.php

Нужно сделать что бы из второго магазина было подключение к БД первого магазина, а именно таблицы 'customer', тоесть информация о покупателях общая для двух магазинов.

При этом удалены все возможные обращения к БД из личного кабинета покупателя, дабы избежать обращение к разным БД.

Вариант с вложенными магазинами (что предусмотренно в движке OpenCart) не подходит из-за недостатка в качественной SEO оптимизации магазина и использование только одного домена.

Я отдаю себе отчёт что нагрузка на сервер увеличится...

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

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


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

а не проще будет периодически делать импорт экспорт этих таблиц?

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


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

а не проще будет периодически делать импорт экспорт этих таблиц?

Я рассматривал этот вариант, он конечно проще в реализации, но мне нужна динамическая связь двух магазинов которая может меняться ежеминутно. Так пришел к выводу что проще будет сделать запрос к одной таблице БД

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


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

В CMS Opencart подключение к БД MySQL проходит через файл config.php где и указываются данные к ОДНОЙ базе MySQL.

Как подключить ДВЕ базы MySQL ?

index.php

// Database
$db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$registry->set('db', $db);
// Database 2

$db2 = new DB(DB_DRIVER2, DB_HOSTNAME2, DB_USERNAME2, DB_PASSWORD2, DB_DATABASE2);

$registry->set('db2', $db2);

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


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

Добавил в файл index.php два подключения к БД:

// Database
$db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$registry->set('db', $db);


// Database 2
$db2 = new DB(DB_DRIVER2, DB_HOSTNAME2, DB_USERNAME2, DB_PASSWORD2, DB_DATABASE2);
$registry->set('db2', $db2);

а также прописал в файле config.php данные к подключению двух БД:

// DB
define('DB_DRIVER', 'mysql');
define('DB_HOSTNAME', 'localhost');
define('DB_USERNAME', '111);
define('DB_PASSWORD', '1234567890');
define('DB_DATABASE', '111');
define('DB_PREFIX', '111_');


// DB2
define('DB_DRIVER2', 'mysql');
define('DB_HOSTNAME2', 'localhost');
define('DB_USERNAME2', '222');
define('DB_PASSWORD2', '1234567890');
define('DB_DATABASE2', '222');
define('DB_PREFIX2', '222_');

теперь Магазин Умер... Не выдает никаких ошибок, только чистый белый фон,

Что я не так сделал или что-то где-то надо дописать еще?

П.С. Использую Opencart 1.5.3.1

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


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

Нужно сделать что бы из второго магазина было подключение к БД первого магазина, а именно таблицы 'customer', тоесть информация о покупателях общая для двух магазинов.

Есть рабочие архитектурные решения много ИМ на одной базе, а один магазин к 2 базам что-то Вы перемудриваете :) имхо

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


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

Настройте репликацию между площадками, как вариант

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


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

Либо оба ИМ к 1С Бухгалтериии и обрабатывать там.

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


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

Есть рабочие архитектурные решения много ИМ на одной базе, а один магазин к 2 базам что-то Вы перемудриваете :) имхо

Приведите пожалуйста пример таких архитектурных решений, или имеется ввиду одна БД с разными префиксами для каждого ИМ ?

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


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

Настройте репликацию между площадками, как вариант

из всего выше сказанного я знаю ДВА СЛОВА: "настройте" и "вариант" =))

Что такое репликация между площадками?

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


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

Либо оба ИМ к 1С Бухгалтериии и обрабатывать там.

Очень дорого получается если учесть все моменты:

- покупка самой платформы 1С

- установканастройка платформы

- программинг конфигураций под конкретные запросы

- обновленияподдержка ПО

- и т.д.

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


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

из всего выше сказанного я знаю ДВА СЛОВА: "настройте" и "вариант" =))

Что такое репликация между площадками?

Тогда забудьте, вам это не подойдет.

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


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

теперь Магазин Умер... Не выдает никаких ошибок, только чистый белый фон,

Что я не так сделал или что-то где-то надо дописать еще?

П.С. Использую Opencart 1.5.3.1

у меня этот вариант работает. разбирайся в этом направлении

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


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

у меня этот вариант работает. разбирайся в этом направлении

Вы правы, все проверил - все работает, вот только подключается только одна БД, та которая стоит последней в списке.

если вот так:

// Database
$db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$registry->set('db', $db);

// Database 2
$db2 = new DB(DB_DRIVER2, DB_HOSTNAME2, DB_USERNAME2, DB_PASSWORD2, DB_DATABASE2);
$registry->set('db2', $db2);
то идет подключение всего магазина к базе БД2

а если вот так:

// Database 2
$db2 = new DB(DB_DRIVER2, DB_HOSTNAME2, DB_USERNAME2, DB_PASSWORD2, DB_DATABASE2);
$registry->set('db2', $db2);
// Database
$db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$registry->set('db', $db);
То к первой...

В итоге одна база задействуется...

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


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

если еще интересно... мало ли))) 

чтобы это исправить, нужно в /system/database/mysql.php

в функции дописать mysql_connect(..., $password, TRUE);

 

и тогда делайте сколько угодно подключений.

 

---

Выпрямляем OpenCart...

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


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

у меня этот вариант работает. разбирайся в этом направлении

У меня он тоже не убивает сайт: возможно проблема хостинга или сервера,

Но никаких результатов не дает: товары из второй базы не берутся

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


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

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

 

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

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

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


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

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

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

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

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

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

Войти

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

Войти


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

    • От a1exnet
      Ребята, привет,
      У меня в PhpMyAdmin таблицы выходят все очень разбросано, накладываясь друг на друга и связи не отображаются.
      Есть у кого-нибудь диаграмма и схема базы данных MySQL Opencart 2.1.x?
      Как тут:
       
    • От sv2109




      Название: SQL менеджер SQL Buddy
      Добавил: sv2109
      Добавлен: 26 июл 2013
      Категория: Обмен данными
      Метод активации: Без активацииСайт разработчика: sv2109.com
      Ioncube Loader: Нет


      SQL Buddy это простой sql менеджер. Намного проще но и намного легче phpMyAdmin-a
      С помощью него можно:
      создавать базы данных
      создавать, редактировать, удалять таблицы
      изменять структуру таблиц
      изменять данные в таблицах
      выполнять sql запросы
      делать импорт и экспорт таблиц
      итд

      + мульти язычный интерфейс (поддерживает 47 языков включая русский и украинский)
      Перед использованием настоятельно рекомендую сделать копию базы данных!
      Работает на :
      - ocstore 1.5.4.1
      - opencart 1.5.5.1
      но скорее всего будет работать на всех 1.5.x версиях движка
      Возможно вас заинтересуют другие модули автора

      Нажмите здесь, чтобы скачать файл
    • От sv2109
      SQL Buddy это простой sql менеджер. Намного проще но и намного легче phpMyAdmin-a
      С помощью него можно:
      создавать базы данных
      создавать, редактировать, удалять таблицы
      изменять структуру таблиц
      изменять данные в таблицах
      выполнять sql запросы
      делать импорт и экспорт таблиц
      итд

      + мульти язычный интерфейс (поддерживает 47 языков включая русский и украинский)
      Перед использованием настоятельно рекомендую сделать копию базы данных!
      Работает на :
      - ocstore 1.5.4.1
      - opencart 1.5.5.1
      но скорее всего будет работать на всех 1.5.x версиях движка
      Возможно вас заинтересуют другие модули автора
    • От grechanyuk
      Доброго времени суток всем! И вновь у меня проблемы с запросами к БД :(  opencart 2.3.0.2
      В общем: есть регистрация Юрлиц и Физлиц как продавцов, в их личных кабинетах они могу менять информацию о себе, но т.к. это две разные категории, то нужно было сделать разделение. У одних - свои поля, у других свои. Решено было внести в таблицу столбец "fizic". При регистрации, если это было Юр лицо ставится "0", если физ лицо ставится "1". Далее хотелось на основании этих цифр прописать в PHP контрольке какой языковой файл выводить:
       
      $query = $this->db->query("SELECT fizic FROM `" . DB_PREFIX . "vendors` WHERE user_id = '" . (int)$user_id . "'")->row['fizic']; if ($query = '1') { $this->load->language('catalog/vdi_vendor_profilefiz'); } else { $this->load->language('catalog/vdi_vendor_profile'); } Но момент в том, что теперь он всегда выводит только первый языковой файл, якобы $query постоянно равна 1.
      Друзья, кто ткнет носом?)
       
      Заранее благодарю
    • От grechanyuk
      Всем привет! Надеюсь мне сможет кто-нибудь помочь :)
      имеется OpenCart 2.3.0.2, после небольших переделок "кредита магазина" из него перестала вычитаться стоимость доставки. 
      Ну не беда, подумал я... добавил в код несколько строк:
      class ModelExtensionTotalSubTotal extends Model { public function confirm($order_info, $order_total) { $this->load->language('extension/total/credit'); $shipping_cost = $this->db->query("SELECT value FROM " . DB_PREFIX . "order_total WHERE code = 'shipping' AND order_id = '" . (int)$order_info['order_id'] . "'"); if ($order_info['customer_id']) { $order_total['value'] = (($order_total['value'] * -1) - $shipping_cost ); $debug_info = print_r($order_info, true); $debug_total = print_r($order_total, true); //mail("xo***o@ya***x.ru", "debug order", 'info: '.$debug_info.' totla: '.$debug_total); if($order_info['total'] > 0) { $order_total['value'] = (($order_total['value'] * -1) - $order_info['total']) * -1; } $this->db->query("INSERT INTO " . DB_PREFIX . "customer_transaction SET customer_id = '" . (int)$order_info['customer_id'] . "', order_id = '" . (int)$order_info['order_id'] . "', description = '" . $this->db->escape(sprintf($this->language->get('text_order_id'), (int)$order_info['order_id'])) . "', amount = '" . (float)$order_total['value'] . "', date_added = NOW()"); } } При выполнении этого кода вместо стоимости доставки он вычитает просто 1.
      Как я понимаю, MySQL не находит строку. Что в запросе не так? Помогите, пожалуйста :)
  • Последние посетители   0 пользователей онлайн

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