php:tp5数据条件导出

<!DOCTYPE html>
<html>
    <head>
        <style>
        </style>
        <meta charset="UTF-8">
        <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
        <title>Demo</title>
    </head>
    <body>
        <p style="color:skyblue;font-weight:900;">数据导出</p>
        <form action="{:url('index/Demo/index')}" method="post" id='myform'>
            查找:<input type='search' name='search' class='search' value='{$a}'>
            <!--搜索赋值-->
            <input type='submit' value='搜索' name='sub'  class='sub'> 
            <!--导出赋值-->
            <input type='hidden' value='9'  id='other' name='others'> 
            <!--存放多选-->
            <input type='hidden' value=''  id='inpu' name="inpu">  
           
        </form>
        <input type="button" onclick="data()" value="导出">
        
        <table border="1" cellpadding="5" cellspacing="0">
            <tr>
                <th><input type="checkbox" id="all" onchange="al()"></th>
                <th>姓名</th>
                <th>性别</th>
                <th>年龄</th>
                <th>电话</th>
            </tr>
        {volist name="list" id="vo"}
            <tr>
                <td><input type="checkbox" name="select" value="{$vo.id}" onchange="al()"></td>
                <td>{$vo.name}</td>
                <td>{if condition="$vo.sex eq '男'"}男{elseif condition="$vo.sex eq '女'"}女{else/}保密{/if}</td>
                <td>{$vo.age}</td>
                <td>{$vo.tel}</td>
            </tr>
        {/volist}
        </table>
            
        <script type="text/javascript">
        //全选多选
        
        var all = document.getElementById("all");
        var select = document.getElementsByName("select");
        all.onclick = function(){
            var arr=new Array();
            for(var i = 0; i < select.length; i++){
                if(all.checked == true){
                    select[i].checked = true;
                        var oi=select[i].value;
                        arr.push(oi);
                        var inpu=document.getElementById('inpu').value=arr;
                	    
                }else{
                    select[i].checked = false;
                    for(let b=0;b<arr.length;b++){
        				    arr.splice(0,arr.length)
        	                var inpu=document.getElementById('inpu').value=arr;
        			}
                }   
            }
        }
        
        function al(){
            var arr=new Array();
            //循环所有选中的值
            $('input[name="select"]:checked').each(function(index, element) {
                //追加到数组中
                arr.push($(this).val());
              
            });
            var inpu=document.getElementById('inpu').value=arr;
            //输出到控制台
            console.log(arr);
        }
        
        for(var i = 0; i < select.length; i++){
			select[i].index = i;
			select[i].onclick = function(){
				var count = 0;
				if(select[this.index].checked == false){
					all.checked = false;
				}
 
				for(var j = 0; j < select.length; j++){
					if(select[j].checked == true){
						count += 1;
					}
				}
				if(count == select.length){
					all.checked = true;
				}
			}
		}
        
    	 function data(){
    	    document.getElementById('other').value=2;
    	    document.getElementById('myform').submit();
    	 }
        </script>
    </body>
</html>

<?php
namespace app\index\controller;
use think\Db;
use think\Controller;

class Demo extends \think\Controller
{
    public function index()
    {
            $map= input('search');//搜索框
            $inpu = input('inpu');//隐藏input
            $others = input('others');//新的
// 5、页面渲染后点击搜索,然后点击导出,导出搜索后的数据 
            if($inpu == ""){//如果多选全选的框为空
                if($map == "" && $others == 2){//关键词搜索的框为空和全选赋值框为2
                    $data = db('user')->select();//输出全部
                        $this->pine($data);
                }
             }elseif($inpu!==''){//如果多选全选的框不为空
                //则关键词搜索框为空,搜索按钮为空,导出按钮为1
                    $ar = explode(",",$inpu);//接收多选id,打散
                    if($map== "" && count($ar) >= 1 && $others==2){//如果关键词搜索框为空和单选多选数组》1
                        $lists = [];//声明数组
                        foreach($ar as $a){//遍历循环,通过查找id,输出多选数据
                            $lists[] = db('user')->where('id',$a)->find();
                        }
                    	 $this->pine($lists);
                    }
             }
            if($map){//如果搜索框不为空,根据关键词查询
                $orange = db('user')->where('name|sex|age|tel','like','%'.$map.'%')->select();
            }else{
                $orange = db('user')->select();//否则输出全部
            }
            if(!empty($map) && empty(input('sub'))&&$others==2){//如果搜索框不为空和导出值为空
                $data=db('user')->where('name|sex|age|tel','like','%'.$map.'%')->select();
               
                 $this->pine($data);
            }
            $this->assign("a" ,$map);
            $this->assign( "list",$orange);
            return $this->fetch( "index");
// 3、页面渲染后什么都不做的话直接点击导出
// 1、页面加载渲染显示全部数据
// 2、显示搜索后的数据进行渲染
// 4、页面渲染后点击全选或者复选进行导出
    }
    public function pine($data){
        $Table ='<table border="1">';
            $Table .='<tr>';
            $Table .='<td>姓名</td>';
            $Table .='<td>性别</td>'; 
    		$Table .='<td>年龄</td>';
            $Table .='<td>电话</td>';
            $Table .='</tr>';
                foreach($data as $k=>$val){
                    $Table .='<tr>';
                    $Table .='<td>'.$val['name'].'</td>';
                    $Table .='<td>'.$val['sex'].'</td>';
    				$Table .='<td>'.$val['age'].'</td>';
                    $Table .='<td>'.$val['tel'].'</td>';
                    $Table .='</tr>';
                }
            $Table .='</table>';
            header("Content-type: application/vnd.ms-excel");
            header("Content-Type: application/force-download");
            header("Content-Disposition: attachment; filename=".'员工表'."_".date('Y-m-d').".xls");
            header('Expires:0');
            header('Pragma:public');
            echo '<html><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'.$Table.'</html>';
    }
}
         
 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值