织梦留言表单多选框如何实现数据存储?

99ANYc3cd6
预计阅读时长 18 分钟
位置: 首页 织梦建站 正文

核心思路

标准的HTML多选框 <input type="checkbox"> 提交到数据库后,数据会是一个用逗号隔开的字符串,"选项1,选项2,选项3",我们需要:

织梦留言表单多选框
(图片来源网络,侵删)
  1. 后台:添加一个新的表单字段,用于接收这些逗号分隔的值。
  2. 数据库:为这个新字段创建一个对应的 TEXTVARCHAR 类型的列,用于存储字符串。
  3. 前台:在留言表单中添加多选框组,并确保其 name 属性与后台新增的字段名一致。

详细步骤

假设我们要为留言表单增加一个 “感兴趣的项目” 多选框,选项包括:网站建设, APP开发, UI设计

第一步:修改后台数据表

这是最关键的一步,你需要直接操作数据库。

  1. 登录你的数据库管理工具(如 phpMyAdmin)。

  2. 选择你的织梦数据库

    织梦留言表单多选框
    (图片来源网络,侵删)
  3. 找到留言表,通常表名是 dede_guestbook (前缀 dede_ 可能不同,请根据你的实际情况修改)。

  4. 为该表添加一个新的字段

    • dede_guestbook 表上,点击“结构”或“SQL”选项卡。
    • 执行以下 SQL 语句来添加一个名为 interest_projects 的字段,类型为 TEXT,这样可以存储较长的文本。
    ALTER TABLE `dede_guestbook` ADD `interest_projects` TEXT NOT NULL DEFAULT '';
    • SQL语句解释
      • ALTER TABLEdede_guestbook` 修改dede_guestbook` 这张表。
      • ADDinterest_projectsTEXT: 添加一个名为 interest_projects 的新字段,数据类型为 TEXT
      • NOT NULL DEFAULT '': 设置该字段值不能为空,默认值为空字符串。
  5. 刷新表结构,你应该能看到新添加的 interest_projects 字段了。

第二步:修改后台模板文件

现在我们需要让后台的“添加留言”表单能输入这个新字段。

织梦留言表单多选框
(图片来源网络,侵删)
  1. 找到后台模板文件

    • 文件路径通常为:/dede/templets/guestbook_add.htm
    • 备份这个文件,以防修改出错。
  2. 编辑 guestbook_add.htm

    • 用文本编辑器(如 VS Code, Sublime Text, Dreamweaver)打开它。
    • 找到合适的位置(比如其他表单字段的后面),添加以下HTML代码。
    <!-- 在合适位置添加以下代码 -->
    <tr>
      <td height="24" colspan="2" bgcolor="#f5f5f5">
        <strong>感兴趣的项目:</strong>
      </td>
    </tr>
    <tr>
      <td height="24" colspan="2">
        <label><input type='checkbox' name='interest_projects[]' value='网站建设' checked /> 网站建设</label>
        <label><input type='checkbox' name='interest_projects[]' value='APP开发' /> APP开发</label>
        <label><input type='checkbox' name='interest_projects[]' value='UI设计' /> UI设计</label>
      </td>
    </tr>
    • 代码解释
      • name='interest_projects[]'非常重要! 方括号 [] 告诉PHP,这是一个数组,这样所有被选中的选项的值都会被收集到 $_POST['interest_projects'] 这个数组中。
      • value='...':每个选项的值,这个值将会被存入数据库。
      • checked:表示默认选中“网站建设”这个选项。
  3. 保存修改

第三步:修改处理逻辑(PHP代码)

