Перенос сообщений в таблицу "phpfox_forum_post"
12.12.2017 11:57:14 am
Я давно хотел перенести все сообщения форума в таблицу phpfox_forum_post. И вот сегодня я это сделал!
Модификация Forum имеет две таблицы, которые принадлежать сообщениям, кроме этого есть еще таблицы форума, но о них ни в этой теме.
Первая таблица phpfox_forum_post - в ней хранится вся информация о постах (дата создания, заголовок, кем создано и так далее).
Вторая таблица phpfox_forum_post_text - предназначена для хранения текста постов в двух вариантах, это HTML тегами и BBcode. Я не думаю, что хранить текст с "голым" HTML это хорошая идея, по этому я по возможности избавляюсь от таких вариантов хранения, я храню информацию с BBcode.
Для переноса я добавил поле text (тип: mediumtext) в таблицу phpfox_forum_post, для это выполнил запрос:
Затем написал инструмент:
Данный код необходимо поместить в файл, например, tool.php и залить в корень сайта, после этого перейти по адресу: сайт/tool.php. Сценарий скопирует все посты, после чего файл необходимо удалить с сервера.
После переноса постов, необходимо, поправить файлы форума, поправлять придется код запросов, чтобы выборка, обновление и так далее работала только с таблицей phpfox_forum_post.
Модификация Forum имеет две таблицы, которые принадлежать сообщениям, кроме этого есть еще таблицы форума, но о них ни в этой теме.
Первая таблица phpfox_forum_post - в ней хранится вся информация о постах (дата создания, заголовок, кем создано и так далее).
Вторая таблица phpfox_forum_post_text - предназначена для хранения текста постов в двух вариантах, это HTML тегами и BBcode. Я не думаю, что хранить текст с "голым" HTML это хорошая идея, по этому я по возможности избавляюсь от таких вариантов хранения, я храню информацию с BBcode.
Для переноса я добавил поле text (тип: mediumtext) в таблицу phpfox_forum_post, для это выполнил запрос:
ALTER TABLE `phpfox_forum_post` ADD COLUMN `text` mediumtext AFTER `title`;
Затем написал инструмент:
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
define('PHPFOX', true);
include('include/setting/server.sett.php');
$db = new mysqli($_CONF['db']['host'], $_CONF['db']['user'], $_CONF['db']['pass'], $_CONF['db']['name']);
if ($db->connect_errno)
{
exit('Error MYSQLI: ' . $db->connect_error);
}
$db->set_charset('utf8');
$q = 'SELECT post_id, text
FROM phpfox_forum_post_text';
$r = $db->query($q) or exit($db->error);
while ($row = $r->fetch_assoc())
{
$q = 'UPDATE phpfox_forum_post
SET
text = \'' . $row['text'] . '\'
WHERE post_id = ' . (int) $row['post_id'];
$db->query($q) or exit($db->error);
echo $row['post_id'] . ' Ok<br />';
}
Данный код необходимо поместить в файл, например, tool.php и залить в корень сайта, после этого перейти по адресу: сайт/tool.php. Сценарий скопирует все посты, после чего файл необходимо удалить с сервера.
После переноса постов, необходимо, поправить файлы форума, поправлять придется код запросов, чтобы выборка, обновление и так далее работала только с таблицей phpfox_forum_post.
- Жалоба