PHP, MySql и другие :)

dok34.ru

Каюр тяжёлых систем
7 Фев 2010
72,991
2,019
113
53
#1
Создаю тему, чисто техническую, и буду благодарен за помощь от форумчан и гостей моего форума!

Kirill89_3 () писал:
То есть нужен PHP скрипт, который бы считывал инфу со старой базы, ее модифицировал и заносил в новую, так ?:) А какие модификации надо внести?
Так.
1.Выборку пользователей - все поля таблицы в соответствующие поля таблицы от другого движка.
2.Выборку постов, с датами понятно, и ID автора поста, и ID ветки форума.
3.Выборку веток форума. Чтобы не все подряд вставилось.
:)
Тест
 
Последнее редактирование модератором:

dok34.ru

Каюр тяжёлых систем
7 Фев 2010
72,991
2,019
113
53
#2
LB_posts и xf_post
<pre class="brush: php">&lt;table_structure name="LB_posts"&gt;
&lt;field field="pid" type="int(10)" null="NO" key="PRI" default="&lt;null&gt;" extra="auto_increment" /&gt;
&lt;field field="topic_id" type="int(10)" null="NO" key="MUL" default="0" extra="" /&gt;
&lt;field field="new_topic" type="tinyint(1)" null="NO" key="MUL" default="0" extra="" /&gt;
&lt;field field="text" type="text" null="YES" key="" default="&lt;null&gt;" extra="" /&gt;
&lt;field field="post_date" type="int(10)" null="NO" key="MUL" default="0" extra="" /&gt;
&lt;field field="edit_date" type="int(10)" null="NO" key="" default="0" extra="" /&gt;
&lt;field field="post_member_id" type="int(10)" null="NO" key="MUL" default="0" extra="" /&gt;
&lt;field field="post_member_name" type="varchar(40)" null="NO" key="MUL" default="" extra="" /&gt;
&lt;field field="ip" type="varchar(40)" null="NO" key="MUL" default="" extra="" /&gt;
&lt;field field="hide" type="tinyint(1)" null="NO" key="MUL" default="0" extra="" /&gt;
&lt;field field="fixed" type="tinyint(1)" null="NO" key="MUL" default="0" extra="" /&gt;
&lt;field field="attachments" type="text" null="YES" key="" default="&lt;null&gt;" extra="" /&gt;
&lt;field field="edit_member_id" type="int(10)" null="NO" key="" default="0" extra="" /&gt;
&lt;field field="edit_member_name" type="varchar(40)" null="NO" key="" default="" extra="" /&gt;
&lt;field field="edit_reason" type="varchar(255)" null="NO" key="" default="" extra="" /&gt;
&lt;field field="moder_member_id" type="int(10)" null="NO" key="" default="0" extra="" /&gt;
&lt;field field="moder_member_name" type="varchar(40)" null="NO" key="" default="" extra="" /&gt;
&lt;field field="moder_reason" type="varchar(255)" null="NO" key="" default="" extra="" /&gt;
&lt;field field="moder_date" type="int(10)" null="NO" key="" default="0" extra="" /&gt;
&lt;field field="utility" type="smallint(5)" null="NO" key="" default="0" extra="" /&gt;
&lt;field field="htmlbr" type="tinyint(1)" null="NO" key="" default="0" extra="" /&gt;
&lt;field field="moderation" type="tinyint(1)" null="NO" key="" default="0" extra="" /&gt;

&lt;options name="LB_posts" engine="MyISAM" version="10" row_format="Dynamic" rows="127327" avg_row_length="926" data_length="117932392" max_data_length="281474976710655" index_length="11926528" data_free="0" create_time="2017-06-27 20:45:37" update_time="2017-06-27 20:45:38" collation="utf8_general_ci" create_options="" comment="" /&gt;
&lt;/table_structure&gt;</pre>

Это структура таблицы LB_posts, понятно.
Это - первый пост.


<pre class="brush: php">&lt;row&gt;
&lt;field name="pid"&gt;3&lt;/field&gt;
&lt;field name="topic_id"&gt;2&lt;/field&gt;
&lt;field name="new_topic"&gt;1&lt;/field&gt;
&lt;field name="text"&gt;...которые частично учтены в печатной версии. Что ещё нужно добавить или убавить в ближайшее время для лучшего &amp;amp;quot;усваивания&amp;amp;quot; медицинского материала?&amp;lt;br /&amp;gt;Жду предложений, критики и прочего.&amp;lt;br /&amp;gt;Кроме спама, разумеется &amp;lt;img id='smiles_img' src='{TEMPLATE}/bbcode/smiles/002.gif' /&amp;gt;&lt;/field&gt;
&lt;field name="post_date"&gt;1265547113&lt;/field&gt;
&lt;field name="edit_date"&gt;0&lt;/field&gt;
&lt;field name="post_member_id"&gt;13&lt;/field&gt;
&lt;field name="post_member_name"&gt;dok34.ru&lt;/field&gt;
&lt;field name="ip"&gt;*.81.101.93&lt;/field&gt;
&lt;field name="hide"&gt;0&lt;/field&gt;
&lt;field name="fixed"&gt;0&lt;/field&gt;
&lt;field name="attachments" xsi:nil="true" /&gt;
&lt;field name="edit_member_id"&gt;0&lt;/field&gt;
&lt;field name="edit_member_name"&gt;Удалён&lt;/field&gt;
&lt;field name="edit_reason"&gt;&lt;/field&gt;
&lt;field name="moder_member_id"&gt;0&lt;/field&gt;
&lt;field name="moder_member_name"&gt;&lt;/field&gt;
&lt;field name="moder_reason"&gt;&lt;/field&gt;
&lt;field name="moder_date"&gt;0&lt;/field&gt;
&lt;field name="utility"&gt;0&lt;/field&gt;
&lt;field name="htmlbr"&gt;0&lt;/field&gt;
&lt;field name="moderation"&gt;0&lt;/field&gt;
&lt;/row&gt;</pre>
Это похоже мой ответ на первый пост, который был удалён вместе с его автором.


Вот аналогичное - структура и первый пост в XenForo - по идее в MyBB попроще будет, ещё не смотрел.


<pre class="brush: xml">&lt;table_structure name="xf_post"&gt;
&lt;field field="post_id" type="int(10) unsigned" null="NO" key="PRI" default="&lt;null&gt;" extra="auto_increment" /&gt;
&lt;field field="thread_id" type="int(10) unsigned" null="NO" key="MUL" default="&lt;null&gt;" extra="" /&gt;
&lt;field field="user_id" type="int(10) unsigned" null="NO" key="MUL" default="&lt;null&gt;" extra="" /&gt;
&lt;field field="username" type="varchar(50)" null="NO" key="" default="&lt;null&gt;" extra="" /&gt;
&lt;field field="post_date" type="int(10) unsigned" null="NO" key="MUL" default="&lt;null&gt;" extra="" /&gt;
&lt;field field="message" type="mediumtext" null="NO" key="" default="&lt;null&gt;" extra="" /&gt;
&lt;field field="ip_id" type="int(10) unsigned" null="NO" key="" default="0" extra="" /&gt;
&lt;field field="message_state" type="enum('visible','moderated','deleted')" null="NO" key="" default="visible" extra="" /&gt;
&lt;field field="attach_count" type="smallint(5) unsigned" null="NO" key="" default="0" extra="" /&gt;
&lt;field field="position" type="int(10) unsigned" null="NO" key="" default="&lt;null&gt;" extra="" /&gt;
&lt;field field="likes" type="int(10) unsigned" null="NO" key="" default="0" extra="" /&gt;
&lt;field field="like_users" type="blob" null="NO" key="" default="&lt;null&gt;" extra="" /&gt;
&lt;field field="warning_id" type="int(10) unsigned" null="NO" key="" default="0" extra="" /&gt;
&lt;field field="warning_message" type="varchar(255)" null="NO" key="" default="" extra="" /&gt;
&lt;field field="last_edit_date" type="int(10) unsigned" null="NO" key="" default="0" extra="" /&gt;
&lt;field field="last_edit_user_id" type="int(10) unsigned" null="NO" key="" default="0" extra="" /&gt;
&lt;field field="edit_count" type="int(10) unsigned" null="NO" key="" default="0" extra="" /&gt;

&lt;options name="xf_post" engine="InnoDB" version="10" row_format="Compact" rows="4" avg_row_length="4096" data_length="16384" max_data_length="0" index_length="65536" data_free="0" create_time="2017-06-27 20:50:30" update_time="&lt;null&gt;" collation="utf8_general_ci" create_options="" comment="" /&gt;
&lt;/table_structure&gt;

