修改一个“在线报名”表单,在原有的“姓名”、“电话”基础上,增加一个“所在城市”字段。
第一步:修改前端提交页面 (通常是 plus/diy.php 或自定义模板)
这是用户填写和提交表单的页面,我们需要在这里增加新的输入框。
-
找到你的表单模板文件
- 如果你使用的是系统默认的
plus/diy.php,那么直接修改这个文件。 - 如果你使用的是在后台“自定义表单”中创建的,并且指定了模板,那么修改你指定的那个模板文件(
templets/plus/diy_form.htm)。
- 如果你使用的是系统默认的
-
在HTML表单中增加新的字段 打开这个文件,找到
<form>标签内部,在你希望的位置添加新的输入项。关键点:
name属性的值必须和你在后台添加的字段名完全一致(不区分大小写,但最好保持一致)。type属性可以是text(文本),select(下拉框),radio(单选),checkbox(多选) 等。- 为了用户体验,最好给每个输入项加上
<label>
示例代码:
假设你原来的表单是这样:
<form action="/plus/diy.php" enctype="multipart/form-data" method="post"> <input type="hidden" name="action" value="post" /> <input type="hidden" name="diyid" value="1" /> <!-- 这个值是你的表单ID --> <input type="hidden" name="do" value="2" /> <p>姓名:<input type="text" name="name" id="name" /></p> <p>电话:<input type="text" name="tel" id="tel" /></p> <p><button type="submit">提交</button></p> </form>现在我们增加一个“所在城市”的下拉选择框:
<form action="/plus/diy.php" enctype="multipart/form-data" method="post"> <input type="hidden" name="action" value="post" /> <input type="hidden" name="diyid" value="1" /> <!-- 你的表单ID --> <input type="hidden" name="do" value="2" /> <p> <label for="name">姓名:</label> <input type="text" name="name" id="name" /> </p> <p> <label for="tel">电话:</label> <input type="text" name="tel" id="tel" /> </p> <p> <label for="city">所在城市:</label> <select name="city" id="city"> <option value="北京">北京</option> <option value="上海">上海</option> <option value="广州">广州</option> <option value="深圳">深圳</option> </select> </p> <p><button type="submit">提交</button></p> </form>
第二步:在织梦后台添加新字段
这是最核心的一步,需要在数据库中为你的表单创建新的列。
-
登录织梦后台 (
/dede/目录)。 -
进入自定义表单管理
- 在左侧菜单中找到 【核心】 -> 【自定义表单】。
-
添加新字段
- 在自定义表单列表中,点击你想要修改的那个表单的 【字段管理】。
- 点击 【添加新字段】。
- 在弹出的页面中,填写字段信息:
- 字段名称:
city(必须和第一步中input的name属性值完全一致) - 字段别名:
所在城市(这个是后台显示用的,可以写中文) - 字段类型:
select(因为我们用的是下拉框,根据你的需要选择,如text,radio等) - 字段值:
北京,上海,广州,深圳(如果是select或radio/checkbox,在这里填写选项,用英文逗号隔开) - 默认值: (可选,可以留空或设置一个默认选项)
- 是否为必填项: 勾选此项,用户就必须填写这个字段才能提交。
- 数据校验: (可选,如“手机号”、“邮箱”等,我们这里可以不选)
- 显示顺序: (数字,越小越靠前)
- 字段名称:
- 点击 【保存】。
-
更新缓存
- 字段添加完成后,系统会提示你更新表单缓存,请务必去 【系统】 -> 【一键更新网站】 -> 【更新数据库缓存】,执行一次更新,否则,前台可能无法正常提交或后台看不到新字段。
第三步:修改后台处理逻辑 (通常是 plus/diy.php)
diy.php 负责接收前端提交的数据并将其存入数据库,默认情况下,它会把所有 POST 过来的数据都存入,所以通常不需要修改,如果你对数据有特殊处理需求(比如数据加密、格式化等),就需要在这里修改。
默认的 diy.php 逻辑分析:
// ... 前面的代码 ...
// 获取所有POST数据
$_POST['time'] = time(); // 添加提交时间
$addvalue = '';
foreach($_POST as $k=>$v){
if($k == 'action' || $k == 'diyid' || $k == 'do' || $k == 'dede_fields' || $k == 'dede_fieldshash') continue;
$addvalue .= "'$v',";
}
$addvalue = trim($addvalue, ',');
// 构建SQL语句
$query = "INSERT INTO `{$diy->table}` (`{$diy->addtablearr[0]}`, `{$diy->addtablearr[1]}`, `{$diy->addtablearr[2]}`, `{$diy->addtablearr[3]}`) VALUES ($addvalue)";
// ... 执行SQL ...
这段代码会遍历所有 POST 数据,跳过系统保留字段(action, diyid 等),然后将剩下的字段拼接成SQL语句并执行,因为我们的新字段 city 也会被 $_POST 接收到,所以它会自动被包含在 $addvalue 中,并最终存入数据库。
什么情况下需要修改? 假设你想在存入数据库前,对“城市”字段做一些处理,比如统一转换为大写:
// ... 在foreach循环内部修改 ...
foreach($_POST as $k=>$v){
if($k == 'action' || $k == 'diyid' || $k == 'do' || $k == 'dede_fields' || $k == 'dede_fieldshash') continue;
// 特殊处理城市字段
if($k == 'city') {
$v = strtoupper($v); // 转换为大写
}
$addvalue .= "'$v',";
}
注意: 除非有特殊需求,否则强烈建议不要修改 diy.php,保持其默认行为最稳定。
第四步:修改后台显示和管理
现在数据已经存入数据库,我们需要在后台能看到并管理这个新字段。
-
检查数据列表
- 回到 【核心】 -> 【自定义表单】,点击你表单的 【数据管理】。
- 在数据列表页面,你应该能看到新增的“所在城市”列,如果看不到,请再次执行 【更新数据库缓存】。
-
修改数据查看/编辑页面 (可选)
- 如果你想在点击“查看”或“编辑”单条数据时,页面布局更好看,可以修改模板。
- 进入 【核心】 -> 【自定义表单】,点击 【查看表单】。
- 系统会显示一个预览,并让你选择修改哪个模板,通常它会指向
templets/diy_list.htm(列表页) 和templets/diy_preview.htm(预览/编辑页)。 - 打开
diy_preview.htm,修改HTML结构,把city字段对应的代码调整到你想要的位置。
第五步:修改邮件通知模板 (可选)
如果你的表单提交后需要发送邮件通知管理员,你还需要修改邮件模板,以便在新邮件中包含这个字段。
- 进入 【核心】 -> 【自定义表单】,点击你表单的 【邮件模板】。
- 编辑框中,使用
[field:字段名]的语法来调用字段值。- 中加入:
用户提交了新的报名信息: 姓名:[field:name] 电话:[field:tel] 所在城市:[field:city] <-- 新增的这一行
- 中加入:
- 保存设置。
总结与注意事项
| 步骤 | 操作文件/位置 | 关键点 |
|---|---|---|
| 修改前端 | plus/diy.php 或自定义模板 |
input 的 name 属性必须和后台字段名一致。 |
| 后台加字段 | 【核心】->【自定义表单】->【字段管理】 |
字段名是核心,必须和前端 name 一致。更新缓存是必须的! |
| 修改处理逻辑 | plus/diy.php |
默认无需修改,除非有特殊的数据处理需求。 |
| 修改后台显示 | 【核心】->【自定义表单】->【数据管理】 |
新字段通常自动显示,如需调整布局,修改 diy_preview.htm。 |
| 修改邮件通知 | 【核心】->【自定义表单】->【邮件模板】 |
使用 [field:字段名] 语法在新邮件中显示字段。 |
重要提醒:
- 备份数据! 在修改任何文件或数据库结构之前,请务必备份你的网站文件和数据库。
- 字段名规范: 建议使用英文小写字母、数字和下划线,
user_name,避免使用中文或特殊符号,这能减少很多潜在的麻烦。 - 权限问题: 确保你的Web服务器(如Apache/Nginx)对你要修改的文件(如
diy.php)有写入权限,尤其是在提交表单时。
按照以上步骤,你就可以成功地为织梦自定义表单增加、修改任何字段了。
