COVID2019 и это вот все. Друзья, вся эта история начинает плохо пахнет. Мойте руки, не ходите в люди. Отложите все плановые покупки и положите в носок заначку. Заприте ваших родителей, бабушек-дедушек на даче. Лучше перебдеть чем недобдеть. Берегите себя!

Два сайта одна база


alum5nium

Recommended Posts

Как сделать чтобы была два сайта и одна база. Домены разные. Нужно чтобы при добавлении товара на site1.ua товары появлялись на site2.ua.

 

Заранее спасибо!

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

17 часов назад, BuslikDrev сказал:

Пробовали хотя бы на одном хостинге прописать?

Да пробовал. Но либо стирает базу ( если база на двоих). Либо не чего не происходит!

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

1 час назад, alum5nium сказал:

Да пробовал. Но либо стирает базу ( если база на двоих). Либо не чего не происходит!

Сайты разные (шаблон, модули)?
Если они разные и нужно только товары, тогда нужна 1 БД, с разными префиксами и только для товара в коде прописать общий префикс вместо DB_PREFIX для второго сайта.
Возможно есть и другой вариант.

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

В 24.12.2018 at 15:08, BuslikDrev сказал:

Сайты разные (шаблон, модули)?
Если они разные и нужно только товары, тогда нужна 1 БД, с разными префиксами и только для товара в коде прописать общий префикс вместо DB_PREFIX для второго сайта.
Возможно есть и другой вариант.

Да всё разное. И домены и сайты, шаблон правда будет такой же как на первом сайте!

То есть получается скачивается база с первого сайта и добаляется во второй только префикс другой? Просто не пойму откуда она будет брать товары если я её скачаю и добавлю базу во второй сайт. Короче как я понимаю не справлюсь я с этим задание! Нужен исполнитель!

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

45 минут назад, BuslikDrev сказал:

Второй способ, на счёт безопасно ли прописывать данные от БД в нём я не знаю.
Нужно сделать подключение к двум БД и сделать условие, если идёт запись в таблицы товара, то записываем в другую БД.

В моём случае префиксы, имя пользователя и пароль одинаковые в двух БД. Оба сайта и БД на одном хостинге.

Данный файл обрабатывает все запросы.
system\library\db\mysqli.php

  Скрыть содержимое


<?php
// *	@copyright	OPENCART.PRO 2011 - 2015.
// *	@forum	http://forum.opencart.pro
// *	@source		See SOURCE.txt for source and other copyright.
// *	@license	GNU General Public License version 3; see LICENSE.txt

namespace DB;
final class MySQLi {
	private $link;
	private $link2;

	public function __construct($hostname, $username, $password, $database, $port = '3306') {
		$this->link = new \mysqli($hostname, $username, $password, $database, $port);

		if ($this->link->connect_error) {
			trigger_error('Error: Could not make a database link (' . $this->link->connect_errno . ') ' . $this->link->connect_error);
			exit();
		}

		$this->link->set_charset("utf8");
		$this->link->query("SET SQL_MODE = ''");

		if (property_exists($this, 'link')) {
			$this->link->query("SET SESSION group_concat_max_len = 65535");
		} else { 
			$this->connection->query("SET SESSION group_concat_max_len = 65535");
		}
		
		// значения от второй БД адрес, имя пользователя, пароль, имя БД, порт
		$this->link2 = new \mysqli($hostname, $username, $password, 'oc23', $port);

		if ($this->link2->connect_error) {
			trigger_error('Error: Could not make a database link (' . $this->link2->connect_errno . ') ' . $this->link2->connect_error);
			exit();
		}

		$this->link2->set_charset("utf8");
		$this->link2->query("SET SQL_MODE = ''");

		if (property_exists($this, 'link2')) {
			$this->link2->query("SET SESSION group_concat_max_len = 65535");
		} else { 
			$this->connection->query("SET SESSION group_concat_max_len = 65535");
		}
			
	}

	public function query($sql) {
		//$sql = str_replace('oc_product', 'oc2_product', $sql);
        // условие выборки
		if (stristr($sql, 'oc_product ') || stristr($sql, 'oc_product_description ')) {
			$query = $this->link2->query($sql);
		} else {
			$query = $this->link->query($sql);
		}

		if (!$this->link2->errno) {
			if ($query instanceof \mysqli_result) {
				$data = array();

				while ($row = $query->fetch_assoc()) {
					$data[] = $row;
				}

				$result = new \stdClass();
				$result->num_rows = $query->num_rows;
				$result->row = isset($data[0]) ? $data[0] : array();
				$result->rows = $data;

				$query->close();

				return $result;
			} else {
				return true;
			}
		} else {
			trigger_error('Error: ' . $this->link2->error  . '<br />Error No: ' . $this->link2->errno . '<br />' . $sql);
		}

		if (!$this->link->errno) {
			if ($query instanceof \mysqli_result) {
				$data = array();

				while ($row = $query->fetch_assoc()) {
					$data[] = $row;
				}

				$result = new \stdClass();
				$result->num_rows = $query->num_rows;
				$result->row = isset($data[0]) ? $data[0] : array();
				$result->rows = $data;

				$query->close();

				return $result;
			} else {
				return true;
			}
		} else {
			trigger_error('Error: ' . $this->link->error  . '<br />Error No: ' . $this->link->errno . '<br />' . $sql);
		}
	}

	public function escape($value) {
		return $this->link->real_escape_string($value);
	}

	public function countAffected() {
		return $this->link->affected_rows;
	}

	public function getLastId() {
		return $this->link->insert_id;
	}

	public function __destruct() {
		$this->link->close();
	}
}

 

 

Спасибо!

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу