DEDE批量导入excel数据到后台文章系统的开发教程


当前第2页 返回上一页

代码分析

1)第一步先判断问号后面是不是为空,即dopost=exdata&typeid=6&n=test1字符串是否为空,如果这个字符串都是空的话,其它,就不用操作了,直接通过出程序,显示:echo "密码或文件名错误!您无权做任何操作!";

只有当if(!empty($_GET))条件成立时,才有可能进入插入操作。

然后,获取typeid和do的值:

$typeid = $_GET['typeid'];
$dopost = $_GET['do'];

因为下面要对要插入到数据库表中数据时还要进行口令的判断,所以,这里获取do的值是必须的,但是,这里为什么一起要获取栏目id的值呢?因为,这里基本上要到最后一步才使用,为什么不等到使用时再获取呢?如果密码不对或其它原因的话,不能进行插入操作,那不是白白获取了$typeid的值,从代码优化的角度,这样不是最优的,但是,大家请注意,因为,下面要对获取到的$GET的数组进行操作,所以,为了保险起见,这时大这个地方先获取到栏目id的值,这样可以保证不会在后面出错,当然,如果您在开发时,能保证不会出错可以在使用$typeid时再获取也可以。

然后,判断口令是否正确,即if($dopost=="exdata")是否为真,若为真说明我们在浏览器地址栏输入的口令就是正确的,否则,就是错误的,如果出错出退出程序不做任何操作。

如果正确,则获取n的值,文件excel的文件名$inputFileName。

然后,通过PHPExcel类获取到excel文件里面的数据保存到数组$sheetData里面。

2)判断要插入的数据是否已经存在于表dede_addonshop里面。

查询附加表dede_addonshop里面的字段bio2,bio1,并把查询出来的一维数组放到二维数组$rowall里面。

因为,把一条数据插入到织梦系统里面后,其实,是在织梦的主表、附加表和微表进入了插入操作,所以,在插入前都要先判断一下插入的数据是不是在这三个表中都已经存在了,如果已经存在了就不要进入插入操作了。

3)插入数据库表时最大数据id的判断

当向主表或附加表或微表加插入数据库前,还要判断一下这时主表或附加表或微表里面最大的id,把这个id查询出来,进入对比即:$id = max($aid,$arcid,$tinyid);

这样对比以后获取到的$id的值就是最大的,获取这个最大的$id后,就可以在这个$id的基本上增加$id,例如,当前表中最大的id为9,那么,下面我们在插入数据时对应的id值就是从10开始,这是非常重要的,如果不做这个判断,那么,就会把原来的数据给覆盖掉。

3)遍历数组$sheetData插入数据

因为,通过PHPExcel获取到的数据是保存在$sheetData二维数据里面,类似array(array('a','b'),array('b','c')),所以,在遍历这个数组,然后,把这个数组里面的数据插入到织梦的主表、微表和附加表里面。

这里要注意$id = $id+1,这行代码为什么要做这行代码,是因为,如果没有这行代码那么,在插入数据时id的值一直是同一个,例如,$id=9,这样一直是9,这是不可能的,因为,一个网站面的每一篇文章的id都是不同的,如果全一样的话,可能网站里面显示数据就只有一条了,其它的全部被覆盖掉了。


标签:织梦DedeCMS

返回前面的内容

相关阅读 >>

让dedecms织梦后台支持上传bmp格式的图片的教程

不错的dedecms修改实用集锦

dedecms怎么设置当三级栏目为空时不显示同级栏目

织梦DedeCMS在搜索结果页按栏目分类显示搜索数据

dedecms调用文章简介限制字数的方法

dedecms任意页面调用栏目内容标签{dedefield.content}的方法

织梦DedeCMS内页、详情页中调用文章发布者信息的方法

dedecmsv5.7系统后台编辑文章中文标题发布失败的解决方法教程

dedecms织梦php7+删除不了后台栏目的解决方法

dedecms 设置调用新闻在新窗口打开

更多相关阅读请进入《织梦DedeCMS》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...