PHP头条
热点:

PHP开发的一个小小项目,记录下实现思路(附上实现功能的示例代码)(二),php示例代码


接着上次的功能;

单个删除:

<a href="javascript:del2({$vo['Stu_number']})"  
onclick='return del();'>
<img src="__PUBLIC__/Images/xxx" ><a/>
<script>
function del2(Number_stu){
	var url="__URL__/delete2";
	$.post(url, {Number_stu:Number_stu,select:'1'}, function(msg){
        if(msg.info == 'ok') {
          alert('删除成功');
          window.location.reload();//删除成功后刷新本页面
        } else {
          alert('删除失败');
        }
      }, 'json')
}
</script>

多个删除:

<input type="button" class="submit2 btn btn-primary" name="Submit2" onclick="frmSubmit2(this.form)" value="删除"/>

<script>
function frmSubmit2(form){
	var checkChild = document.getElementsByClassName('checkChild');  //获取信息用于判断

	var j=0;
		for(var i=0;i<checkChild.length;i++){
			if (checkChild[i].checked!=false) {
				j++;
			}
		}
	if (j!=0) {     //未选中信息直接点删除,则提示未选中信息
		if(confirm("确定要删除吗? ")) {
    			form.action = "__URL__/delete3";
        		form.submit();
	  	}else{
	    		return ;
	  	}
	}else{
		alert('未选中信息');
	}
			
}
</script>


前端代码:

功能:点击图标时显示或消失

          点击复选框时多选


//start search
<div class="col-md-12 search" id="search">  
			<form action="__URL__/xxx" method="POST">
				姓名:<input type="text" name="Name">
				学号:<input type="text" name="Number">
				专业:<input type="text" name="Major"> 
				<br/> 
				年级:<input type="text" name="Grade">
				班级:<input type="text" name="Class">
				<input class=" btn btn-primary" type="reset">
				<input type="submit" class="btn btn-primary" value="搜索">
			</form>
			
</div>
//end search

<form action="__URL__/xxx" method="POST">
<input type="submit" class="submit btn btn-primary" id="outExcel"  value="导出"/>
<thead>
				<th><input type="checkbox" id="checkParent"></th>
				<th>姓名</th>
				<th>学号</th>
				<th>专业</th>
				<th>年级</th>
				<th>班级</th>
				<th>政治面貌</th>
				<th>操作</th>
</thead>
{volist id="vo" name="list"}
	<tr>
	  <td><input type="checkbox" name="checkbox1[]" class="checkChild" value="{$vo['Stu_number']}"/></td>
	  <td>{$vo['xxx']}</td>
	  <td>{$vo['xxx']}</td>
	  <td>{$vo['xxx']}</td>
	  <td>{$vo['xxx']}</td>
	  <td>{$vo['xxx']}</td>
	  <td>{$vo['xxx']}</td>
	  <td>
		<a href="__URL__/edit/Number_stu/{$vo['xxx']} " title="修改">
		<img src="__PUBLIC__/Images/xxx" data-toggle="modal" data-target="#myModal3"></a>					
		<a href="javascript:del2({$vo['xxx']})"  
		onclick='return del();'><img src="__PUBLIC__/Images/xxx" class="deleteStu"><a/>
	  </td>
	</tr>
{/volist}
</form>

Js:
window.onload = function(){
var search = document.getElementById('search');
var checkParent = document.getElementById('checkParent');
var checkChild = document.getElementsByClassName('checkChild');

searchIcon.onclick = function(){  //点击时显示框,对应上面的search代码

		if (search.style.display != "block") {
			search.style.display = "block";
		}else {
			search.style.display = "none";
		}
	}

checkParent.onclick = function(){	//点击属性栏的复选框时多选
		
		for(var i =0;i<checkChild.length;i++){
			if(checkParent.checked){
				checkChild[i].checked = true;

			}else{
				checkChild[i].checked = false;
			}	
		}
		
	}

}


导出excle表功能:

前端代码就上面那段,那个导出按钮

D(Member)->msgOut($select,$checkbox);

导出选中信息

$checkbox为复选框的值,是数组,我前端设置的是学号,用可以寻找相关信息的字段就行。用传过来的信息在数据库中寻找相应的值

此处的Member为模版,实例化模版并使用其中的方法

原本的代码中是有三种导出的形式,这里只是示例代码,理解后只需要做一些逻辑了


Member Model中:

function msgOut($select='',$list=''){
       $xlsModel = M(xxx);

       $all = $xlsModel->field('*')->select();    //所有基本信息
       $count2 = count($all);                     //所有基本信息的数量
	//此处的$list为复选框的一维数组,查询其中所有的值,需要重新构造查询语句,以下为构造方法
       if($list!=null){
            foreach ($list as $key => $value) {
                $b[]=Array('0'=>'eq','1'=>$value);
            }
            $b[]='or';
       }else{
            $b[]='';
       }


    if($select==1){                  //基本信息的导出
      $where2['Stu_number']=$b;                                                                                               $xlsData=$xlsModel->field('*')->where($where2)->order('Stu_number asc')->select();
 } else if($select==2){               //工作情况表导出
          $where2['Number_stu']=$b;
          $certificate=M(‘xxx’);    //实例化数据库中的表
          $xlsData = $certificate->field('*')->where($where2)->order('Number_stu asc')->select();
          $count=count($xlsData);

          for($i=0;$i<$count;$i++){
                for($j=0;$j<$count2;$j++){
                    if($xlsData[$i]['Number_stu']==$all_info[$j]['Stu_number']){
                         $xlsData[$i]['Name']=$all_info[$j]['Name'];
                         $xlsData[$i]['Sex']=$all_info[$j]['Sex'];
                         $xlsData[$i]['Major']=$all_info[$j]['Major'];
                         $xlsData[$i]['Grade']=$all_info[$j]['Grade'];
                         $xlsData[$i]['Class']=$all_info[$j]['Class'];
                    }
                }
            }

       }
switch($select){
	case '1'://竞赛相关信息的导出
        $data = array();
        foreach ($xlsData as $k=>$goods_info){
            $data[$k]['Name'] = $goods_info['Name'];
            $data[$k]['Sex'] = $goods_info['Sex'];
            $data[$k]['Number_stu'] = $goods_info['Number_stu'];
            $data[$k]['Major'] = $goods_info['Major'];
            $data[$k]['Grade']  = $goods_info['Grade'];
            $data[$k]['Class']  = $goods_info['Class'];
            $data[$k]['Name_project'] = $goods_info['Name_project'];
            $data[$k]['Techer_guidance'] = $goods_info['Techer_guidance'];
            $data[$k]['is_major'] = $goods_info['is_major'];
            $data[$k]['Time1'] = $goods_info['Time1'];
            $data[$k]['Grade2'] = $goods_info['Grade2'];
            $data[$k]['Count'] = $goods_info['Count'];
        }

        foreach ($data as $field=>$v){
            if($field == 'Name')
                $headArr[]='姓名';
            if($field == 'Sex')
                $headArr[]='性别';
            if($field == 'Number_stu')
                $headArr[]='学号';
            if($field == 'Major')
                $headArr[]='专业';
            if($field == 'Grade')
                $headArr[]='年级';
            if($field == 'Class')
                $headArr[]='班级';
            if($field == 'Name_project')
                $headArr[]='项目名称';
            if($field == 'Techer_guidance')
                $headArr[]='指导老师';
            if($field == 'is_major')
                $headArr[]='是否本专业';
            if($field == 'Time1')
                $headArr[]='取得时间';
            if($field == 'Grade2')
                $headArr[]='等级';
            if($field == 'Count')
                $headArr[]='证书总数';
        }
            break;
	
	case ‘2’:
	//如上形式
	break;
	
   $filename="基本表的导出";
   //$data 为一个二维数组,第一维是索引,第二维是关联数组
   $this->getExcel($filename,$headArr,$data);
   ob_end_clean();
}


private  function getExcel($fileName,$headArr,$data){
        //导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
        import("Org.Net.PHPExcel");
        import("Org.Net.PHPExcel.Writer.Excel5");
        import("Org.Net.PHPExcel.IOFactory.php");
        import("Org.Util.PHPExcel");
        import("Org.Util.PHPExcel.Reader.Excel5");
        import("Org.Util.PHPExcel.Reader.Excel2007");
        import("Org.Util.PHPExcel.IOFactory.php");
        import("Org.Util.PHPExcel.Shared.Date.php");
        $date = date("_Y.m.d_H.i.s");
        $fileName .= "_{$date}.xls";

        //创建PHPExcel对象,注意,不能少了\
        $objPHPExcel = new \PHPExcel();
        $objProps = $objPHPExcel->getProperties();

        //设置表头
        $key = ord("A");
        //print_r($headArr);exit;
        foreach($headArr as $v){
            $colum = chr($key);
            $col=$colum.'1';
            $objPHPExcel->setActiveSheetIndex(0) ->setCellValue($colum.'1'," ".$v);
            $objPHPExcel->setActiveSheetIndex(0) ->setCellValue($colum.'1'," ".$v);
          
            $key += 1;
        }

        $column = 2;
        $objActSheet = $objPHPExcel->getActiveSheet();
        foreach($data as $key => $rows){ //行写入
            $span = ord("A");
            foreach($rows as $keyName=>$value){// 列写入
                $j = chr($span);
                $objActSheet->setCellValue($j.$column," ".$value);
                $span++;
            }
            $column++;
        }
        
        $fileName = iconv("utf-8", "gb2312", $fileName);

        //重命名表
        //$objPHPExcel->getActiveSheet()->setTitle('test');
        //设置活动单指数到第一个表,所以Excel打开这是第一个表
        $objPHPExcel->setActiveSheetIndex(0);
        ob_end_clean();//清除缓冲区,避免乱码
        header('Content-Type: application/vnd.ms-excel');
        header("Content-Disposition: attachment;filename=\"$fileName\"");
        header('Cache-Control: max-age=0');

        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        $objWriter->save('php://output'); //文件通过浏览器下载
        exit;
        
    }





www.phpzy.comtrue/php/5100.htmlTechArticlePHP开发的一个小小项目,记录下实现思路(附上实现功能的示例代码)(二),php示例代码 接着上次的功能; 单个删除: a href="javascript:del2({$vo['Stu_number']})" onclick='return del();'img src="__PU...

相关文章

相关频道:

PHP之友评论

今天推荐