Автор Тема: Два коннекта одновременно  (Прочитано 15583 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Два коннекта одновременно
« Ответ #30 : 04 Сентября 2002, 23:53:29 »
Доктор
опять флеймим?
с уважением,
магистр белой магии.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Два коннекта одновременно
« Ответ #31 : 04 Сентября 2002, 23:55:51 »
Доктор
Повидаешь с мое людей которые путают таблцы с базами и серверами - так же будешь придираться.
А вообще, это все фигня по сравнению с неправильным использованием ООП. Вот тут я крупно лажанулся.
Спасибо Антохе - направил на путь истинный.

Оффлайн Croaker

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 927
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alex-files.ru
Два коннекта одновременно
« Ответ #32 : 05 Сентября 2002, 15:49:18 »
Вот сижу я тут с выдраным (после стоматолога) зубом, читаю послания тов. RomikChef`а... ладно, ближе к делу.

Так как данные из одной базы (я все-таки наставиваю на том, что речь шла о базах, а не о серверах, а меня, кстати в этом поддержали) чуть-чуть видоизменившись перекочевали в другую, возьмем обычную ситуацию - работу с одной (постоянной базой)

вот переделанный класс:


	
class 
MysqlClass extends VarsClass {
	
	

	
	
var 
$db_host = \'localhost\';
	
	

	
	
var $db_name = "diktator";
	
	
var $db_login = "diktator";
	
	
var $db_password = "*******";
	
	
var $db_sql = "";
	
	
var $db_result = "";
	
	
var $con_id = "";
	
	

	
	
function db_connect()
	
	
	
{
	
	
	
	
$this->con_id = mysql_connect($this->host, $this->db_login, $this->db_password);
	
	
	
	
mysql_select_db($this->db_name, $this->con_id);
	
	
	
}
	
	
	

	
	
function db_query() 
	
	
	
{
	
	
	
	
$this->db_result = mysql_query($this->db_sql, $this->con_id) or die($this->err_msg());
	
	
	
}
	
	
	

	
	
function num_rows($this->db_result)
	
	
	
{
	
	
	
	
$numR = mysql_num_rows($this->db_result);
	
	
	
	
return $numR;
	
	
	
}
	
	
	

	
	
function num_fields($this->db_result)
	
	
	
{
	
	
	
	
$numF = mysql_num_fields($this->db_result);
	
	
	
	
return $numF;
	
	
	
}
	
	
	

	
	
function db_close()
	
	
	
{
	
	
	
	
mysql_close($this->con_id);
	
	
	
}
	
	

	
	
function show_sql()
	
	
	
{
	
	
	
	
print $this->db_sql;
	
	
	
}
	
	

	
	
function err_msg()
	
	
	
{
	
	
	
	
print mysql_error()."\\n";
	
	
	
	
$this->show_sql()."\\n";
	
	
	
}
	
}



RomikChef - что здесь не так?

P.S. Могут быть синтаксические ошибки, потому как еще не запускал - не в этом суть.
Не все коту матрица.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Два коннекта одновременно
« Ответ #33 : 05 Сентября 2002, 17:27:12 »
Самое главное, что не так - это конкретность класса, его заточенность под одну базу данных.
Все-таки, надо сделать так, как антоха написал.
НЕ путать КЛАСС и ОБЪЕКТ
Убрать коннект из класса.
класс реализует абстрактные процедуры.
объект - работу с конкретной базой.

класс я описывать не буду, я опишу инициализацию объектов
класс у тебя лежит в файле с другими классами, которые ты инклюдишь. Он у тебя хостингонезависимый, вообще ни от чего не зависит.
В другом инклюде, в котором настройки к конкретному хостингу, ты пишешь такие строчки.
$obj_asm = new MysqlClass;
$obj_dkt = new MysqlClass;

$obj_asm->connect(db1_host,db1_user,db1_pass,db1_db);
$obj_dkt->connect(db2_host,db2_user,db2_pass,db2_db);

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Два коннекта одновременно
« Ответ #34 : 05 Сентября 2002, 17:33:05 »
по поводу баз данных.
теперь понятно.
(Доктор, у него именно один сервер и две базы. Так что, мы оба были неправы. но если бы я не придирался, пытаясь точно установить истину, то так бы и продолжали бы ошибаться)

Да, идея оригинальная.
коннектиться к одному серверу двумя коннектами.
причем, если у юзера одной нет прав на другую, то это единственно подходящий вариант.

Я-то делал по-другому, просто указывал в запросе нужную базу
select t1.*,t2.id from db1.table1 t1,db2.table1 t2 ...
но обе эти базы крутятся под одним юзером.

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

Оффлайн Доктор

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 487
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Два коннекта одновременно
« Ответ #35 : 05 Сентября 2002, 18:32:03 »
[OFF]
Dm
Цитировать
Доктор
опять флеймим?

Что, серьезно что ли? Флейм в этой теме, вообще-то, начался задолго до меня, а вот "заметил" ты меня только. К чему бы это? Нетерпится свою звезду шерифа в нос кому-нибудь сунуть, кто еще не видел?

RomikChef
То, что у него один сервер было видно сразу из его кода на 1-й странице. А если придираться к формулировкам, то мне не нравится:
Цитировать
Убрать коннект из класса.

[/OFF]

А вообще, создавать 2 коннекта, действительно, иногда может быть удобно...

Оффлайн Croaker

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 927
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alex-files.ru
Два коннекта одновременно
« Ответ #36 : 05 Сентября 2002, 18:37:59 »
Цитировать

$obj_asm = new MysqlClass;
$obj_dkt = new MysqlClass;

$obj_asm->connect(db1_host,db1_user,db1_pass,db1_db);
$obj_dkt->connect(db2_host,db2_user,db2_pass,db2_db);


собственно я думал об этом, но вроде PHP ругался, когда один класс объявляется два раза.


Цитировать
$obj_asm->connect(db1_host,db1_user,db1_pass,db1_db);


Подключать файл только с коннектами мне не нравится, и постоянно писать
connect(db1_host,db1_user,db1_pass,db1_db);
тоже лень, поэтому я вписываю весь коннект в класс. Ты часто видел работу с несколькими базами? Я  - нет.



юзера разные, ты прав.



Цитировать
для абстрактности удобно - а вдруг вторая база уедет на другой сервер?


я все писал под конкретные нужды и для разового использования. Тут уж либо абстрактность, либо удобство конкретного использования.



если ето заработает:
Цитировать

$obj_asm = new MysqlClass;
$obj_dkt = new MysqlClass;

$obj_asm->connect(db1_host,db1_user,db1_pass,db1_db);
$obj_dkt->connect(db2_host,db2_user,db2_pass,db2_db);


то базар мы здесь развели незря.
Не все коту матрица.

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
Два коннекта одновременно
« Ответ #37 : 05 Сентября 2002, 19:10:55 »
RomikChef
Цитировать
Ты особо на этого гения программирования внимания не обращай, он по жизни такой. Я уже несколько раз просил его привести примеры на свои работы, свои скриптики выложить, так сказать, показать народу как правильно кодить надо - так ведь молчит, ныкается, не хочет знаниями делится, уж больно страшно наверное ему свой потенциал раскрывать

Думаю имеет смысл показать что у тебя на уме :)
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Два коннекта одновременно
« Ответ #38 : 05 Сентября 2002, 21:30:12 »
изобретение очередного велосипеда.
никому здесь не приходило в голову посмотреть на PEAR?
с уважением,
магистр белой магии.

Оффлайн KBA-KBA

  • Прыгает все время...
  • Постоялец
  • ***
  • Сообщений: 125
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cold.13pm.ru/
Два коннекта одновременно
« Ответ #39 : 06 Сентября 2002, 02:47:04 »
Мда... в PEAR ето все есть... и почти все базы...
вот токо как-то не привычно с ним работать...
да и много тама нету, я вот напсал класс для MySQL, конкретно, а для остальных баз руки не доходят, хотя там тока имена функций меняй (ну почти)
ды к етому классну уже и SQL composer прикрутил... и тп...
а в PEAR етого еще нету...
и путаный он, для моего ума... много всего понапихали, только вот используеться все равно не больше 40%

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
Два коннекта одновременно
« Ответ #40 : 06 Сентября 2002, 10:34:06 »
Цитировать
хотя там тока имена функций меняй

гы,тоже так думал: решил vBulletin перекинуть в PostgreSQL mysql_ сменил на pg_

Прикинь: не пашет  :( :( :(
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Два коннекта одновременно
« Ответ #41 : 06 Сентября 2002, 10:47:24 »
Croaker
У меня для тебя замечательная идея!
Вообще правильно - коннект надо вставить в класс.
Но не останавливаться на этом!!
Зачем ты пишешь каждый раз всякие запросы?
Их надо тоже включить в класс!!!
И тогда ты будешь просто вызывать готовые процедуры!

Оффлайн Croaker

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 927
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alex-files.ru
Два коннекта одновременно
« Ответ #42 : 06 Сентября 2002, 11:37:34 »
RomikChef
мне не нравится открытое глумление, причем по несовсем поняной причине. Я уже раза два тут писал, почему у меня коннект строго вбит. это удобно. эсли нечего больше добавить - проще закрыть тему, чем разводить никому ненужный флуд.


Dm - закрой ее пожалуйста.
Не все коту матрица.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Два коннекта одновременно
« Ответ #43 : 06 Сентября 2002, 13:26:28 »
Йессс!
ООП рулит!
Удобство! сокращение кода!
Под каждый коннект пишем ОДИНАКОВЫЕ процедуры.
Третий коннект? Нет ничего проще!
Напишем еще десяток!
Забыл одну функцию в класс включить? Не проблема! Будем лазить по всему классу и писать три новых экземпляра! Да здравствует победа физичесого труда над разумом!

Какое глумление? НИКАКОГО ГЛУМЛЕНИЯ! Я всего лишь логически продолжаю твой подход. И никто мне не докажет, что это неудобно.

Я потому, глумлюсь, что смешно мне с тебя.
Вместо "спасибо" - "закройте тему".

В общем, да - тему закрывать надо, потому, что бестолку.
Ты где-то слышал, что ООП - это круто, но так и не понял, что это такое.
Ты путаешь классы, объекты, которые делаются из классов, и подключаемые файлы, в которых можно и классы держать, и объекты инициализировать.

Ничего, вырастешь - поймешь. Может быть.

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Два коннекта одновременно
« Ответ #44 : 06 Сентября 2002, 16:28:01 »
все...
почему нельзя флеймить в разделе Флейм?
с уважением,
магистр белой магии.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28