Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖

[已解决] 求oblog4.6 ac版到discuz!1.5转化方法

[复制链接]
Smallbug 发表于 2010-12-13 08:18:25 | 显示全部楼层
可以考虑使用Discuz!数据转换- 手握手系统 http://sws.discuz.net
回复

使用道具 举报

mccad 发表于 2010-12-13 09:39:22 | 显示全部楼层
我的网站原来只有150篇文章以及150篇留言,自己编了个程序转好了,欢迎参观。
http://space.mjtd.com
回复

使用道具 举报

Smallbug 发表于 2010-12-13 09:46:26 | 显示全部楼层
mccad 发表于 2010-12-13 09:39
我的网站原来只有150篇文章以及150篇留言,自己编了个程序转好了,欢迎参观。
http://space.mjtd.com

欢迎分享转换方法。
回复

使用道具 举报

 楼主| zuoguang 发表于 2010-12-13 09:48:29 | 显示全部楼层
回复 mccad 的帖子

欢迎分享下方法 呵呵!
回复

使用道具 举报

 楼主| zuoguang 发表于 2010-12-13 09:50:05 | 显示全部楼层
回复 ♀下一站幸福 的帖子

是收费项目不
回复

使用道具 举报

♀下一站幸福 发表于 2010-12-13 09:51:52 | 显示全部楼层
是的啊
回复

使用道具 举报

Smallbug 发表于 2010-12-13 09:57:29 | 显示全部楼层
zuoguang 发表于 2010-12-13 09:50
回复 ♀下一站幸福 的帖子

是收费项目不

应该是的。
回复

使用道具 举报

mccad 发表于 2010-12-13 10:28:43 | 显示全部楼层
zuoguang 发表于 2010-12-13 09:48
回复 mccad 的帖子

欢迎分享下方法 呵呵!

分类是手工方式,因为我旧博客里的分类太多,不太适用,新博客进行了简化,只有9个分类,所以直接oblog_log表中加入catid列,并按照新的分类手工填入。
另外,由于新博客已经有人发表了内容,所以旧博客的ID必须变动填入,不然新博客的数据就必须清空。
程序分成两部分,也是依样画葫芦,下面是转oblog_log和oblog_comment内容程序:
  1. <?php
  2. /*
  3. pre_home_blog
  4. pre_home_blogfield
  5. pre_home_comment
  6. */
  7. if($start <= 1) {
  8.         //truncatetable('home_blog');
  9.         //truncatetable('home_blogfield');
  10.         //truncatetable('home_comment');
  11. }

  12. $query = "SELECT * FROM {$source_tablepre}log WHERE logid BETWEEN $start AND $end";
  13. $rs = $db['source']->execute($query);

  14. $fieldarray = array('logid', 'userid', 'author', 'topic', 'catid', 'subjectid', 'iis', 'addtime', 'logtext');
  15. while (!$rs->EOF) {
  16.         foreach($fieldarray AS $field) {
  17.                 $dvt[$field] = daddslashes($rs->fields[$field]->value);
  18.         }


  19.         //pre_home_blog
  20.         $mainid                        =        $dvt['logid'];
  21.         $userid     = $dvt['userid'];
  22.         $username                        =        cutstr(htmlspecialchars(trim($dvt['author'])), 15);
  23.         $uid                        =        getuid($username);
  24.         $subject                =        cutstr(htmlspecialchars(trim(@strip_tags($dvt['topic']))), 78);
  25.         $catid                =        $dvt['catid'];
  26.         $viewnum                        =        $dvt['iis'];
  27.         $replynum                =        0;
  28.         $dateline                =        timetounix($dvt['addtime']);

  29.         //pre_home_blogfield
  30.         $tag                        =        '';
  31.         $message                 =        $dvt['logtext'] ;


  32.         $field1        = array('uid','username','subject','catid','viewnum','replynum','dateline');
  33.         $query1        =        getinsertsql("{$discuz_tablepre}home_blog", $field1);

  34.         if($db['discuz']->query($query1)){
  35.                 $blogid = $db['discuz']->insert_id();
  36.                 $field2        = array('blogid','uid','tag','message');
  37.                 $query2        =        getinsertsql("{$discuz_tablepre}home_blogfield", $field2);
  38.                 if($db['discuz']->query($query2)){
  39.                         $db['discuz']->query("UPDATE {$discuz_tablepre}common_member_count SET blogs=blogs + 1 WHERE uid='$uid'");
  40.                         $query3 = "SELECT * FROM {$source_tablepre}comment WHERE mainid = $mainid";
  41.                         $rs3 = $db['source']->execute($query3);
  42.                         $fieldarray3 = array('commentid','userid','mainid','comment_user','addip','addtime','comment','commenttopic','isguest');
  43.                         while (!$rs3->EOF) {
  44.                                 foreach($fieldarray3 AS $field3) {
  45.                                         $dvt3[$field3] = daddslashes($rs3->fields[$field3]->value);
  46.                                 }
  47.                                 //$uid;
  48.                                 $id = $blogid;
  49.                                 $idtype = 'blogid';
  50.                                 $author = $dvt3['comment_user'];
  51.                                 $authorid = getuid($author);
  52.                                 $ip = $dvt3['addip'];
  53.                                 $dateline                =        timetounix($dvt3['addtime']);
  54.                                 $message = $dvt3['comment'];
  55.                                 $message = str_ireplace('<p>','<DIV>',$message);
  56.                                 $message = str_ireplace('</p>','</DIV>',$message);
  57.                                 $message = convertbbcode($message);
  58.                                 if (!(stripos('1'.$dvt3['commenttopic'],'回复:')>0 || stripos('1'.$dvt3['commenttopic'],'Re:')>0)) {
  59.                                         $message = '<DIV>' . $dvt3['commenttopic'] . '</DIV>' . $message;
  60.                                 }
  61.                                
  62.                                
  63.                                 $field4        = array('uid','id','idtype','authorid','author','ip','dateline','message');
  64.                                 $query4        =        getinsertsql("{$discuz_tablepre}home_comment", $field4);
  65.                                 if ($db['discuz']->query($query4)) {
  66.                                         $db['discuz']->query("UPDATE {$discuz_tablepre}home_blog SET replynum=replynum + 1 WHERE blogid='$blogid'");
  67.                                 };
  68.                                 $rs3->Movenext();
  69.                         }
  70.                         $rs3->close();
  71.                 }
  72.                
  73.                 $convertedrows ++;
  74.         } else {
  75.                 reportlog("无法转换主题 tid = $tid subject = '$subject',SQL 语句如下 :<br><textarea rows="3" style="width: 100%;">".$query1."</textarea>");
  76.         }
  77.                 */

  78.         $converted = 1;
  79.         $totalrows ++;
  80.         $rs->Movenext();
  81. }
  82. $rs->close();

  83. ?>
