接着上次的功能;
单个删除:
<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; }