[IPB] Импорт юзера посредством MySQL

TAFF
На сайте с 28.08.2008
Offline
140
1081

Как провернуть сабж? Есть старая база MySQL, необходимо только сделать импорт юзера из старой базы в новою, желательно под старым ID

Ps:

- Как так? Удалил юзера, бекап только старый

- Просьба не просить админку :)

TAFF добавил 17.12.2009 в 16:30

^^^^UPD^^^^

✓ Администрирование (/ru/forum/494299) | ✓ Домены (/ru/forum/298049) | ✓ Продажа аккаунтов narod.ru (/ru/forum/585347)
TAFF
На сайте с 28.08.2008
Offline
140
#1

^^^^UPD^^^^

Night Man
На сайте с 24.12.2008
Offline
17
#2

Написание маааленького скрипта решит эту пробелему.

1. Создаешь подключение к БД 1.

2. Селектишь * из юзерс.

3. Пихаешь в массив.

4. Закрываешь подключение. Создаешь подкючение ко второй БД.

5. Инсертишь массив.

6. Всё.=)

Пардон за "ты".

Услуги веб-разработчика (/ru/forum/481646) Большое количество восклицательных знаков- явный признак больного ума.(с)
TAFF
На сайте с 28.08.2008
Offline
140
#3

Night Man, В MySQL нуб полный, можете помочь?

[Удален]
#4
TAFF:
Есть старая база MySQL

"Старая" означает давность по времени или более раннюю версию IPB? Это раз.

И какую информацию нужно импортировать? Только возможность авторизации по прежнем логину/паролю, или вернуть его авторства сообщениям и прочее форумное имущество? Это два.

И самое главное - версия ИПБ какая?

Пишите лучше на IBR. Там больше народа, знающего архитектуру базы ИПБ.

mrFatCat добавил 20.12.2009 в 21:58

Night Man:
Селектишь * из юзерс

Ах, если бы вопрос ограничивался одной таблицей...

Когда-то давно писал под ИПБ мод "склейки" двух юзеров в одного. Можете полюбыпотствовать, сколько там запросов и к скольким таблицам:

	function do_join_mem()

{
global $ibforums, $DB, $std;

if ( $ibforums->member['mgroup'] == $ibforums->vars['admin_group'] )
{
$DB->query("SELECT id, name FROM ibf_members WHERE name = '".$ibforums->input['mprim']."' OR name = '".$ibforums->input['msec']."'");
if($DB->get_num_rows()==2)
{
while ( $r = $DB->fetch_row() )
{
if($r['name'] == $ibforums->input['mprim'])
{
$prim_name = $r['name'];
$prim_id = $r['id'];
}
if($r['name'] == $ibforums->input['msec'])
{
$sec_name = $r['name'];
$sec_id = $r['id'];
}
}
$DB->query("UPDATE ibf_posts SET author_name = '".$prim_name."', author_id = '".$prim_id."' WHERE author_id = ".$sec_id);
$DB->query("UPDATE ibf_messages SET from_id = ".$prim_id." WHERE from_id = ".$sec_id);
$DB->query("UPDATE ibf_messages SET member_id = ".$prim_id." WHERE member_id = ".$sec_id);
$DB->query("UPDATE ibf_messages SET recipient_id = ".$prim_id." WHERE recipient_id = ".$sec_id);
$DB->query("UPDATE ibf_topics SET starter_id = ".$prim_id.", starter_name = '".$prim_name."' WHERE starter_id = ".$sec_id);
$DB->query("UPDATE ibf_topics SET last_poster_id = ".$prim_id.", last_poster_name = '".$prim_name."' WHERE last_poster_id = ".$sec_id);
$DB->query("UPDATE ibf_tracker SET member_id = ".$prim_id." WHERE member_id = ".$sec_id);
$DB->query("UPDATE ibf_forum_tracker SET member_id = ".$prim_id." WHERE member_id = ".$sec_id);
$DB->query("UPDATE ibf_jposts SET journal_id = '".$prim_id."' WHERE journal_id = ".$sec_id);
$DB->query("UPDATE ibf_jposts SET author_name = '".$prim_name."', author_id = '".$prim_id."' WHERE author_id = ".$sec_id);
$DB->query("UPDATE ibf_jcomments SET owner_id = '".$prim_id."' WHERE owner_id = ".$sec_id);
$DB->query("UPDATE ibf_jcomments SET author_name = '".$prim_name."', author_id = '".$prim_id."' WHERE author_id = ".$sec_id);
$DB->query("UPDATE ibf_moderators SET member_name = '".$prim_name."', member_id = '".$prim_id."' WHERE member_id = ".$sec_id);
$DB->query("UPDATE ibf_calendar_events SET userid = '".$prim_id."' WHERE userid = ".$sec_id);
$DB->query("SELECT tid from ibf_voters WHERE member_id = ".$sec_id);
if($DB->get_num_rows())
{
$woted_tids = Array();
while($r = $DB->fetch_row())$woted_tids[] = $r['tid'];
$woted_tids = implode(",",$woted_tids);
$DB->query("UPDATE ibf_voters SET member_id = '".$prim_id."' WHERE tid NOT IN(".$woted_tids.") AND member_id = ".$sec_id);
}
$DB->query("DELETE from ibf_members WHERE id = ".$sec_id);
$DB->query("DELETE from ibf_pfields_content WHERE member_id = ".$sec_id);
$DB->query("DELETE from ibf_member_extra WHERE id = ".$sec_id);
$DB->query("DELETE from ibf_validating WHERE member_id = ".$sec_id);
$DB->query("SELECT id, name FROM ibf_members ORDER BY joined DESC LIMIT 1");
$memb = $DB->fetch_row();
$DB->query("SELECT COUNT(id) as members from ibf_members");
$r = $DB->fetch_row();
$DB->query("UPDATE ibf_stats SET MEM_COUNT = '".$r['members']."', LAST_MEM_NAME = '".$memb['name']."', LAST_MEM_ID = '".$memb['id']."'");
$this->result = "<div align=center>Данные пользователя <b>".$sec_name."</b> успешно перенесены на аккаунт <b>".$prim_name."</b></div>";
$this->result .= "<div align=center><a href='index.php?act=module&module=banka'>Продолжить</a> || <a href='javascript:window.close()'>Закрыть окно</a></div>";
}
else
{
$this->result = "Неверно введены имена пользователей!";
}
}
else
{
$this->result = "You're not an admin!";
}
}
TAFF
На сайте с 28.08.2008
Offline
140
#5
mrFatCat:
"Старая" означает давность по времени или более раннюю версию IPB? Это раз.

По времени

mrFatCat:
И какую информацию нужно импортировать? Только возможность авторизации по прежнем логину/паролю, или вернуть его авторства сообщениям и прочее форумное имущество? Это два.

Самого юзера, его авторство сообщений, друзей и прочего

mrFatCat:
И самое главное - версия ИПБ какая?

2.3.0

mrFatCat:
Пишите лучше на IBR. Там больше народа, знающего архитектуру базы ИПБ.

Отвечают неделями

[Удален]
#6
TAFF:
Самого юзера

Так только одного юзера? Тогда это проще сделать вручную через пхп-админ.

Стучите в аську 284818068.

TAFF:
Отвечают неделями

Я там под ником FatCat. Если вопрос мне интересен - отвечаю сразу; если вопрос не интересен вообще не отвечаю.

По тикетам вроде бы отвечают 5 дней в неделю.

Night Man
На сайте с 24.12.2008
Offline
17
#7

Если будет нужен полный перевод, обращайтесь могу помочь. Асько- 35864858.

Ах, если бы вопрос ограничивался одной таблицей...

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

Night Man добавил 21.12.2009 в 09:55

mrFatCat, ознакомился с Вашей функцией, да согласен, более чем с одной. Но ТС не уточнил деталей, а лишь сказал, что надо импортировать. Ну собственно, это не повод спор устраивать, думаю.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий