您的位置:首页 > 编程语言 > PHP开发

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

2018-01-13 21:00 1286 查看
接着上次的功能;

单个删除:

<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'
4000
)
$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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  PHP TP 新手 后端
相关文章推荐