后台模板添加了,但提交数据时,PHP需要把数组转换成逗号分隔的字符串才能存入数据库。

  1. 找到后台处理文件

    • 文件路径通常为:/dede/guestbook_add.php
  2. 编辑 guestbook_add.php

    • 在文件中找到处理表单提交的代码段,通常在文件开头,会有类似 if($dopost == 'save') 的判断。
    • $msg 变量被赋值之前(即 if($msg == '') 这个判断里面),添加以下PHP代码。
    // 在 guestbook_add.php 中添加以下代码
    // 处理多选框
    if (isset($_POST['interest_projects']) && is_array($_POST['interest_projects'])) {
        $interest_projects = implode(',', $_POST['interest_projects']); // 将数组转换为逗号分隔的字符串
    } else {
        $interest_projects = ''; // 如果没有选择任何项,则设为空
    }
    // 将处理后的值添加到要入库的数据中
    // 假设你使用 $arct->Fields 来存储数据,请找到类似下面的代码
    // $arct->Fields['msg'] = $msg;
    // 在这行代码后面,添加:
    $arct->Fields['interest_projects'] = $interest_projects;
    • 代码解释
      • isset($_POST['interest_projects']):检查是否存在这个POST变量。
      • is_array($_POST['interest_projects']):确认它是一个数组(因为我们的 nameinterest_projects[])。
      • implode(',', ...):这是PHP的核心函数,它将数组元素用指定的分隔符(这里是逗号 )连接成一个字符串,数组 ['网站建设', 'UI设计'] 会被转换成 "网站建设,UI设计"
      • $arct->Fields['interest_projects'] = $interest_projects;:将转换好的字符串赋值给织梦的数据对象,以便存入数据库。
  3. 保存修改


第四步:修改前台模板文件(可选)

为了让访客在前台留言时也能使用这个多选框,你还需要修改前台的留言模板。

  1. 找到前台模板文件

    • 文件路径通常为:/templets/plus/guestbook.htm
  2. 编辑 guestbook.htm

    • 在合适的位置,添加与后台模板类似的HTML代码。
    <!-- 在前台留言表单的合适位置添加 -->
    <div class="form-group">
      <label>感兴趣的项目:</label>
      <div>
        <label><input type='checkbox' name='interest_projects[]' value='网站建设' checked /> 网站建设</label>
        <label><input type='checkbox' name='interest_projects[]' value='APP开发' /> APP开发</label>
        <label><input type='checkbox' name='interest_projects[]' value='UI设计' /> UI设计</label>
      </div>
    </div>
  3. 保存修改


第五步:修改后台列表和显示模板

为了让后台能显示这个新字段,你还需要修改后台列表和查看留言的模板。

  1. 修改后台列表模板

    • 文件路径:/dede/templets/guestbook_list.htm
    • 找到表头 <tr>,在合适的位置添加一列:
      <td width="150">感兴趣的项目</td>
    • 找到循环数据的 <tr>,在对应位置添加:
      <td>{dede:field.interest_projects/}</td>
  2. 修改后台查看留言模板

    • 文件路径:/dede/templets/guestbook_note.htm
    • 在合适的位置添加,用于显示该字段的值:
      <tr>
        <td>感兴趣的项目:</td>
        <td>{dede:field.interest_projects/}</td>
      </tr>

完成以上五个步骤后,你的织梦留言系统就成功支持了多选框功能了。

流程回顾:

  1. 数据库ALTER TABLE 添加 TEXT 字段。
  2. 后台模板 (guestbook_add.htm):添加 <input type="checkbox" name="xxx[]">
  3. 后台处理 (guestbook_add.php):用 implode() 将数组转为字符串并存入。
  4. 前台模板 (guestbook.htm):添加多选框,让访客能填写。
  5. 后台显示 (guestbook_list.htm, guestbook_note.htm):添加显示新字段的代码。

重要提示

  • 文件路径:如果你的织梦安装目录或自定义了模板,文件路径可能不同,请务必确认。
  • 备份数据:在操作数据库之前,请务必备份数据库,以防万一。
  • 测试:完成修改后,务必在前台和后台都进行测试,确保功能正常。
-- 展开阅读全文 --
头像
如何修改织梦验证码样式?
« 上一篇 04-23
织梦前台如何调用留言板?
下一篇 » 04-23

相关文章

取消
微信二维码
支付宝二维码

目录[+]