Тестовый сайт  

Вернуться   Тестовый сайт > Все для SMF и DLE > Форумы и модули

Форумы и модули Все, что действительно работает

Ответ
 
Опции темы Опции просмотра
Старый 25.02.2021, 10:26   #1
WYLEK
Админ
 
Аватар для WYLEK
Доп. информация
По умолчанию Восстановление порядка сообщений темы в phpmyadmin

Восстановление порядка сообщений темы в phpmyadmin


Просматривая некоторые темы обнаружил несоответствия времени создания сообщений и порядка их расположения.
Это произошло после ручного добавления из старого форума тем и сообщений. Средствами форума переместить на свои места сообщения дело хлопотное да и запутаешься

Вот некоторые темы, где я применил метод ниже...

Логический шрифт
Radialix 3
НАШ ЛОГОТИП и АТРИБУТИКА
----------------------------------------------
А теперь коротко, без картинок и по делу

1. создаем две таблицы

Код:
CREATE TABLE `smf_messages4` (`id_msg` int(10) UNSIGNED NOT NULL, `id_topic` mediumint(8) UNSIGNED NOT NULL DEFAULT '0', `id_board` smallint(5) UNSIGNED NOT NULL DEFAULT '0', `poster_time` int(10) UNSIGNED NOT NULL DEFAULT '0', `id_member` mediumint(8) UNSIGNED NOT NULL DEFAULT '0', `id_msg_modified` int(10) UNSIGNED NOT NULL DEFAULT '0', `subject` varchar(255) NOT NULL DEFAULT '', `poster_name` varchar(255) NOT NULL DEFAULT '', `poster_email` varchar(255) NOT NULL DEFAULT '', `poster_ip` varbinary(16) DEFAULT NULL, `smileys_enabled` tinyint(4) NOT NULL DEFAULT '1', `modified_time` int(10) UNSIGNED NOT NULL DEFAULT '0', `modified_name` varchar(255) NOT NULL DEFAULT '', `modified_reason` varchar(255) NOT NULL DEFAULT '', `body` mediumtext NOT NULL, `icon` varchar(16) NOT NULL DEFAULT 'xx',`approved` tinyint(4) NOT NULL DEFAULT '1', `likes` smallint(5) UNSIGNED NOT NULL DEFAULT '0', `lock_post` tinyint(4) DEFAULT '0') ENGINE=InnoDB DEFAULT CHARSET=utf8;
Код:
CREATE TABLE `smf_messages6` (`id_msg` int(10) UNSIGNED NOT NULL, `id_topic` mediumint(8) UNSIGNED NOT NULL DEFAULT '0', `id_board` smallint(5) UNSIGNED NOT NULL DEFAULT '0', `poster_time` int(10) UNSIGNED NOT NULL DEFAULT '0', `id_member` mediumint(8) UNSIGNED NOT NULL DEFAULT '0', `id_msg_modified` int(10) UNSIGNED NOT NULL DEFAULT '0', `subject` varchar(255) NOT NULL DEFAULT '', `poster_name` varchar(255) NOT NULL DEFAULT '', `poster_email` varchar(255) NOT NULL DEFAULT '', `poster_ip` varbinary(16) DEFAULT NULL, `smileys_enabled` tinyint(4) NOT NULL DEFAULT '1', `modified_time` int(10) UNSIGNED NOT NULL DEFAULT '0', `modified_name` varchar(255) NOT NULL DEFAULT '', `modified_reason` varchar(255) NOT NULL DEFAULT '', `body` mediumtext NOT NULL, `icon` varchar(16) NOT NULL DEFAULT 'xx',`approved` tinyint(4) NOT NULL DEFAULT '1', `likes` smallint(5) UNSIGNED NOT NULL DEFAULT '0', `lock_post` tinyint(4) DEFAULT '0') ENGINE=InnoDB DEFAULT CHARSET=utf8;

2. переносим строки темы

Код:
INSERT INTO `smf_messages4` (`id_msg`, `id_topic`, `id_board`, `poster_time`, `id_member`, `id_msg_modified`, `subject`, `poster_name`, `poster_email`, `poster_ip`, `smileys_enabled`, `modified_time`, `modified_name`, `modified_reason`, `body`, `icon`, `approved`, `likes`, `lock_post`) SELECT `id_msg`, `id_topic`, `id_board`, `poster_time`, `id_member`, `id_msg_modified`, `subject`, `poster_name`, `poster_email`, `poster_ip`, `smileys_enabled`, `modified_time`, `modified_name`, `modified_reason`, `body`, `icon`, `approved`, `likes`, `lock_post` FROM smf_messages WHERE id_topic IN (733);
Код:
INSERT INTO `smf_messages6` (`id_msg`, `id_topic`, `id_board`, `poster_time`, `id_member`, `id_msg_modified`, `subject`, `poster_name`, `poster_email`, `poster_ip`, `smileys_enabled`, `modified_time`, `modified_name`, `modified_reason`, `body`, `icon`, `approved`, `likes`, `lock_post`) SELECT `id_msg`, `id_topic`, `id_board`, `poster_time`, `id_member`, `id_msg_modified`, `subject`, `poster_name`, `poster_email`, `poster_ip`, `smileys_enabled`, `modified_time`, `modified_name`, `modified_reason`, `body`, `icon`, `approved`, `likes`, `lock_post` FROM smf_messages WHERE id_topic IN (733);
3. создаем дополнительные столбцы id_msg2

Код:
ALTER TABLE smf_messages4 ADD COLUMN id_msg2 TEXT AFTER id_msg;
ALTER TABLE smf_messages6 ADD COLUMN id_msg2 TEXT AFTER id_msg;
4. нумеруем id_msg2

Код:
set @i := 0;
update smf_messages4 set id_msg2 = (@i := @i+1 ) order by id_msg;
set @i := 0;
update smf_messages6 set id_msg = (@i := @i+1 ) order by poster_time;
+++++++++++++++++++++++++++++++++
5. обновляем id_msg2 в smf_messages6

Код:
UPDATE smf_messages6, smf_messages4 
SET smf_messages6.id_msg2 = smf_messages4.id_msg 
where smf_messages6.id_msg = smf_messages4.id_msg2;
6. нумеруем id_msg

Код:
set @i := 44440;
update smf_messages6 set id_msg = (@i := @i+1 ) order by poster_time;
7. переносим адреса по времени на свое место

Код:
UPDATE smf_messages6 SET id_msg=id_msg2 WHERE poster_time;
8. удаляем столбец id_msg2

Код:
ALTER TABLE smf_messages6 drop COLUMN id_msg2;
9. удаляем тему

Код:
delete from smf_messages WHERE id_topic IN (733);
10. переносим в phpmyadmin из таблицы smf_messages6 в таблицу smf_messages ТОЛЬКО ДАННЫЕ

11. всё
++++++++++++++++++++++++++++++++++++++++++
__________________
WYLEK вне форума   Ответить с цитированием
Старый 17.03.2021, 11:44   #2
WYLEK
Админ
 
Аватар для WYLEK
Доп. информация
По умолчанию Восстановление порядка сообщений темы в phpmyadmin

Объединяем темы Поговорим? и Поговорим?0
++++++++++++++++++++
очистка таблиц, если что то пошло не так
Код:
TRUNCATE TABLE smf_messages0;
TRUNCATE TABLE smf_messages1;
++++++++++++++++++++
создание таблиц

