Доброго времени суток!
Возникла необходимость воспользоваться двумя таблицами базы. Но как это реализовать я не могу понять.
У меня есть класс
<?
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
как то так...
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 написал(а):
Вобщем, это называется "горе от ума" (не в обиду тебе будь сказано
).
Что касается моего вопроса... Относительно БД у них нету никаких отличий. Оба сайта - равноправные пользователи этой БД.
Какая разница, какой сайт обращается к БД??? БД находится на сервере, она видит, что приходит запрос от кого-то, у кого есть права на этот запрос. А какой это сайт - уже без разницы совершенно. Поэтому ты можешь смело обращаться с любого из сайтов к этой БД, и будешь получать/писать корректные данные.

Что касается моего вопроса... Относительно БД у них нету никаких отличий. Оба сайта - равноправные пользователи этой БД.
Какая разница, какой сайт обращается к БД??? БД находится на сервере, она видит, что приходит запрос от кого-то, у кого есть права на этот запрос. А какой это сайт - уже без разницы совершенно. Поэтому ты можешь смело обращаться с любого из сайтов к этой БД, и будешь получать/писать корректные данные.
Спустя 5 минут, 19 секунд (29.01.2010 - 15:32) Shurick написал(а):
Всем спасибо! разобрался своими силами....
Указываем параметры подключения
Подключаемся к нужной базе.
Используем необходимую базу
Класс SQL
Указываем параметры подключения
$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) |
Вобщем, это называется "горе от ума" (не в обиду тебе будь сказано ![]() Что касается моего вопроса... Относительно БД у них нету никаких отличий. Оба сайта - равноправные пользователи этой БД. Какая разница, какой сайт обращается к БД??? БД находится на сервере, она видит, что приходит запрос от кого-то, у кого есть права на этот запрос. А какой это сайт - уже без разницы совершенно. Поэтому ты можешь смело обращаться с любого из сайтов к этой БД, и будешь получать/писать корректные данные. |
Спасибо за желание помочь! ты немного не понял смысл всего этого.
Поясню еще раз --- У меня два РАЗНЫХ САЙТА с одинаковым движком, но пользователи (их логины, пароли, адреса, заказы и т.п) СОВМЕСНЫЕ.
Задача состояла в том что бы эти сайты пользовались одной совместной базой (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) |
странно, а чего не помог то? |
Кто - я? Я как раз и пытался помочь, объясняя тебе, что ты сам себя запутал. Что тут всё решается очень просто. Что ты говоришь о единой БД, при подключении из разных скриптов, а код пишешь для подключения к разным БД из одного скрипта...
Ну, удачи тебе!

Спустя 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 написал(а):
Да! все работает. Подтягую всю необходимую инфу с другой базы. Вот к примеру не пришлось заполнять каталог продукции дважды и пользователи совместные.
Самое главное своими поделками не уложить хостера на лопатки.
Самое главное своими поделками не уложить хостера на лопатки.

_____________