插件作者的标准出来了!Manyou诚邀开发者加盟!
“互联网平台开发者”特刊 有奖征集开发者
立即免费下载 Discuz!6.1.0正式版
Discuz! 6.1.0 使用说明
Discuz!NT2.5正式版发布
开放源码下载
UCenter Home 1.2 正式版发布
官方站 | 帮助文档
基于ECShop的网店托管-卖否
PHP就业培训直通车 | LAMP培训大连
Discuz!收费服务内容及价格
“感谢有你同行”手握手2008年数万元重奖志愿者
Discuz!/ECShop 专用官方虚拟主机
亿声传媒(Insenz)中秋祝福发送中
Comsenz 招聘信息
网店系统ECShop v2.6.0正式版火热发布
基于Discuz!的免费论坛空间5D6D
参与有奖社区调查 赢取台湾5日游
发新话题
打印

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

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

引用:
初次合并,有什么不足请高手指点,谢谢!
引用:
Discuz!4.1多论坛数据库手工合并手记
作者:鱼鱼  补充:阿贱
QQ:68329837
DZ交流群:815632
技术支持论坛:www.discuz.net  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,只能手动来了。数据大的论坛,找个高手写个程序检测好些。
检测完会员后,需要升级数据库,如下:(这里推荐选择发贴少的会员所在的论坛。)
复制内容到剪贴板
代码:
UPDATE `cdb_members` SET `username` = '臭鱼old' WHERE `username` = '臭鱼';
解释:此步是将会员里叫臭鱼的用户改名为臭鱼old,改成什么随便你咯。

3数据库升级一:主题+帖子+会员+附件的升级。
注意:这里所说的数据库升级,都是在源论坛进行的!因为要把数据合并到目标论坛,保持目标论坛数据不动。
也就是上面所说的那些重要的表,代码如下:
复制内容到剪贴板
代码:
UPDATE cdb_memberfields SET uid=uid+1839;
UPDATE cdb_members SET uid=uid+1839;
UPDATE cdb_threads SET authorid=authorid+1839;
UPDATE cdb_posts SET authorid=authorid+1839;
UPDATE cdb_threads SET tid=tid+3522;
UPDATE cdb_posts SET tid=tid+3522;
UPDATE cdb_posts SET pid=pid+23397;
UPDATE cdb_attachments SET tid=tid+3522;
UPDATE cdb_attachments SET pid=pid+23397;
UPDATE cdb_attachments SET aid=aid+8000;
当然,这里你要根据你目标论坛的会员数、主题数、帖子数和附件数量进行设置,比如:
复制内容到剪贴板
代码:
UPDATE cdb_memberfields SET uid=uid+1839;
是根据我的目标论坛的会员数,最后一个UID是1839,这样升级的时候就将源论坛里的UID全部加1839。
其他表内的数据也是根据这个来的,包括发贴量、主题数,都可以在你论坛看到。附件可以在后台查看ID号。

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

这里说的版块的升级,就是为了将源论坛的版块对应目标论坛新建的版块。代码如下:
复制内容到剪贴板
代码:
UPDATE cdb_threads SET fid=105 WHERE fid=41;
UPDATE cdb_threads SET fid=106 WHERE fid=42;
UPDATE cdb_threads SET fid=107 WHERE fid=27;
UPDATE cdb_threads SET fid=109 WHERE fid=38;
UPDATE cdb_threads SET fid=108 WHERE fid=34;
UPDATE cdb_threads SET fid=110 WHERE fid=13;
UPDATE cdb_threads SET fid=113 WHERE fid=17;
UPDATE cdb_threads SET fid=112 WHERE fid=16;
UPDATE cdb_threads SET fid=111 WHERE fid=15;
UPDATE cdb_threads SET fid=115 WHERE fid=43;
UPDATE cdb_threads SET fid=114 WHERE fid=19;
UPDATE cdb_threads SET fid=116 WHERE fid=14;
UPDATE cdb_threads SET fid=117 WHERE fid=23;
UPDATE cdb_threads SET fid=118 WHERE fid=25;
UPDATE cdb_threads SET fid=119 WHERE fid=26;
UPDATE cdb_posts SET fid=105 WHERE fid=41;
UPDATE cdb_posts SET fid=106 WHERE fid=42;
UPDATE cdb_posts SET fid=107 WHERE fid=27;
UPDATE cdb_posts SET fid=109 WHERE fid=38;
UPDATE cdb_posts SET fid=108 WHERE fid=34;
UPDATE cdb_posts SET fid=110 WHERE fid=13;
UPDATE cdb_posts SET fid=113 WHERE fid=17;
UPDATE cdb_posts SET fid=112 WHERE fid=16;
UPDATE cdb_posts SET fid=111 WHERE fid=15;
UPDATE cdb_posts SET fid=115 WHERE fid=43;
UPDATE cdb_posts SET fid=114 WHERE fid=19;
UPDATE cdb_posts SET fid=116 WHERE fid=14;
UPDATE cdb_posts SET fid=117 WHERE fid=23;
UPDATE cdb_posts SET fid=118 WHERE fid=25;
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 编辑 ]
灌水了 号封了 人也应该要走了
看透了 无所了 禽兽也要退伍了
后续问题整理:

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

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

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

