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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

〖分享〗Discuz!4.1多论坛数据库手工合并手记[首页分版-域名自动判断]

[复制链接]
yznhysf 发表于 2006-4-26 21:45:27 | 显示全部楼层 |阅读模式
初次合并,有什么不足请高手指点,谢谢!:)
Discuz!4.1多论坛数据库手工合并手记
作者:鱼鱼  补充:阿贱
QQ:68329837
DZ交流群:815632
技术支持论坛:discuz.dismall.com  bbs.1001year.net
起因:由于开始的失误,将一千零一夜娱乐论坛宠物论坛美食论坛分成了三个单独论坛,以至于三个论坛宣传起来很麻烦,而且会员分散在了三个论坛。于是决定将宠物-1001pet(源论坛)和美食-1001cate(源论坛)合并到娱乐-1001year(目标论坛)中!

原贴地址:http://bbs.1001year.net/thread-5057-1-1.html

所需工具:UltraEdit、PHPMYADMIN、MYSQL Administrator
为了保证数据的安全,鱼鱼建议大家将数据库保存在本地机器来操作,以免由于误操作造成对原论坛数据的损坏。


        首先,我们先来合并1001Year和1001Cate,在论坛后台将两个论坛(1001Year和1001Pet)的数据库分卷全部备份,并下载到本地,在本地配置PHP+MYSQL环境,并安装UltraEdit、PHPMYADMIN、MYSQL Administrator,新建两个论坛1001Year和1001Cate,并将两个数据库分别恢复到两个论坛中。

下面我们来介绍一下,在数据库中,主要表格的作用。
cdb_buddys           好友信息表
cdb_favorites       个人收藏信息表
cdb_memberfields 用户扩展信息数据表
cdb_members       用户基本信息数据表
cdb_onlinetime     在线时间信息表
cdb_polls               投票帖子信息表
cdb_threads               主题帖子信息表
cdb_threadsmod  主题操作记录信息表
cdb_posts                帖子信息表
cdb_ratelog                帖子评分记录信息表
cdb_attachments  附件信息表
cdb_forumfields    论坛扩展信息数据表
cdb_forums           论坛基本信息表
cdb_moderators   斑竹信息数据表
cdb_pms                短信数据表
cdb_forumlinks      友情连接数据表
cdb_admingroups  管理组数据表
cdb_usergroups    用户组数据表

        在这里面,关键的就是cdb_members,cdb_memberfields,cdb_onlinetime,cdb_threadscdb_posts
        会员中不允许有重名的,鱼鱼暂时也没什么好办法,因为鱼鱼的论坛不大,鱼鱼方法是在会员注册的地方,一个一个试重名,试到重名的就记录下来。不过鱼鱼今天开始学习PHP和MYSQL了,准备自己写一个专门用来检测重名的PHP程序,如果可能的话,鱼鱼还会写一个专门用来合并论坛的PHP程序,希望PHP达人们能给鱼鱼帮助。(PS:我曰!检测是我一个个试的好吧!臭鱼!-- 阿贱留)
        好了,下面就开始来讲合并数据库的过程了。
PS:备份数据的时候,尽量只备份有帖子的数据,其他没什么用,我为了避免麻烦,把2级目录的东西都转到了1级论坛下,这样合并的时候,在目标论坛上就不用建太多版块。


1、在1001Year中建立1001cate和1001pet的板块,然后记录1001cate和1001pet在1001year论坛对应的fid(就是版块号,鼠标放到论坛首页各个版块的文字上面就可以在状态栏看到版块号了)。

解释:为了帖子准确和不出现错误,必须将所有板块全部记录完整,为了帖子对应,一定要详细。

2、因为还牵扯到会员重名的问题,臭鱼也说了,毕竟我们都不会PHP,只能手动来了。数据大的论坛,找个高手写个程序检测好些。
检测完会员后,需要升级数据库,如下:(这里推荐选择发贴少的会员所在的论坛。)
  1. UPDATE `cdb_members` SET `username` = '臭鱼old' WHERE `username` = '臭鱼';
复制代码

解释:此步是将会员里叫臭鱼的用户改名为臭鱼old,改成什么随便你咯。