Код:
CREATE TABLE `smf_messages0` (`id_msg` int(10) UNSIGNED NOT NULL, `id_topic` mediumint(8) UNSIGNED NOT NULL DEFAULT '0', `id_board` smallint(5) UNSIGNED NOT NULL DEFAULT '0', `poster_time` int(10) UNSIGNED NOT NULL DEFAULT '0', `id_member` mediumint(8) UNSIGNED NOT NULL DEFAULT '0', `id_msg_modified` int(10) UNSIGNED NOT NULL DEFAULT '0', `subject` varchar(255) NOT NULL DEFAULT '', `poster_name` varchar(255) NOT NULL DEFAULT '', `poster_email` varchar(255) NOT NULL DEFAULT '', `poster_ip` varbinary(16) DEFAULT NULL, `smileys_enabled` tinyint(4) NOT NULL DEFAULT '1', `modified_time` int(10) UNSIGNED NOT NULL DEFAULT '0', `modified_name` varchar(255) NOT NULL DEFAULT '', `modified_reason` varchar(255) NOT NULL DEFAULT '', `body` mediumtext NOT NULL, `icon` varchar(16) NOT NULL DEFAULT 'xx',`approved` tinyint(4) NOT NULL DEFAULT '1', `likes` smallint(5) UNSIGNED NOT NULL DEFAULT '0', `lock_post` tinyint(4) DEFAULT '0') ENGINE=InnoDB DEFAULT CHARSET=utf8;
Код:
CREATE TABLE `smf_messages1` (`id_msg` int(10) UNSIGNED NOT NULL, `id_topic` mediumint(8) UNSIGNED NOT NULL DEFAULT '0', `id_board` smallint(5) UNSIGNED NOT NULL DEFAULT '0', `poster_time` int(10) UNSIGNED NOT NULL DEFAULT '0', `id_member` mediumint(8) UNSIGNED NOT NULL DEFAULT '0', `id_msg_modified` int(10) UNSIGNED NOT NULL DEFAULT '0', `subject` varchar(255) NOT NULL DEFAULT '', `poster_name` varchar(255) NOT NULL DEFAULT '', `poster_email` varchar(255) NOT NULL DEFAULT '', `poster_ip` varbinary(16) DEFAULT NULL, `smileys_enabled` tinyint(4) NOT NULL DEFAULT '1', `modified_time` int(10) UNSIGNED NOT NULL DEFAULT '0', `modified_name` varchar(255) NOT NULL DEFAULT '', `modified_reason` varchar(255) NOT NULL DEFAULT '', `body` mediumtext NOT NULL, `icon` varchar(16) NOT NULL DEFAULT 'xx',`approved` tinyint(4) NOT NULL DEFAULT '1', `likes` smallint(5) UNSIGNED NOT NULL DEFAULT '0', `lock_post` tinyint(4) DEFAULT '0') ENGINE=InnoDB DEFAULT CHARSET=utf8;
+++++++++++++++++++++++++++++++++++
переносим строки тем 25 и 732 в smf_messages0 - эталон

Код:
INSERT INTO `smf_messages0` (`id_msg`, `id_topic`, `id_board`, `poster_time`, `id_member`, `id_msg_modified`, `subject`, `poster_name`, `poster_email`, `poster_ip`, `smileys_enabled`, `modified_time`, `modified_name`, `modified_reason`, `body`, `icon`, `approved`, `likes`, `lock_post`) SELECT `id_msg`, `id_topic`, `id_board`, `poster_time`, `id_member`, `id_msg_modified`, `subject`, `poster_name`, `poster_email`, `poster_ip`, `smileys_enabled`, `modified_time`, `modified_name`, `modified_reason`, `body`, `icon`, `approved`, `likes`, `lock_post` FROM smf_messages WHERE id_topic IN (25);
Код:
INSERT INTO `smf_messages0` (`id_msg`, `id_topic`, `id_board`, `poster_time`, `id_member`, `id_msg_modified`, `subject`, `poster_name`, `poster_email`, `poster_ip`, `smileys_enabled`, `modified_time`, `modified_name`, `modified_reason`, `body`, `icon`, `approved`, `likes`, `lock_post`) SELECT `id_msg`, `id_topic`, `id_board`, `poster_time`, `id_member`, `id_msg_modified`, `subject`, `poster_name`, `poster_email`, `poster_ip`, `smileys_enabled`, `modified_time`, `modified_name`, `modified_reason`, `body`, `icon`, `approved`, `likes`, `lock_post` FROM smf_messages WHERE id_topic IN (732);
создаем столбец id_msg2, если надо что то поменять напрямую

