织梦二次开发

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 949|回复: 0

[共用功能] 织梦“删除自定义表单”功能分析教程

[复制链接]

1046

主题

1109

帖子

5334

积分

超级版主

Rank: 8Rank: 8

金币
256
贡献
3959
发表于 2015-11-9 13:10:37 | 显示全部楼层 |阅读模式
  织梦自定义表单的删除指的是如下图所示内容:

织梦自定义表单的删除

 织梦自定义表单的删除


  无论是删除自定义表单,还是编辑(更改)自定义表单都分为两部分,一是点击删除或编辑时,显示要删除或编辑的内容,也就是删除或编辑的确认对话界面,与编辑不一样,删除只是一个提示对话框吧了,所以,删除功能织梦系统dedecms直接使用提示窗口类。

  删除功能处理文件是diy_edit.php,代码是else if($dopost=="delete")代码里面的内容如下图所示:

删除功能代码结构

删除功能代码结构

  
  我把这段代码分为三部分,第一部分是实现删除自定义表单功能的公共部分,第二部分是提示确认删除部分,第三部分是执行删除功能部分,把这个功能分成这三部分,再来分析这个功能就简单多了。

  第一部分:

  设置时间限制,这里指的是执行代码的时间限制,也就是删除自定义表单限制,这里参数为0,表示没有时间限制:
  1. @set_time_limit(0);
复制代码


  限制有权限的人才可以删除操作:CheckPurview('c_Del');

  查询要删除的自定义表单信息,这个无论在是提示阶段还是在执行删除阶段,都要用到要删除的内容:

  1.     $row = $dsql->GetOne("SELECT * FROM #@__diyforms WHERE diyid='$diyid'");
  2.     if(empty($job)) $job = "";
复制代码


  第二部分:当点击“删除”按扭后,进入到如下界面:

删除界面

删除界面


  画线的就是要删除的自定义表单,这个也是上面查询出来的$row获取的信息$row['name'],我们看到的这个界面,就是上面第二部分代码,即如下图所示代码:

获取删除表单信息

获取删除表单信息

  
  这是一个提示窗口类实例化的相关函数调用,这里就不一一分析了,在织梦基地已经有专门的教程分析这个了。

  第三部分:这一部分代码功能就是实现的点击第二部分的“确定”删除按扭后,执行的代码,如果不看代码我们猜测一下就是把通过delete语句,把自定义表单删除。但是,要注意要删除一个自定义表单,就要看看添加自定义表单做了哪些事,当我们添加完一个自定义表单后,其实,是在自定义表单表#@__diyforms里面插入了添加的表单的信息,并且,在数据库里面建立了自定义表单表字段table里面对应的数据库表。

  例如,本例中要删除的自定义表单"建站客户留言",它对应的数据库表为:

表单数据库表

表单数据库表


  所以,我们即要把在自定义表单表#@__diyforms把添加的表单信息删除掉,也要把表dede_diyform2删除掉。要删除掉这个dede_diyform2表,先查询一下#@__diyforms里同的table字段对应的表dede_diyform2(因为,这里我知道要删除这个表,但是,我们写程序时,不知道用户删除哪个表,所以,这里要查询一下):
  1. $row = $dsql->GetOne("SELECT `table` FROM `#@__diyforms` WHERE diyid='$diyid'",MYSQL_ASSOC);
复制代码


  然后,删除表:
  1. $dsql->ExecuteNoneQuery("DROP TABLE IF EXISTS `{$row['table']}`;");
复制代码


  这里使用drop table 写法,但是在中间还加了一个判断,这是一非常标准的写法,以后我们做织梦二次开发,如果要写类似的删除表的功能时,就要使用这种方法,既专业又简单,又不会出错。

  然后,删除表单信息:
  1. $dsql->ExecuteNoneQuery("DELETE FROM `#@__diyforms` WHERE diyid='$diyid'");
复制代码


  最后,提示删除成功,退出程序,自定义表单删除功能结束!
回复

使用道具 举报

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

本版积分规则

QQ|织梦二次开发

GMT+8, 2019-9-17 20:50 , Processed in 0.218274 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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