3数据库升级一:主题+帖子+会员+附件的升级。
注意:这里所说的数据库升级,都是在源论坛进行的!因为要把数据合并到目标论坛,保持目标论坛数据不动。
也就是上面所说的那些重要的表,代码如下:
  1. UPDATE cdb_memberfields SET uid=uid+1839;
  2. UPDATE cdb_members SET uid=uid+1839;
  3. UPDATE cdb_threads SET authorid=authorid+1839;
  4. UPDATE cdb_posts SET authorid=authorid+1839;
  5. UPDATE cdb_threads SET tid=tid+3522;
  6. UPDATE cdb_posts SET tid=tid+3522;
  7. UPDATE cdb_posts SET pid=pid+23397;
  8. UPDATE cdb_attachments SET tid=tid+3522;
  9. UPDATE cdb_attachments SET pid=pid+23397;
  10. UPDATE cdb_attachments SET aid=aid+8000;
复制代码

当然,这里你要根据你目标论坛的会员数、主题数、帖子数和附件数量进行设置,比如:
  1. UPDATE cdb_memberfields SET uid=uid+1839;
复制代码
是根据我的目标论坛的会员数,最后一个UID是1839,这样升级的时候就将源论坛里的UID全部加1839。
其他表内的数据也是根据这个来的,包括发贴量、主题数,都可以在你论坛看到。附件可以在后台查看ID号。

数据库升级二:版块的升级。

这里说的版块的升级,就是为了将源论坛的版块对应目标论坛新建的版块。代码如下:
  1. UPDATE cdb_threads SET fid=105 WHERE fid=41;
  2. UPDATE cdb_threads SET fid=106 WHERE fid=42;
  3. UPDATE cdb_threads SET fid=107 WHERE fid=27;
  4. UPDATE cdb_threads SET fid=109 WHERE fid=38;
  5. UPDATE cdb_threads SET fid=108 WHERE fid=34;
  6. UPDATE cdb_threads SET fid=110 WHERE fid=13;
  7. UPDATE cdb_threads SET fid=113 WHERE fid=17;
  8. UPDATE cdb_threads SET fid=112 WHERE fid=16;
  9. UPDATE cdb_threads SET fid=111 WHERE fid=15;
  10. UPDATE cdb_threads SET fid=115 WHERE fid=43;
  11. UPDATE cdb_threads SET fid=114 WHERE fid=19;
  12. UPDATE cdb_threads SET fid=116 WHERE fid=14;
  13. UPDATE cdb_threads SET fid=117 WHERE fid=23;
  14. UPDATE cdb_threads SET fid=118 WHERE fid=25;
  15. UPDATE cdb_threads SET fid=119 WHERE fid=26;
  16. UPDATE cdb_posts SET fid=105 WHERE fid=41;
  17. UPDATE cdb_posts SET fid=106 WHERE fid=42;
  18. UPDATE cdb_posts SET fid=107 WHERE fid=27;
  19. UPDATE cdb_posts SET fid=109 WHERE fid=38;
  20. UPDATE cdb_posts SET fid=108 WHERE fid=34;
  21. UPDATE cdb_posts SET fid=110 WHERE fid=13;
  22. UPDATE cdb_posts SET fid=113 WHERE fid=17;
  23. UPDATE cdb_posts SET fid=112 WHERE fid=16;
  24. UPDATE cdb_posts SET fid=111 WHERE fid=15;
  25. UPDATE cdb_posts SET fid=115 WHERE fid=43;
  26. UPDATE cdb_posts SET fid=114 WHERE fid=19;
  27. UPDATE cdb_posts SET fid=116 WHERE fid=14;
  28. UPDATE cdb_posts SET fid=117 WHERE fid=23;
  29. UPDATE cdb_posts SET fid=118 WHERE fid=25;
  30. UPDATE cdb_posts SET fid=119 WHERE fid=26;
复制代码

解释:例:
UPDATE cdb_threads SET fid=105 WHERE fid=41;

41是源论坛的fid号,105即目标论坛新建的同样版块的fid号。

4、到这里,所有数据操作已经成功了,请看仔细,以上的数据库升级,都是在源论坛操作,而不是你要合并到的目标论坛。

数据升级完以后该合并了。这里用到了UE。

把合并完的数据,用4.1或者PHPMYADMIN的备份功能,将单独的表备份出来。例如:我先合并会员,就备份出cdb_memberfields表和cdb_members表。

然后用UE打开,将源论坛中的数据复制到目标论坛的数据。例如:会员的合并。
在源论坛的数据库中查找cdb_memberfields,下面的INSERT INTO的内容,直到-- 表的结构 `cdb_members`前,全都是。全部复制,然后粘贴到目标论坛的cdb_memberfields表的最后。其他表的操作同上。按照此操作,将帖子、主题、附件等信息全部合并。

至此,所有数据已经合并成功。推荐用PHPMYADMIN或者MYSQLTOOL还原到目标论坛。

有什么问题大家可以回贴提问,进行完善。


[ 本帖最后由 yznhysf 于 2006-5-7 08:33 编辑 ]
 楼主| yznhysf 发表于 2006-4-26 21:49:03 | 显示全部楼层
后续问题整理:

1。各页面模板,PS:不是版区模板,版区模板可以在后台设置,是copy后的首页文件。 (已实现,方法见2楼。[color]

2。根据域名判断不同的页面,根据上次修改童虎老师的首页分版修改。
https://discuz.dismall.com/thread-274314-1-1.html(已实现)

3。首页三格显示定制版块的热门贴。(已实现)

查找index.php ,查找
  1. AND f.fid=t.fid
复制代码

后面添加
  1. AND f.fid!=10 AND f.fid!=11
复制代码

10和11版就是私密板块  感谢终结者4!

4。后续问题。。暂无。等待补充。


[ 本帖最后由 yznhysf 于 2006-5-11 16:35 编辑 ]
回复

使用道具 举报

 楼主| yznhysf 发表于 2006-4-26 21:57:18 | 显示全部楼层
根据域名判断首页。

  1. <?php
  2. $domain_year="bbs.1001year.net";
  3. $domain_cate="1001cate.com";
  4. $domain_pet="1001pet.com";
  5. $domain_1001qb="1001qb.com";
  6. $dot_year_url="year.php";
  7. $dot_cate_url="cate.php";
  8. $dot_pet_url="pet.php";
  9. $dot_1001qb_url="1001qb.php";
  10. if(($HTTP_HOST=="$domain_year"))
  11. {
  12. Header("Location: $dot_year_url");
  13. }
  14. elseif(($HTTP_HOST=="$domain_cate")or($HTTP_HOST=="www.$domain_cate")or($HTTP_HOST=="bbs.$domain_cate"))
  15. {
  16. Header("Location: $dot_cate_url");
  17. }
  18. elseif(($HTTP_HOST=="$domain_pet")or($HTTP_HOST=="www.$domain_pet")or($HTTP_HOST=="bbs.$domain_pet"))
  19. {
  20. Header("Location: $dot_pet_url");
  21. }
  22. else
  23. {
  24. Header("Location: $dot_1001qb_url");
  25. }
  26. ?>
复制代码


PS:可以用在好多地方。呵呵。希望对大家有用。

不同主页不同模板,临时方法:

在index.php根据玉米转向的时候,转向地址为 网页名+?styleid= 皮肤编号。

  1. $dot_cate_url="cate.php?styleid=8";
复制代码

  1. <?php

  2. $styleid=9;
复制代码

[ 本帖最后由 yznhysf 于 2006-5-8 15:10 编辑 ]
回复

使用道具 举报

 楼主| yznhysf 发表于 2006-4-26 22:09:36 | 显示全部楼层
没人用到?
回复

使用道具 举报

 楼主| yznhysf 发表于 2006-4-26 22:22:49 | 显示全部楼层
没人。。。睡觉。。。伤心。。。
回复

使用道具 举报

CS1.3 发表于 2006-4-26 22:28:09 | 显示全部楼层
支持楼主
最近一直在找合并论坛的教程帖呢
回复

使用道具 举报

 楼主| yznhysf 发表于 2006-4-27 08:30:43 | 显示全部楼层
感谢,可惜就这样沉了,好汗!
回复

使用道具 举报

 楼主| yznhysf 发表于 2006-4-27 09:11:29 | 显示全部楼层
就,没人需要?汗!
回复

使用道具 举报

阿爆 发表于 2006-4-27 09:43:47 | 显示全部楼层
先顶再看,特别需要了已经
回复

使用道具 举报

 楼主| yznhysf 发表于 2006-4-27 10:19:14 | 显示全部楼层
亲爱的朋友们啊,没人需要吗?自己顶下好了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 02:49 , Processed in 0.044952 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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