Код:
ALTER TABLE smf_messages0 ADD id_msg2 INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
нумеруем id_msg2

Код:
set @i := 44440;
update smf_messages0 set id_msg2 = (@i := @i+1 ) order by id_msg;
set @i := 0;
update smf_messages0 set id_msg2 = (@i := @i+1 ) order by id_msg;
-------------------------------------------------------

переносим строки тем 25 и 732 в smf_messages1

Код:
INSERT INTO `smf_messages1` (`id_msg`, `id_topic`, `id_board`, `poster_time`, `id_member`, `id_msg_modified`, `subject`, `poster_name`, `poster_email`, `poster_ip`, `smileys_enabled`, `modified_time`, `modified_name`, `modified_reason`, `body`, `icon`, `approved`, `likes`, `lock_post`) SELECT `id_msg`, `id_topic`, `id_board`, `poster_time`, `id_member`, `id_msg_modified`, `subject`, `poster_name`, `poster_email`, `poster_ip`, `smileys_enabled`, `modified_time`, `modified_name`, `modified_reason`, `body`, `icon`, `approved`, `likes`, `lock_post` FROM smf_messages WHERE id_topic IN (25);
Код:
INSERT INTO `smf_messages1` (`id_msg`, `id_topic`, `id_board`, `poster_time`, `id_member`, `id_msg_modified`, `subject`, `poster_name`, `poster_email`, `poster_ip`, `smileys_enabled`, `modified_time`, `modified_name`, `modified_reason`, `body`, `icon`, `approved`, `likes`, `lock_post`) SELECT `id_msg`, `id_topic`, `id_board`, `poster_time`, `id_member`, `id_msg_modified`, `subject`, `poster_name`, `poster_email`, `poster_ip`, `smileys_enabled`, `modified_time`, `modified_name`, `modified_reason`, `body`, `icon`, `approved`, `likes`, `lock_post` FROM smf_messages WHERE id_topic IN (732);
создаем столбец

Код:
ALTER TABLE smf_messages1 ADD id_msg2 INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
нумеруем id_msg2

Код:
set @i := 44440;
update smf_messages1 set id_msg2 = (@i := @i+1 ) order by poster_time;
set @i := 0;
update smf_messages1 set id_msg2 = (@i := @i+1 ) order by poster_time;
+++++++++++++++++++++++++++++++++++

переносим id_msg на родное место

Код:
UPDATE smf_messages1, smf_messages0 
SET smf_messages1.id_msg = smf_messages0.id_msg 
where smf_messages1.id_msg2 = smf_messages0.id_msg2;
---------------------------------
устанавливаем топик и заголовок

Код:
UPDATE smf_messages1 SET id_topic='25' WHERE id_topic='732';
UPDATE smf_messages1 SET subject='Поговорим?' WHERE subject='Поговорим?0';
удаляем id_msg2

Код:
ALTER TABLE smf_messages1 drop COLUMN id_msg2;
вставка в таблицу smf_messages - удаляем строки тем

Код:
delete from smf_messages WHERE id_topic IN (25);
delete from smf_messages WHERE id_topic IN (732);
закидываем данные из smf_messages1 на smf_messages

Код:
INSERT INTO `smf_messages` (`id_msg`, `id_topic`, `id_board`, `poster_time`, `id_member`, `id_msg_modified`, `subject`, `poster_name`, `poster_email`, `poster_ip`, `smileys_enabled`, `modified_time`, `modified_name`, `modified_reason`, `body`, `icon`, `approved`, `likes`, `lock_post`) SELECT `id_msg`, `id_topic`, `id_board`, `poster_time`, `id_member`, `id_msg_modified`, `subject`, `poster_name`, `poster_email`, `poster_ip`, `smileys_enabled`, `modified_time`, `modified_name`, `modified_reason`, `body`, `icon`, `approved`, `likes`, `lock_post` FROM smf_messages1 WHERE id_topic IN (25);
Все , пересчитываем все в админке.
__________________
WYLEK вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 02:50. Часовой пояс GMT.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2021, vBulletin Solutions, Inc. Перевод: zCarot