&lt;table_data name="xf_post"&gt;

&lt;row&gt;
&lt;field name="post_id"&gt;1&lt;/field&gt;
&lt;field name="thread_id"&gt;1&lt;/field&gt;
&lt;field name="user_id"&gt;1&lt;/field&gt;
&lt;field name="username"&gt;admin&lt;/field&gt;
&lt;field name="post_date"&gt;1497809741&lt;/field&gt;
&lt;field name="message"&gt;Первый пошёл&lt;/field&gt;
&lt;field name="ip_id"&gt;2&lt;/field&gt;
&lt;field name="message_state"&gt;visible&lt;/field&gt;
&lt;field name="attach_count"&gt;0&lt;/field&gt;
&lt;field name="position"&gt;0&lt;/field&gt;
&lt;field name="likes"&gt;0&lt;/field&gt;
&lt;field name="like_users"&gt;a:0:{}&lt;/field&gt;
&lt;field name="warning_id"&gt;0&lt;/field&gt;
&lt;field name="warning_message"&gt;&lt;/field&gt;
&lt;field name="last_edit_date"&gt;0&lt;/field&gt;
&lt;field name="last_edit_user_id"&gt;0&lt;/field&gt;
&lt;field name="edit_count"&gt;0&lt;/field&gt;
&lt;/row&gt;
</pre>
 

dok34.ru

Каюр тяжёлых систем
7 Фев 2010
72,991
2,019
113
53
#3
MyBB
<pre class="brush: xml">&lt;table_structure name="mybb_posts"&gt;
&lt;field field="pid" type="int(10) unsigned" null="NO" key="PRI" default="&lt;null&gt;" extra="auto_increment" /&gt;
&lt;field field="tid" type="int(10) unsigned" null="NO" key="MUL" default="0" extra="" /&gt;
&lt;field field="replyto" type="int(10) unsigned" null="NO" key="" default="0" extra="" /&gt;
&lt;field field="fid" type="smallint(5) unsigned" null="NO" key="" default="0" extra="" /&gt;
&lt;field field="subject" type="varchar(120)" null="NO" key="" default="" extra="" /&gt;
&lt;field field="icon" type="smallint(5) unsigned" null="NO" key="" default="0" extra="" /&gt;
&lt;field field="uid" type="int(10) unsigned" null="NO" key="MUL" default="0" extra="" /&gt;
&lt;field field="username" type="varchar(80)" null="NO" key="" default="" extra="" /&gt;
&lt;field field="dateline" type="int(10) unsigned" null="NO" key="MUL" default="0" extra="" /&gt;
&lt;field field="message" type="text" null="NO" key="MUL" default="&lt;null&gt;" extra="" /&gt;
&lt;field field="ipaddress" type="varbinary(16)" null="NO" key="MUL" default="" extra="" /&gt;
&lt;field field="includesig" type="tinyint(1)" null="NO" key="" default="0" extra="" /&gt;
&lt;field field="smilieoff" type="tinyint(1)" null="NO" key="" default="0" extra="" /&gt;
&lt;field field="edituid" type="int(10) unsigned" null="NO" key="" default="0" extra="" /&gt;
&lt;field field="edittime" type="int(10) unsigned" null="NO" key="" default="0" extra="" /&gt;
&lt;field field="editreason" type="varchar(150)" null="NO" key="" default="" extra="" /&gt;
&lt;field field="visible" type="tinyint(1)" null="NO" key="MUL" default="0" extra="" /&gt;

&lt;options name="mybb_posts" engine="MyISAM" version="10" row_format="Dynamic" rows="3" avg_row_length="61" data_length="184" max_data_length="281474976710655" index_length="9216" data_free="0" create_time="2017-06-27 20:33:46" update_time="2017-06-29 18:50:36" collation="utf8_general_ci" create_options="" comment="" /&gt;
&lt;/table_structure&gt;

&lt;table_data name="mybb_posts"&gt;

&lt;row&gt;
&lt;field name="pid"&gt;1&lt;/field&gt;
&lt;field name="tid"&gt;1&lt;/field&gt;
&lt;field name="replyto"&gt;0&lt;/field&gt;
&lt;field name="fid"&gt;2&lt;/field&gt;
&lt;field name="subject"&gt;test1&lt;/field&gt;
&lt;field name="icon"&gt;0&lt;/field&gt;
&lt;field name="uid"&gt;1&lt;/field&gt;
&lt;field name="username"&gt;adm&lt;/field&gt;
&lt;field name="dateline"&gt;1498751250&lt;/field&gt;
&lt;field name="message"&gt;test1-1&lt;/field&gt;
&lt;field name="ipaddress"&gt;Nj?&lt;/field&gt;
&lt;field name="includesig"&gt;0&lt;/field&gt;
&lt;field name="smilieoff"&gt;0&lt;/field&gt;
&lt;field name="edituid"&gt;0&lt;/field&gt;
&lt;field name="edittime"&gt;0&lt;/field&gt;
&lt;field name="editreason"&gt;&lt;/field&gt;
&lt;field name="visible"&gt;1&lt;/field&gt;
&lt;/row&gt;</pre>
Это аналогичное в MyBB/
Проще вроде, я поэтому рассматриваю движок как посредника.

Я могу в дампе тупо заменить часть полей, получить аналог и загрузить в базу.
Этот путь парильный - я просто не умею пока понимать SQLзапросы, к сожалению.
Пару дней начинал, но времени мало пока , для уроков.
Хотя и интересно :)

Не парильный, а парафильный :)
Автозамена странная :)
 

dok34.ru

Каюр тяжёлых систем
7 Фев 2010
72,991
2,019
113
53
#4

Вот ссылка по миграции на движок MyBB

Это обсуждение темы конвертеров LB - прямого решения пока нет, хотя оно востребовано.
 

dok34.ru

Каюр тяжёлых систем
7 Фев 2010
72,991
2,019
113
53
#5
Я попробовал сначала переделать блок конвертера, но не понимаю ряда моментов в скрипте.
Универсальный скрипт, я ещё не все файлы участвующие просмотрел хоть бегло.
 

dok34.ru

Каюр тяжёлых систем
7 Фев 2010
72,991
2,019
113
53
#6

Собственно вот документация.
Я тоже почитаю сейчас :)
По идее переделка одного из существующих блоков должна быть возможна :)
 

dok34.ru

Каюр тяжёлых систем
7 Фев 2010
72,991
2,019
113
53
#7
Merge пара страниц скрины




Это при запуске конвертера, его плановые возможности.
LB понятно это я вставил, пока неполноценно :)
 
Последнее редактирование:

Kirill89_3

Well-Known Member
10 Янв 2014
16,970
873
113
#8
Я не совсем понял...Какая задача ?:) Конвертация структуры базы данных из одного формата в другой ?:) Или же конвертация только данных? То есть берем данные из одной таблицы, некоторые поля удаляем, другие добавляем, так примерно? : )
 
Последнее редактирование:

dok34.ru

Каюр тяжёлых систем
7 Фев 2010
72,991
2,019
113
53
#9

Доступ на скачивание есть?
У меня есть, как у клиента, могу скачать нужное.
Когда-то переходил с PhpBB - это было давненько :)
Сейчас выложу код конвертера и блока PhpBB
ТОже можно разобраться пожалуй :)

файл конвертера

<pre class="brush: php">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"&gt;
&lt;head&gt;
&lt;meta http-equiv="content-type" content="text/html; charset=windows-1251"/&gt;
&lt;title&gt;Конвертор LogicBoard 2.2 (DLE Edition)&lt;/title&gt;
&lt;link rel="stylesheet" href="style.css"/&gt;
&lt;style&gt;
* {
font-family: sans-serif;
font-size: 14px;
color: #444;
}

input {
border: 1px solid #777;
}

input:hover {
border: 1px solid #444;
}

input:focus {
border: 1px solid #222;
}

.container-header {
font-weight: bold;
}

#page {
margin: auto;
display: block;
width: 570px;
overflow: hidden;
}

div#header {
font-size: 25px;
margin: 0 auto;
display: block;
text-align: center;
padding-bottom: 10px;
}

div#from_container {
display: block;
float: left;
}

div#to_container {
display: block;
float: right;
}

div.option_item {
display: block;
padding-top: 5px;
}

div.commonoption_item {
display: block;
padding-top: 15px;
clear: both;
}



div#submit {
padding-top: 10px;
margin: 0 auto 10px auto;
clear: both;
width: 100px;
}

.option_item &gt; label {
width: 110px;
display: inline-block;
}

.commonoption_item &gt; label {
width: 410px;
display: inline-block;
}

input[type=submit] {
margin: 0 auto;
display: block;
}

div#engine-choose{
margin:0 auto;
width: 325px;
}

#tooltip{
position: absolute;
width: 200px;
background: #FEEFB3;

padding: 10px;
-webkit-border-radius: 9px;
-moz-border-radius: 9px;
border-radius: 9px;
border: 1px solid;
visibility:hidden;
margin-top: 5px;
padding: 10px 10px 10px 20px;
}

#warning{
-webkit-border-radius: 9px;
-moz-border-radius: 9px;
border-radius: 9px;

background: #FEEFB3;
border: 1px solid;
margin-bottom:10px;
padding:10px 5px;
text-align:center;
}

#warning ul li{

font-size: 11px;
padding-top: 5px;
}

&lt;/style&gt;
&lt;script type="text/javascript"&gt;

var tooltip, op;
function show_tooltip(el, txt)
{
tooltip = document.getElementById('tooltip');
tooltip.innerHTML = txt;
op = 0.1;
tooltip.style.opacity = op;
tooltip.style.visibility = "visible";

tooltip.style.left = (el.offsetLeft - 10)+"px";
tooltip.style.top = (el.offsetTop + 20)+"px";

show();
return false;
}

function show()
{
if(op &lt; 1)
{
op += 0.1;
tooltip.style.opacity = op;
tooltip.style.filter = 'alpha(opacity='+op*100+')';
t = setTimeout("show()", 30);
}
}

function hide(el)
{
tooltip.style.visibility = "hidden";
}

&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id="tooltip"&gt;&lt;/div&gt;

&lt;?php

set_time_limit(0);
ini_set('memory_limit', '2048M');
ini_set('display_errors',1);


require_once "modules/dle_2.5.php";
require_once "modules/dle_2.6.php";
require_once "modules/phpbb_3.0.9.php";
require_once "modules/ipb_3_1_4.php";
require_once "modules/lb_2.0.php";
require_once "modules/vb_3_6.php";
require_once "modules/twsf.php";

$engines = array(new DLE_2_5(), new DLE_2_6(), new TWSF(), new IPB_3_1_4(), new LB_2_0(), new phpBB_3_0_9(), new VB_3_6);
$engine = null;

if(isset($_POST['engine'])) {
foreach($engines as $cur_engine)
{
if($_POST['engine'] == $cur_engine-&gt;Setup("id"))
{
$engine = $cur_engine;
break;
}
}
}


if(isset($_POST['convert_submit']))
{
$engine-&gt;ConnectDestSql($_POST['to_mysql_host'], $_POST['to_mysql_login'], $_POST['to_mysql_password']);
$engine-&gt;ConnectSrcSql($_POST['from_mysql_host'], $_POST['from_mysql_login'], $_POST['from_mysql_password']);

$engine-&gt;SetDestDb($_POST['to_db_name'], $_POST['to_db_prefix']);
$engine-&gt;SetSrcDb($_POST['from_db_name'], $_POST['from_db_prefix']);



if(!$engine-&gt;Setup("dle_based"))
$engine-&gt;SetDleDB($_POST['to_db_dleprefix']);
$options = array();
if(isset($_POST['rep_mod']) &amp;&amp; $_POST['rep_mod'] == "on")
$options[] = "rep_mod";
if(isset($_POST['admin_name']))
$options['admin_name'] = $_POST['admin_name'];
$engine-&gt;OnStart();
$engine-&gt;Convert($options);
$engine-&gt;OnFinish();
}