复制代码
下面是转oblog_message留言部分:
  1. <?php
  2. /*
  3. pre_home_comment
  4. */

  5. $query5 = "SELECT * FROM {$source_tablepre}message";
  6. $rs5 = $db['source']->execute($query5);
  7. $fieldarray5 = array('messageid','userid','message_user','addip','addtime','message','messagetopic','isguest');
  8. while (!$rs5->EOF) {
  9.         foreach($fieldarray5 AS $field5) {
  10.                 $dvt5[$field5] = daddslashes($rs5->fields[$field5]->value);
  11.         }
  12.         //$uid;
  13.         $id = $uid = getbloguid($dvt5['userid']);
  14.         $idtype = 'uid';
  15.         $author = $dvt5['message_user'];
  16.         $authorid = getuid($author);
  17.         $ip = $dvt5['addip'];
  18.         $dateline                =        timetounix($dvt5['addtime']);
  19.         $message = $dvt5['message'];
  20.         $message = str_ireplace('<p>','<DIV>',$message);
  21.         $message = str_ireplace('</p>','</DIV>',$message);
  22.         $message = convertbbcode($message);
  23.         $message = '<DIV>' . $dvt5['messagetopic'] . '</DIV>' . $message;
  24.        
  25.         $field6        = array('uid','id','idtype','authorid','author','ip','dateline','message');
  26.         $query6        =        getinsertsql("{$discuz_tablepre}home_comment", $field6);
  27.         $db['discuz']->query($query6);
  28.                                         $convertedrows ++;
  29.        
  30.         $rs5->Movenext();
  31. }
  32. $rs5->close();

  33. function getbloguid($id) {
  34.         global $db, $discuz_tablepre, $source_tablepre, $config_type;
  35.         $sql = '';
  36.         $sql = "SELECT TOP 1 username FROM {$source_tablepre}user WHERE userid = $id";
  37.         $rs = $db['source']->execute($sql);
  38.         $username= $rs->fields['username']->value;
  39.         $sql = "SELECT uid FROM {$discuz_tablepre}".($config_type == 'x' ? "common_member" : "members")." WHERE username='$username' LIMIT 1";
  40.         return $username ? $db['discuz']->result($db['discuz']->query($sql), 0) : 0;
  41.        
  42. }

  43. ?>
复制代码
相册没转,因为我原来本身是N久前的版本(估计是3.1版),个人分类没转,博客文章中的图片没转(因为我只有几个图片,手工编辑就算了)。
估计对你的作用不大。
转换过程中,主要问题是,博客的用户ID与论坛的用户ID是不同的,我是通过用户名来对应,这跟我原来博客的设置有关。不知你是否也可以这样走。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-10-2 12:36 , Processed in 0.105487 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表