织梦cms
您所在的位置:封程中个人博客 > CMS > 织梦cms >

织梦cms 自定义表单导出功能的实现详细步骤

字号+ 作者:封程中 来源:封程中个人博客 2016-04-25 22:46 阅读(0) 我要评论(0)

今天帮人做了个织梦自定义表单导出功能的二次开发,下面简单介绍下所涉及到的代码改动和添加。 步骤: 1.打开/dede/templets/diy_main.htm 大概在第49行的地方加上 a href=....

今天帮人做了个织梦自定义表单导出功能的二次开发,下面简单介绍下所涉及到的代码改动和添加。

注意噢!这个是通用的!加完后  你所有的自定义表单 都可以导出!


步骤:

1.打开 /dede/templets/diy_main.htm   大概在第49行的地方加上

<a href="../plus/diy.php?action=push&diyid={dede:field.diyid/}" target="_blank">导出</a>

意思就是加个导出按钮。


2.打开 /plus/diy.php   在最下面加入以下代码

else if($action == 'push')

{

  $row = $dsql->GetOne("Select * From dede_diyforms where diyid='$diyid'");

  $ds = file(('/dede/inc/fieldtype.txt'));

foreach($ds as $d){

$dds = explode(',',trim($d));

$fieldtypes[$dds[0]] = $dds[1];

}

$fieldset = $row['info'];

$dtp = new DedeTagParse();

$dtp->SetNameSpace("field","<",">");

$dtp->LoadSource($fieldset);

$titleArray=array();

$titleName=array();

if(is_array($dtp->CTags)){

foreach($dtp->CTags as $ctag)

{

$itname = $ctag->GetAtt('itemname');

if($itname=='') echo "没指定";

$titleArray[] = $itname;

$titleName[]= $ctag->GetTagName();

}

}

header('Content-Type: application/vnd.ms-excel');

header('Content-Disposition: attachment; filename=demo.xls');

header('Pragma: no-cache');

header('Expires: 0');

$title =$titleArray;

include_once DEDEINC.'/datalistcp.class.php';

    if($diy->public == 2)

        $query = "SELECT * FROM `{$diy->table}` ORDER BY id DESC";

    else

        $query = "SELECT * FROM `{$diy->table}` WHERE ifcheck=1 ORDER BY id DESC";


    $datalist = new DataListCP();

    $datalist->pageSize = 10;

    $datalist->SetParameter('action', 'list');

    $datalist->SetParameter('diyid', $diyid);

    $datalist->SetSource($query);    

$rsArray = array();

$datalist->dsql->Execute('dlist',$datalist->sourceSql);

        $i = 0;

        while($arr=$datalist->dsql->GetArray('dlist'))

        {

        $i++;   

        $object = array(); 

        foreach ($titleName as $va){

        $object[]=$arr[$va];

        }

            $rsArray[$i] = $object;

            

        }

$data = $rsArray; 

echo iconv('utf-8', 'gbk', implode("\t", $title)), "\n";

foreach ($data as $value) {

echo iconv('utf-8', 'gbk', implode("\t", $value)), "\n";

}

exit;

}



就OK了。

思路很简单,先在列表页搞个可以触发导出的按钮,然后把需要导出的表头和内容查出来,然后以execle输出就好了。

希望 封程中 可以帮助到各位

来源:(QQ号:604849147),原创文章如转载,请注明本文链接:http://fcz8k.com/dedemcs/517.html

 

1.如果您觉得文章帮助了您,可以点击下面的广告来支持我,谢谢!2.本站的原创文章,请转载时务必注明文章作者和来源,谢谢!3.作者投稿可能会经我们编辑修改或补充,并且会注明版权来源,谢谢!

相关文章
网友点评
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)