[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Использование двух таблиц
Shurick
Использование двух таблиц
Доброго времени суток!
Возникла необходимость воспользоваться двумя таблицами базы. Но как это реализовать я не могу понять.
У меня есть класс


<?

class
sql_db
{
var $db_connect_id;
var $query_result;
var $row = array();
var $rowset = array();
var $num_queries = 0;

//
// Constructor
//


function sql_db($sqlserver, $sqluser, $sqlpassword, $database) {

$this->user = $sqluser;
$this->password = $sqlpassword;
$this->server = $sqlserver;
$this->dbname = $database;

$this->db_connect_id = mysql_connect($this->server, $this->user, $this->password)
or die("MySQL connect Error");


if($this->db_connect_id) {
if($database != "")
{
$this->dbname = $database;
$dbselect = @mysql_select_db($this->dbname)
or die("MySQL select DB Error");
if(!$dbselect)
{
@mysql_close($this->db_connect_id);
$this->db_connect_id = $dbselect;
}
}

mysql_query("set names cp1251", $this->db_connect_id);
return $this->db_connect_id;
}
else
{
return false;
}
}


...


и запрос к нему


$db = new sql_db($dbhost, $dbuname, $dbpass, $dbname);
$db1 = new sql_db($dbhost1, $dbuname1, $dbpass1, $dbname1);


скрипт подключается только к одной из таблиц.

Помогиде разобраться!



Спустя 9 минут, 27 секунд (29.01.2010 - 13:26) sergeiss написал(а):
Небольшое примечание насчет терминологии: судя по тексту, ты пытаешься подключиться к разным базам данных (пусть даже они и с одного сервера)! Но говоришь "воспользоваться двумя таблицами базы".

И что означает у тебя фраза "скрипт подключается только к одной из таблиц"? Как это было проверено?

Спустя 6 минут, 57 секунд (29.01.2010 - 13:33) Shurick написал(а):
да, ты прав - задача использоваться разные таблицы


запросы:

$result=$db->sql_query("select `id`,`title` from `shop_catalog` order by `branch`");
while ($res=$db->sql_fetchassoc($result))$arrcat[$res[id]]=$res[title];

и

$result=$db1->sql_query("select `id`,`title` from `shop_catalog` order by `branch`");
while ($res=$db1->sql_fetchassoc($result))$arrcat[$res[id]]=$res[title];


Выводят одно и тоже

и если пытаюсь использовать два запроса


$db = new sql_db($dbhost, $dbuname, $dbpass, $dbname);
$db1 = new sql_db($dbhost1, $dbuname1, $dbpass1, $dbname1);


то подключится удается по нижнему запросу. бызы данных индетичны.

Пытаюсь разместить два сайта на одном хостинге. Хотелось бы создать базу с общими таблицами - зарегистрированные пользователи, заказы и т.п.

Спустя 7 минут, 48 секунд (29.01.2010 - 13:40) sergeiss написал(а):
Цитата (Shurick @ 29.01.2010 - 14:33)
базы данных индетичны.

Пытаюсь разместить два сайта на одном хостинге. Хотелось бы создать базу с общими таблицами

Нет, ты все-таки определись! Если БД "идентичны" (но разные) - это одно дело. Если это одна и та же БД, то тогда зачем делать 2 разных подключения к ней в пределах одного скрипта

Цитата (Shurick @ 29.01.2010 - 14:33)
да, ты прав - задача использоваться разные таблицы

А в запросах одна и та же таблица...

То есть, еще раз повторю: сформулируй задачу еще более точно.


Спустя 5 минут, 36 секунд (29.01.2010 - 13:46) Shurick написал(а):
существует две базы и два сайта. находятся они на одном хостинге.

site1 использует базу BASE1
site2 использует базу BASE2

в базе BASE1 есть таблица пользователей.
Задача использовать на site2 таблицу пользователей с базы BASE1

как то так...

Спустя 8 минут, 9 секунд (29.01.2010 - 13:54) sergeiss написал(а):
Shurick - а теперь назови хотя бы одно, хотя бы мизерное отличие сайта1 от сайта2, по отношению к БД того сервера, где они находятся.

Спустя 8 минут, 19 секунд (29.01.2010 - 14:03) Shurick написал(а):
разное наполнение. общее у них только таблица пользователей

Спустя 1 час, 24 минуты, 31 секунда (29.01.2010 - 15:27) sergeiss написал(а):
Вобщем, это называется "горе от ума" (не в обиду тебе будь сказано smile.gif).

Что касается моего вопроса... Относительно БД у них нету никаких отличий. Оба сайта - равноправные пользователи этой БД.

Какая разница, какой сайт обращается к БД??? БД находится на сервере, она видит, что приходит запрос от кого-то, у кого есть права на этот запрос. А какой это сайт - уже без разницы совершенно. Поэтому ты можешь смело обращаться с любого из сайтов к этой БД, и будешь получать/писать корректные данные.


Спустя 5 минут, 19 секунд (29.01.2010 - 15:32) Shurick написал(а):
Всем спасибо! разобрался своими силами....

Указываем параметры подключения

$dbhost="localhost"; // хост БД
$dbname="site1"; // имя БД
$dbuname="root"; // имя пользователя БД
$dbpass=""; // пароль пользователя БД
$prefix=""; // префикс таблиц БД

$dbhost1="localhost"; // хост БД
$dbname1="site2"; // имя БД
$dbuname1="root"; // имя пользователя БД
$dbpass1=""; // пароль пользователя БД
$prefix1="shop"; // префикс таблиц БД


Подключаемся к нужной базе.

require_once(ROOT_DIR."common/class/mysql/mysql.php");

$db = new sql_db;
$db->Database = $dbname;
$db->Host = $dbhost;
$db->User = $dbuname;
$db->Password = $dbpass;
$db1 = new sql_db;
$db1->Database = $dbname1;
$db1->Host = $dbhost1;
$db1->User = $dbuname1;
$db1->Password = $dbpass1;


Используем необходимую базу


$result=[b]$db[/b]->sql_query("select `id`,`title` from `shop_catalog` order by `branch`");
while ($res=$db->sql_fetchassoc($result))$arrcat[$res[id]]=$res[title];

или

$result=$db1->sql_query("select `id`,`title` from `shop_catalog` order by `branch`");
while ($res=$db1->sql_fetchassoc($result))$arrcat[$res[id]]=$res[title];


Класс SQL

class sql_db
{
var $db_connect_id;
var $query_result;
var $row = array();
var $rowset = array();
var $num_queries = 0;

var $Host = "";
var $Database = "";
var $User = "";
var $Password = "";


function connect($database = '', $host = '', $user = '', $password = ''){

if ('' == $database) $database = $this->Database;
if ('' == $host) $host = $this->Host;
if ('' == $user) $user = $this->User;
if ('' == $password) $password = $this->Password;

$this->host = $host;
$this->database = $database;
$this->user = $user;
$this->password = $password;

$this->db_connect_id = mysql_connect($this->host, $this->user, $this->password)
or die("MySQL connect Error");


if($this->db_connect_id) {
if($database != "")
{
$this->database = $database;
$dbselect = @mysql_select_db($this->database)
or die("MySQL select DB Error");
if(!$dbselect)
{
@mysql_close($this->db_connect_id);
$this->db_connect_id = $dbselect;
}
}

mysql_query("set names cp1251", $this->db_connect_id);
return $this->db_connect_id;
}
else
{
return false;
}
}


function sql_query($query = "") {

unset($this->query_result);

if ('' == $query ) return FALSE;
if (!$this->connect()) return FALSE;

if($query != "") {
$this->query_result = @mysql_query($query, $this->db_connect_id);
}
if($this->query_result)
{
unset($this->row[$this->query_result]);
unset($this->rowset[$this->query_result]);
return $this->query_result;
}
else return false;
}


Спустя 4 минуты, 13 секунд (29.01.2010 - 15:37) Shurick написал(а):
Цитата (sergeiss @ 29.01.2010 - 12:27)
Вобщем, это называется "горе от ума" (не в обиду тебе будь сказано smile.gif).

Что касается моего вопроса... Относительно БД у них нету никаких отличий. Оба сайта - равноправные пользователи этой БД.

Какая разница, какой сайт обращается к БД??? БД находится на сервере, она видит, что приходит запрос от кого-то, у кого есть права на этот запрос. А какой это сайт - уже без разницы совершенно. Поэтому ты можешь смело обращаться с любого из сайтов к этой БД, и будешь получать/писать корректные данные.

Спасибо за желание помочь! ты немного не понял смысл всего этого.

Поясню еще раз --- У меня два РАЗНЫХ САЙТА с одинаковым движком, но пользователи (их логины, пароли, адреса, заказы и т.п) СОВМЕСНЫЕ.

Задача состояла в том что бы эти сайты пользовались одной совместной базой (USER). тесть получается всего 3 базы

Форум http://24seo.ru/ и phpforum.ru разные а пользователи совместные. если так будет доступней.

Спустя 1 минута, 40 секунд (29.01.2010 - 15:38) sergeiss написал(а):
Именно так я и понял...

Спустя 1 минута, 50 секунд (29.01.2010 - 15:40) Shurick написал(а):
странно, а чего не помог то?

Спустя 29 минут, 3 секунды (29.01.2010 - 16:09) sergeiss написал(а):
Цитата (Shurick @ 29.01.2010 - 16:40)
странно, а чего не помог то?

Кто - я? Я как раз и пытался помочь, объясняя тебе, что ты сам себя запутал. Что тут всё решается очень просто. Что ты говоришь о единой БД, при подключении из разных скриптов, а код пишешь для подключения к разным БД из одного скрипта...

Ну, удачи тебе! smile.gif Как хочешь, так и делай.

Спустя 2 часа, 26 минут, 34 секунды (29.01.2010 - 18:36) Shurick написал(а):
sergeiss! Реально спасибо за помощь! Я действительно не верно сформулировал свою проблему.

То что я там понаписал прально то хоть, тормозить работу сайта не будет?

Спустя 3 часа, 56 минут, 19 секунд (29.01.2010 - 22:32) sergeiss написал(а):
Так я не понял... В итоге ты решил поставленную перед собой задачу или не решил?

Спустя 1 час, 21 минута, 48 секунд (29.01.2010 - 23:54) Shurick написал(а):
Да! все работает. Подтягую всю необходимую инфу с другой базы. Вот к примеру не пришлось заполнять каталог продукции дважды и пользователи совместные.

Самое главное своими поделками не уложить хостера на лопатки. biggrin.gif



_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.