当前位置 : 主页 > 网站建设 > 正文

DedeCMS自定义表单导出当天、两天的部分Excel数据

原创

重庆seo2021-01-14 16:52:55阅读()SQL命令自定义表单A+ / A-

现在很多人会直接通过在线客服软件或直接拨打电话来与网站客服人员取得联系,早期很少有人长期管理后台,多数网站还是像企业黄页一样无人值守,只留下电话联系。

留言或表单的缺点很明显,用户提交表单后,没有给管理者任何信息提示,需要打开后台才看得到,因此经常会错过很多宝贵的商机。随着互联网和公司业务的发展,很多公司已配备了在线客服人员,使用百度商桥(已升级为爱番番)、53KF等客服软件与用户进行沟通,即使不在电脑前也能用手机APP处理对话。

但并不是所有公司都愿意配这样的客服人员,中小型公司还是愿意用社交软件QQ(企业/个人)、微信作为沟通工具。很多时候我们会运用表单获取用户信息以达到营销目的,同时第一时间发送通知给指定的邮箱(QQ、163等),参考文章《DedeCMS表单提交发送到指定邮箱与前台设置》。

为方便管理多个表格的大量数据,需要把数据导出成表格,写过《DedeCMS把自定义表单导出Excel》的文章,但数据多了就会全部导出来。如果只需要导出部分数据,就需要添加附加条件。

打开/dede/diy_list.php,找到

else
{
    showmsg('未定义操作', "-1");
}

在这句之前添加(如果已经按照上文修改过,只需要增加下面加粗部分)

//by7
else if($action == 'push')
{
    header("Content-type:application/vnd.ms-excel");
    header("Content-Disposition:attachment;filename={$diy->name}_".date("Y-m-d").".xls");//表格命名方式
    $fieldlist = $diy->getFieldList();
    echo "<table><tr>";
    foreach($fieldlist as $field=>$fielddata)
    {
        echo "<th>{$fielddata[0]}</th>";
    }
    echo "<th>状态</th>";
    echo "</tr>";
    $sql = "SELECT * FROM {$diy->table} WHERE DATEDIFF(timesj,NOW())>=-4 ORDER BY id DESC"; //timesj为表单的自定义字段名
    $dsql->SetQuery($sql);
    $dsql->Execute('t');
    while($arr = $dsql->GetArray('t'))
    {
        echo "<tr>";
        foreach($fieldlist as $key => $field)
        {
            echo "<td>".$arr[$key]."</td>";
        }
        $status = $arr['ifcheck'] == 1 ? '已审核' : '未审核';
        echo "<td>".$status."</td>";
        echo "</tr>";
    }
    echo "</table>";
}
//by7

注意这个SQL语句的中的

SELECT * FROM {$diy->table} WHERE DATEDIFF(timesj,NOW())>=-4 ORDER BY id DESC   //调用的是前三天数据,包括当天
SELECT * FROM {$diy->table} WHERE DATEDIFF(timesj,NOW())>=0 ORDER BY id DESC   //调用的是当天数据
SELECT * FROM {$diy->table} WHERE DATEDIFF(timesj,NOW())>=-1 ORDER BY id DESC   //调用的是昨天数据
SELECT * FROM {$diy->table} WHERE DATEDIFF(timesj,NOW())>=-2 ORDER BY id DESC   //调用的是前二天数据

以此类推。如果想调用上周、上上周、上个月等具体某个时间端就需要另外的写法了。比如 between and的写法。

where timesj between '2021-1-14 00:00:00' and '2021-2-14 00:00:00'

也可以用下面的DATEDIFF()函数:

//当n为负数时,表示过去第n天的数据
SELECT * FROM 表名WHERE DATEDIFF(字段,NOW())=n

//n天内
SELECT * FROM 表名 WHERE DATEDIFF(字段,NOW())<n AND DATEDIFF(字段,NOW())>=0

//包含当天
SELECT * FROM 表名 WHERE DATEDIFF(字段,NOW())<=0 AND DATEDIFF(字段,NOW())>-n

//不包含当天
SELECT * FROM 表名 WHERE DATEDIFF(字段,NOW())<0 AND DATEDIFF(字段,NOW())>-n

注意:因为对索引列使用函数会导致索引失效,如果查询时需要使用到索引,使用MySQL DATE_SUB() 函数。

织梦的表单缺点很多,比如缺少了发布人IP、时间、不能防止恶意提交、管理表单数据也比较麻烦,不能全选、反选、也不能导出Excel表格方便管理。吖七对织梦的表单提交做了很多修改,下面拓展文章希望能满足大家的需要。

    扩展阅读

    本文地址:https://www.vi586.com/web/766.html
    版权声明:原创文章,版权归重庆SEO吖七所有,欢迎分享本文,支持原创,转载请保留出处

    赞(52)