查找index.php ,查找
复制内容到剪贴板
代码:
AND f.fid=t.fid
后面添加
复制内容到剪贴板
代码:
AND f.fid!=10 AND f.fid!=11
10和11版就是私密板块  感谢终结者4!

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


[ 本帖最后由 yznhysf 于 2006-5-11 16:35 编辑 ]
灌水了 号封了 人也应该要走了
看透了 无所了 禽兽也要退伍了
根据域名判断首页。
复制内容到剪贴板
代码:
<?php
$domain_year="bbs.1001year.net";
$domain_cate="1001cate.com";
$domain_pet="1001pet.com";
$domain_1001qb="1001qb.com";
$dot_year_url="year.php";
$dot_cate_url="cate.php";
$dot_pet_url="pet.php";
$dot_1001qb_url="1001qb.php";
if(($HTTP_HOST=="$domain_year"))
{
Header("Location: $dot_year_url");
}
elseif(($HTTP_HOST=="$domain_cate")or($HTTP_HOST=="www.$domain_cate")or($HTTP_HOST=="bbs.$domain_cate"))
{
Header("Location: $dot_cate_url");
}
elseif(($HTTP_HOST=="$domain_pet")or($HTTP_HOST=="www.$domain_pet")or($HTTP_HOST=="bbs.$domain_pet"))
{
Header("Location: $dot_pet_url");
}
else
{
Header("Location: $dot_1001qb_url");
}
?>
PS:可以用在好多地方。呵呵。希望对大家有用。

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

在index.php根据玉米转向的时候,转向地址为 网页名+?styleid= 皮肤编号。
复制内容到剪贴板
代码:
$dot_cate_url="cate.php?styleid=8";
复制内容到剪贴板
代码:
<?php

$styleid=9;
[ 本帖最后由 yznhysf 于 2006-5-8 15:10 编辑 ]
灌水了 号封了 人也应该要走了
看透了 无所了 禽兽也要退伍了
没人用到?
灌水了 号封了 人也应该要走了
看透了 无所了 禽兽也要退伍了
没人。。。睡觉。。。伤心。。。
灌水了 号封了 人也应该要走了
看透了 无所了 禽兽也要退伍了
支持楼主
最近一直在找合并论坛的教程帖呢

Discuz! 6.1.0F (无UC版本)已发布 FreeDiscuz! 致力于 Discuz! 程序的技术支持与优化,精简化研究。
学会利用搜索,学会如何使用,学会亲自动手,学会自己分析。
低调做人,低调做事。

感谢,可惜就这样沉了,好汗!
灌水了 号封了 人也应该要走了
看透了 无所了 禽兽也要退伍了
就,没人需要?汗!
灌水了 号封了 人也应该要走了
看透了 无所了 禽兽也要退伍了
先顶再看,特别需要了已经
亲爱的朋友们啊,没人需要吗?自己顶下好了。
灌水了 号封了 人也应该要走了
看透了 无所了 禽兽也要退伍了
发新话题
版块跳转