## 织梦DedeCMS插件开发实例教程:网上报名插件
### 文件结构
1. **enroll.php**:位于 `plus` 文件夹下。
2. **enroll.htm**:位于 `templets/plus` 文件夹下。
3. **adenroll.php**:位于 `dede` 文件夹下。
4. **adenroll.html**:位于 `dede/templet` 文件夹下。
5. **SQL 文件**:用于创建数据库表及插入数据。
### SQL 文件内容
“`sql
CREATE TABLE IF NOT EXISTS `dede_enroll` (
`id` int(4) NOT NULL auto_increment,
`name` varchar(20) NOT NULL,
`mail` varchar(30) NOT NULL,
`tag` tinyint(1) NOT NULL default ‘0’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
INSERT INTO `dede_plus` (`aid`, `plusname`, `menustring`, `mainurl`, `writer`, `isshow`, `filelist`) VALUES
(30, ‘网上报名’, ”, ”, ‘g1000’, 1, ”);
“`
### enroll.php 文件代码
“`php
<!–?php
//*******要先包含common.inc.php session_start(); 否则取不到session的值
//*******因为common.inc.php 有关于session路径的配置
include_once dirname(__FILE__).’./../include/common.inc.php’;//包含配置文件
session_start();
require_once DEDEINC.”/arc.partview.class.php”;//包含partiew类
//*****实例化 这个类的作用是得到头部导航栏和尾部信息 若不需要可以使用dedetemplate.class.php 这个类
$pv = new PartView();
if($_POST){
if( CheckEmail($_POST[‘mail’])==false){//验证邮箱 方法在common.func.php 公用函数
ShowMsg(‘邮箱格式错误’,’1′);
exit();
}
if($_POST[‘name’]==””){
ShowMsg(‘用户名不能为空’,’1′);
exit();
}else{
$name=htmlspecialchars($_POST[‘name’]);
}
if($_SESSION[‘dd_ckstr’]!=strtolower($_POST[‘validation’])){//验证 验证码 必须转换成小写
ShowMsg(‘验证码错误’,1);
exit();
}
$sql=”insert into `cms_enroll`(name,mail) values(‘$name’,’$_POST[mail]’)”;
//*******$db可直接使用 系统自动实例化了dedesql.class.php
$affected = $db>ExecuteNoneQuery2($sql);//执行一条语句 返回影响值
if($affected){
ShowMsg(‘报名成功’,1);
}
}else{
$pv>SetTemplet(DEDETEMPLATE.’/plus/enroll.htm’);//设置模板
$pv>Display();//显示页面
?>
“`
### enroll.htm 文件代码
“`html
{dede:include filename=”../default/head.htm”/}
姓 名:
邮 箱:
验证码:<input type="text" name="validat}
“`
### adenroll.php 文件代码
“`php
<?php
require_once(dirname(__FILE__).’/config.php’);//后台配置文件 检查登陆 配置信息
require_once(DEDEINC.”/datalistcp.class.php”);//包含分页类
if($_GET[‘action’]$_GET[‘id’]){
if($_GET[‘action’]==’pass’){//各种操作
$db>ExecuteNoneQuery(“update cms_enroll set `tag`=1 where id=’$_GET[id]’”);
ShowMsg(‘录取成功’,’adenroll.php’);
}
if($_GET[‘action’]==’nopass’){
$db>ExecuteNoneQuery(“update cms_enroll set `tag`=0 where id=’$_GET[id]’”);
ShowMsg(‘取消录取’,’adenroll.php’);
}
if($_GET[‘action’]==’delete’){
$db>ExecuteNoneQuery(“delete from cms_enroll where id=’$_GET[id]’”);
ShowMsg(‘删除成功’,’adenroll.php’);
}
}else{
$dl = new DataListCP();
$dl>pageSize = 10;//每页显示10条
$dl>SetTemplate(‘./templets/adenroll.htm’);//载入模板
$sql=”select * from cms_enroll”;
$dl>SetSource($sql);//执行sql 不能与$dl>SetTemplate 颠倒
$dl>Display();//显示页面
?>
“`
### adenroll.html 文件代码
“`html
{dede:datalist}
{/dede:datalist}
| 姓名 | Email | 状态 | 操作 |
| | | | |
| {dede:field.name /} | {dede:field.mail /} | {dede:if field.tag==0}
未录取
{else}
已录取
{/dede:if} | [编辑][删除] |“`