else if(isset($_POST['engine_choose_submit'])){


?&gt;

&lt;form action="" method="POST"&gt;
&lt;div id="page"&gt;
&lt;div id="header"&gt;Конвертор LogicBoard 2.2 (DLE Edition)&lt;/div&gt;
&lt;?php if($engine-&gt;Setup("add_text")){ echo '&lt;div id="warning"&gt;&lt;ul&gt;';
foreach($engine-&gt;Setup("add_text") as $text)
echo "&lt;li&gt;".$text.'&lt;/li&gt;';
echo '&lt;/ul&gt;&lt;/div&gt;';}
?&gt;
&lt;div id="from_container"&gt;

&lt;label class="container-header"&gt;&lt;?php echo $engine-&gt;Setup("caption");?&gt;&lt;/label&gt;

&lt;div class="option_item"&gt;
&lt;label&gt;MySQL Сервер&lt;/label&gt;
&lt;input type="text" name="from_mysql_host" value="localhost"/&gt;
&lt;/div&gt;
&lt;div class="option_item"&gt;
&lt;label&gt;MySQL Логин&lt;/label&gt;
&lt;input type="text" name="from_mysql_login"/&gt;
&lt;/div&gt;
&lt;div class="option_item"&gt;
&lt;label&gt;MySQL Пароль&lt;/label&gt;
&lt;input type="text" name="from_mysql_password"/&gt;
&lt;/div&gt;
&lt;div class="option_item"&gt;
&lt;label&gt;База данных&lt;/label&gt;
&lt;input type="text" name="from_db_name" /&gt;
&lt;/div&gt;
&lt;div class="option_item"&gt;
&lt;label&gt;Префикс таблиц&lt;/label&gt;
&lt;input onfocus='show_tooltip(this, "Если у вас база с \"_\" то не забудьте её добавить в поле");'
onblur='hide();'
type="text" name="from_db_prefix" value="&lt;?php echo $engine-&gt;Setup("db_prefix"); ?&gt;"/&gt;
&lt;/div&gt;
&lt;?php if ($engine-&gt;Setup("id") == "phpbb_3_0_9") {?&gt;
&lt;div class="option_item"&gt;
&lt;label&gt;Логин администратора&lt;/label&gt;
&lt;input type="text" name="admin_name"/&gt;
&lt;/div&gt;
&lt;?php } ?&gt;
&lt;/div&gt;
&lt;div id="to_container"&gt;
&lt;label class="container-header"&gt;LogicBoard 2.2 (DLE Edition)&lt;/label&gt;

&lt;div class="option_item"&gt;
&lt;label&gt;MySQL Сервер&lt;/label&gt;
&lt;input type="text" name="to_mysql_host" value="localhost"/&gt;
&lt;/div&gt;
&lt;div class="option_item"&gt;
&lt;label&gt;MySQL Логин&lt;/label&gt;
&lt;input type="text" name="to_mysql_login"/&gt;
&lt;/div&gt;
&lt;div class="option_item"&gt;
&lt;label&gt;MySQL Пароль&lt;/label&gt;
&lt;input type="text" name="to_mysql_password"/&gt;
&lt;/div&gt;
&lt;div class="option_item"&gt;
&lt;label&gt;База данных&lt;/label&gt;
&lt;input type="text" name="to_db_name"/&gt;
&lt;/div&gt;
&lt;?php if ($engine-&gt;Setup("dle_based")) {?&gt;
&lt;div class="option_item"&gt;
&lt;label&gt;Префикс таблиц&lt;/label&gt;
&lt;input onfocus='show_tooltip(this, "Если у вас база с \"_\" то не забудьте её добавить в поле");'
onblur='hide();'
type="text" name="to_db_prefix" value="LB_"/&gt;
&lt;/div&gt;
&lt;?php } else { ?&gt;
&lt;div class="option_item"&gt;
&lt;label&gt;Префикс таблиц DLE&lt;/label&gt;
&lt;input onfocus='show_tooltip(this, "Если у вас база с \"_\" то не забудьте её добавить в поле");'
onblur='hide();'
type="text" name="to_db_dleprefix" value="dle_"/&gt;
&lt;/div&gt;
&lt;div class="option_item"&gt;
&lt;label&gt;Префикс таблиц LB&lt;/label&gt;
&lt;input onfocus='show_tooltip(this, "Если у вас база с \"_\" то не забудьте её добавить в поле");'
onblur='hide();'
type="text" name="to_db_prefix" value="LB_"/&gt;
&lt;/div&gt;
&lt;?php } ?&gt;

&lt;/div&gt;
&lt;div class="commonoption_item"&gt;
&lt;label&gt;Установлен модуль репутации для CMS DLE от ShapeShifter&lt;/label&gt;
&lt;input type="checkbox" name="rep_mod"/&gt;
&lt;/div&gt;
&lt;div id="submit"&gt;
&lt;input type="submit" name="convert_submit" value="Конвертировать"/&gt;
&lt;/div&gt;
&lt;div id="warning"&gt;Если у вас нет модуля репутации, то вы можете купить его
&lt;a target="_blank" href="http://savgroup.ru/modules_dle/pay_modules_dle/38-reputaciya-65.html"&gt;здесь&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;input type="hidden" name="engine" value="&lt;?echo $_POST['engine'];?&gt;"/&gt;
&lt;/form&gt;

&lt;?php }else{ ?&gt;

&lt;form action="" method="POST"&gt;
&lt;div id="page"&gt;
&lt;div id="header"&gt;Конвертор LogicBoard 2.2 (DLE Edition)&lt;/div&gt;
&lt;div id="engine-choose"&gt;
&lt;label&gt;Форум для конвертирования&lt;/label&gt;
&lt;select name="engine"&gt;
&lt;?php
foreach($engines as $eng)
echo "&lt;option value=\"". $eng-&gt;Setup("id")."\"&gt;".$eng-&gt;Setup("caption")."&lt;/option&gt;";
?&gt;
&lt;/select&gt;
&lt;/div&gt;
&lt;div id="submit"&gt;
&lt;input type="submit" name="engine_choose_submit" value="Далее"/&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/form&gt;

&lt;?php }?&gt;

