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


alum5nium
 Поделиться

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

Как сделать чтобы была два сайта и одна база. Домены разные. Нужно чтобы при добавлении товара на 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();
	}
}

 

 

Спасибо!

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

Присоединяйтесь к обсуждению

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

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

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

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Показать вместо этого как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Нельзя вставлять изображения напрямую. Загрузите или вставьте изображения по URL.

 Поделиться

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

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