dede自定义表单数据如何调用?

99ANYc3cd6
预计阅读时长 20 分钟
位置: 首页 DEDE建站 正文
  1. 创建自定义表单:在前台通过表单让用户提交数据,并将数据保存到数据库中。
  2. 调用并显示数据:在后台模板文件(通常是列表页和内容页)中,通过SQL语句查询并显示数据库中保存的数据。

下面我将详细讲解这两个步骤,并提供完整的代码示例。

dede调用自定义表单数据库
(图片来源网络,侵删)

第一步:创建自定义表单并提交数据

在调用数据之前,你必须先有一个可以提交数据的表单。

在后台创建自定义表单

  1. 登录你的DedeCMS后台。

  2. 在左侧菜单栏找到 “核心” -> “自定义表单”

  3. 点击 “增加自定义表单”

    dede调用自定义表单数据库
    (图片来源网络,侵删)
  4. 填写表单信息

    • 表单名称:给你的表单起一个名字,在线报名”、“留言反馈”等,这个名字会生成数据表的前缀,如 dede_addonexample
    • 数据表:系统会自动根据表单名称生成,如 dede_addon18 (数字是随机的),一般无需修改。
    • 列表模板:设置用于展示所有提交记录的页面模板。
    • 发布模板:设置用户提交成功后跳转到的页面模板。
    • 默认排序:设置后台数据列表的默认排序方式,通常是按 id 降序。
  5. 添加表单字段

    • 点击下方的 “添加字段”
    • 字段名:数据库中的字段名,只能使用英文、数字和下划线,name, tel, content
    • 字段提示:在前台表单中显示给用户的提示文字,您的姓名”、“联系电话”、“留言内容”。
    • 字段类型:根据需要选择,如文本框(text)多行文本(textarea)单选(radio)多选(checkbox)下拉(select)等。
    • 字段值:对于单选、多选、下拉等类型,在这里填写选项,用逗号分隔,男,女
    • 是否必填:设置该字段是否为必填项。
    • 后台列表显示:勾选此项,该字段将显示在后台的数据管理列表中。
    • 其他选项:如默认值、最大长度等,根据需要设置。
  6. 完成所有字段添加后,点击 “保存”“保存并生成表单页面”,系统会自动创建数据表。

生成前台表单页面

创建表单后,DedeCMS可以自动生成一个包含表单代码的HTML页面。

  1. 在“自定义表单”管理页面,找到你刚刚创建的表单。
  2. 在操作栏点击 “选择” -> “生成表单页面”
  3. 选择一个模板(可以使用默认的),点击“生成”。
  4. 生成后,你可以在网站的前台访问这个页面,就能看到一个可以提交数据的表单了。

生成的表单代码示例

<form name='myform' action='/plus/diy.php' enctype='multipart/form-data' method='post'>
    <input type='hidden' name='action' value='post' />
    <input type='hidden' name='diyid' value='1' />  <!-- 1 是你的自定义表单ID -->
    <input type='hidden' name='do' value='2' />
    <p>您的姓名:<input type='text' name='name' id='name' class='int' /></p>
    <p>联系电话:<input type='text' name='tel' id='tel' class='int' /></p>
    <p>留言内容:<textarea name='content' id='content' rows='5' cols='50'></textarea></p>
    <p><input type='submit' name='submit' value='提交' class='btn' /></p>
    <input type='hidden' name='dede_fields' value='name,text;tel,text;content,textarea' />
    <input type='hidden' name='dede_fieldshash' value='b6e4a4e2e8a3f0c9a3e1a3f0c9a3e1a3' /> <!-- 这个hash值会变,不要手动改 -->
</form>

第二步:调用自定义表单的数据

数据提交后,都保存在 dede_addonX (X是数字) 这张表里,我们需要在模板中使用 {dede:sql} 标签来查询和显示这些数据。

核心标签:{dede:sql}

{dede:sql} 是DedeCMS执行原生SQL查询的标签。

基本语法

{dede:sql sql='查询语句'}
    // 循环输出内容
    [field:字段名/]
{/dede:sql}

在列表页(如首页、列表页)调用数据

假设我们要在首页展示最新的5条报名信息。

  1. 找到你的数据表名

    • 进入后台“自定义表单”,点击你创建的表单进入管理。
    • 在顶部可以看到数据表名,数据表:dede_addon18
  2. 编写SQL查询语句

    • 我们需要查询 dede_addon18 这张表。
    • 为了安全,最好加上 arcrank > -1 的条件,这可以过滤掉被管理员删除或审核未通过的数据(虽然自定义表单默认没有这个字段,但加上是好习惯)。
    • 按主键 id 降序排列,并限制只查询5条。
  3. 在模板中插入代码: 打开你想要显示数据的模板文件(index.htm),在合适的位置插入以下代码:

<h3>最新报名信息</h3>
<ul>
    {dede:sql sql='SELECT * FROM `dede_addon18` WHERE arcrank > -1 ORDER BY id DESC LIMIT 0,5'}
        <li>
            姓名:[field:name/] | 
            电话:[field:tel/] | 
            时间:[field:posttime function="MyDate('Y-m-d H:i:s',@me)"/]
        </li>
    {/dede:sql}
</ul>

代码解析

  • sql='...':里面是完整的SQL查询语句。
  • FROM dede_addon18:替换成你自己的数据表名。
  • LIMIT 0,5:从第0条开始,查询5条。LIMIT 5 也可以。
  • [field:name/]:循环输出 name 字段的内容。
  • [field:posttime function="MyDate('Y-m-d H:i:s',@me)"/]posttime 是DedeCMS默认添加的时间字段,使用 function 对其进行格式化,显示为 年-月-日 时:分:秒 的格式。

分页调用自定义表单数据

如果数据量很大,需要分页显示,可以使用 {dede:sql}pagesize 属性。

  1. 编写带分页的SQL语句: 我们需要用 COUNT(*) 来获取总记录数,用于分页。

  2. 在模板中插入代码: 通常我们会创建一个专门的列表页模板,list_bm.htm

<h3>所有报名信息</h3>
<!-- 循环输出列表数据 -->
<ul>
    {dede:sql sql='SELECT * FROM `dede_addon18` WHERE arcrank > -1 ORDER BY id DESC' pagesize='10'}
        <li>
            姓名:[field:name/] | 
            电话:[field:tel/] | 
            时间:[field:posttime function="MyDate('Y-m-d H:i:s',@me)"/]
        </li>
    {/dede:sql}
</ul>
<!-- 分页链接 -->
<div class="dede_pages">
    <ul>
        <li><span class="pageinfo">共 <strong>{dede:sql sql='SELECT COUNT(*) as c FROM `dede_addon18` WHERE arcrank > -1'}[field:c/]{/dede:sql}</strong> 条记录</span></li>
        {dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
    </ul>
</div>

代码解析

  • {dede:sql ... pagesize='10'}pagesize 属性指定每页显示10条记录。
  • {dede:pagelist ...}:这是DedeCMS的分页标签,它会自动处理上一页、下一页、页码等逻辑,它依赖于 {dede:sql} 中的 pagesize 属性。
  • 注意:分页的总数查询 {dede:sql sql='SELECT COUNT(*) as c FROM ...'} 是必须的,它为分页系统提供总数据量。

重要注意事项

  1. 数据表名dede_addonX 中的 X 是随机生成的,每次创建新表都可能不同,务必进入后台“自定义表单”管理页面确认你的准确表名。
  2. 字段名:SQL查询中使用的字段名必须和你在后台添加字段时填写的“字段名”完全一致,区分大小写。
  3. 安全性:直接使用 {dede:sql} 执行SQL有一定风险,如果SQL语句被恶意篡改可能导致数据泄露,请确保你的网站没有SQL注入漏洞,并且只从可信的地方获取SQL语句,不要在前台让用户可以任意提交SQL。
  4. arcrank 字段:虽然自定义表单默认没有 arcrank 字段,但DedeCMS的很多底层查询都会带上 WHERE arcrank > -1 这个条件,加上它可以避免一些潜在的意外问题,如果你的数据表里确实没有这个字段,数据库会忽略它,所以加上也无妨。
  5. 调试:如果数据显示不出来,最有效的调试方法是用 var_dumpprint_r 输出查询结果。
    {dede:sql sql='SELECT * FROM `dede_addon18` LIMIT 1'}
        <pre>
        <?php
            $arr = $GLOBALS['dsql']->GetArray();
            print_r($arr);
        ?>
        </pre>
    {/dede:sql}

    这会打印出第一条记录的所有字段和值,帮助你确认表名、字段名和数据是否正确。

通过以上步骤,你就可以灵活地在DedeCMS的任何地方调用和展示自定义表单的数据了。

-- 展开阅读全文 --
头像
dede如何删除调用手机号码?
« 上一篇 01-10
中缀转后缀表达式C语言实现步骤如何?
下一篇 » 01-10
取消
微信二维码
支付宝二维码

目录[+]