&lt;/body&gt;
&lt;/html&gt;</pre>


Оформление тут понятно, подключаемые модули тоже, это типа оболочки :)

это модуль PhpBB
<pre class="brush: php">&lt;?php

require_once "EngineBase.php";
require_once 'include/parse/functions.php';
require_once 'include/parse/bbcode/function.php';

function to_bb($text)
{
$text = str_replace(array("[code", "[/code"), array("[php", "[/php"), $text);
$bb_codes = array("b", "i", "u", "quote","url","img", "php", "spoiler", er");
$smiles = array(
"\:D" =&gt; "007",
"\:\)" =&gt; "002",
"\;\)" =&gt; "004",
"\:\(" =&gt; "003",
":shock:" =&gt; "009",
":eek:" =&gt; "043",
":\?" =&gt; "030",
"8-\)" =&gt; "006",
":lol:" =&gt; "035",
":p" =&gt; "005",
":oops:" =&gt; "046",
":cry:" =&gt; "037",
":evil:" =&gt; "017",
":twisted:" =&gt; "017",
":x" =&gt; "047",
);

foreach($bb_codes as $bb_code)
{
$text = preg_replace('#\['.$bb_code.'(.*?)\:.+?]#si', '['.$bb_code.'\\1]', $text);
$text = preg_replace('#\[/'.str_replace("=", "", $bb_code).'\:.+?]#si', '[/'.str_replace("=", "", $bb_code).']', $text);
}

$text = preg_replace('#\
(.*?)\[/youtube\:.+?\]#si', '[youtube=\\1]', $text);
$text = preg_replace('#\
 

dok34.ru

Каюр тяжёлых систем
7 Фев 2010
72,991
2,019
113
53
#10
Kirill89_3 () писал:
Я не совсем понял...Какая задача ?:) Конвертация структуры базы данных из одного формата в другой ?:) Или же конвертация только данных? То есть берем данные из одной таблицы, некоторые поля удаляем, другие добавляем, так примерно? : )
Второе.
Именно так - некоторые поля обнуляем, некоторые добавляем из старой таблицы.

Не нужны смайлики всякие , аттачи и так далее :)
Главное - информация, имхо - посты, и от кого, кому, когда.
 

dok34.ru

Каюр тяжёлых систем
7 Фев 2010
72,991
2,019
113
53
#11
<pre class="brush: php">$engine-&gt;SetDestDb($_POST['to_db_name'], $_POST['to_db_prefix']);
$engine-&gt;SetSrcDb($_POST['from_db_name'], $_POST['from_db_prefix']);</pre>
Вот я начал переписывать и пытаться понять - тут по крайней мере всё прозрачно :)
 

Kirill89_3

Well-Known Member
10 Янв 2014
16,970
873
113
#12
То есть скрипт проводит итерацию по каждой записи в таблице, это внутренний цикл, внешний осуществляет итерацию по каждой таблице. А параллелить надо? :) Ну чтобы много потоков делало эту работу, а не один :) В PHP же есть инструкции для параллельного программирования ?:) Один поток данные одной таблицы обрабатывает, другой - данные другой. Еще можно дальше параллелить, разбивать потоки во внутреннем блоке.

Я просто подхожу к проблеме как программный инженер, а не как информатик. :) Программная инженерия нацелена на разработку алгоритмов, их оптимизацию :) А специалисты по информатике и выч. технике более высокоуровненными проблемами занимаются - развертыванием информационных систем в реале. :) Поэтому в программу вступительного экзамена в магистратуру "информатика и выч. техника" не входит математика, больше прикладных, технических вещей.
 
Последнее редактирование:

dok34.ru

Каюр тяжёлых систем
7 Фев 2010
72,991
2,019
113
53
#13
А давайте запараллелим :)
Версия PHP позволяет :)

Вроде бы.
тест
 
Последнее редактирование модератором:

Kirill89_3

Well-Known Member
10 Янв 2014
16,970
873
113
#14
А это идеальная ситуация для параллельного программирования, так как потоки не над синхронизировать, проблема гонки данных не актуальна.
 

dok34.ru

Каюр тяжёлых систем
7 Фев 2010
72,991
2,019
113
53
#15
Для облегчения я планировал убрать все группы юзеров, кроме одной-двух.
Если одна (Люди, условно) - то остальные будут отдавать ноль\пропуск в имени ID, и соответственно упростится немного вывод.
Это если "вручную" :)

Kirill89_3 () писал:
А это идеальная ситуация для параллельного программирования, так как потоки не над синхронизировать, проблема гонки данных не актуальна.
Да. не требуется. МОЖно выполнять задачи, крутить циклы одновременно.
 

dok34.ru

Каюр тяжёлых систем
7 Фев 2010
72,991
2,019
113
53
#16

Вот ещё примеры конвертеров.

Нет, я соврал - не совсем тут :)
НЕ качается, чтобы глянуть ,в смысле
 

dok34.ru

Каюр тяжёлых систем
7 Фев 2010
72,991
2,019
113
53
#17
Инструкция для конвертирования
Данная инструкция предназначена для запуска/установки конвертора с phpBB 3.0.9 на LogicBoard (DLE Edition) 2.2

Инструкция:
1) Установите форум LogicBoard (DLE Edition) (инструкция в дистрибутиве форума)

2) Зайдите в центр управления -&gt; настройки -&gt; Загрузка файлов.

2.1) Добавьте новую настройку: (поля, которые нужно заполнить указаны ниже)
Название: "Ссылка на файл"
Описание: "Ссылка на прикреплённый файл с phpBB"
Тип: "Одна строка"
Значение (ключ) по умолчанию: "Введите ссылку на папку с файлами. Например: (где forum.ru - адрес форума phpBB)"
Ключ: "upload_convert"

2.2) Добавьте новую настройку: (поля, которые нужно заполнить указаны ниже)
Название: "Ссылка на картинку"
Описание: "Ссылка на прикреплённую картинку с phpBB"
Тип: "Одна строка"
Значение (ключ) по умолчанию: "Введите ссылку на папку с картинками. Например: (где forum.ru - адрес форума phpBB)"
Ключ: "upload_convert_img"

3) Загрузите все файлы из папки upload в корневую папку форума

4) Запустите конвертер, введя в адресную строку браузера
Внимание! Если у Вас вместо кириллицы выводятся непоянтные символы, то смените кодировку страницы вручную на utf-8

5) Выберите нужную версию форума и введите данные от БД phpBB и данные от БД LogicBoard

6) Обязательно удалите загруженные файлы конвертора!

7) Зайдите в центр управления и очистите кеш форума.

Внимание! Если Вы собираетесь удалить старый форум, то не удаляйте папку с файлами, иначе все прикреплённые файлы будут недоступны.
Вы можете перенести данную папку в другое место, при это не забудьте указать в настройках, которые создавали выше, адрес к этой папке.
Тут много лишнего предусмотрено, имхо. Файлы-смайлы не будем тащить :)
 

dok34.ru

Каюр тяжёлых систем
7 Фев 2010
72,991
2,019
113
53
#18
EmEditor - для дампов.
Рабочая машинка у меня не хочет 300мб файл хорошо обрабатывать :)
А это - для винды.