第一次做的一个小小项目(用TP实现的)
主要功能:
(1) 图片的导入以及每张图片相应的信息
(2) 多种excle表的导入
(3) excle表的导出(只导出选中部分)
(4) 最基本的权限管理
(5) 最基本的翻页,查询,修改,删除等
项目的不足:
(1)对数据库的设计不熟悉,设计不合理(有更好的设计方式)
(2)由于对前端的掌握不够,与前端开发人员合作不是非常好,并未能很好地用ajax实现各功能
希望能在寒假前交予测试并争取早日交付,寒假准备重新设计数据库,把部分功能重做。
下面把一些实现逻辑和示例代码贴在下面,一方面作为一种记录,另一方面希望需要的人可以看看。
希望大牛们或更有经验的人能提供建议,谢谢!
以下是主功能的实例代码:
最最最最简单的权限管理
(功能是判断是否为超级管理员或是管理员,以显示相应注册按钮)
模态框多图片上传:
以下为接收数据代码:
PS: 其他功能会陆续上传的!
大家一起学习吧!有问题或是建议欢迎交流!
主要功能:
(1) 图片的导入以及每张图片相应的信息
(2) 多种excle表的导入
(3) excle表的导出(只导出选中部分)
(4) 最基本的权限管理
(5) 最基本的翻页,查询,修改,删除等
项目的不足:
(1)对数据库的设计不熟悉,设计不合理(有更好的设计方式)
(2)由于对前端的掌握不够,与前端开发人员合作不是非常好,并未能很好地用ajax实现各功能
希望能在寒假前交予测试并争取早日交付,寒假准备重新设计数据库,把部分功能重做。
下面把一些实现逻辑和示例代码贴在下面,一方面作为一种记录,另一方面希望需要的人可以看看。
希望大牛们或更有经验的人能提供建议,谢谢!
以下是主功能的实例代码:
最最最最简单的权限管理
(功能是判断是否为超级管理员或是管理员,以显示相应注册按钮)
用数据库中的一个字段判断,数据库的设置就不贴了,以下是页面的判断代码:
<!--管理员注册--> <divid="top-icon"> {ifcondition="$role eq 1"} <div class="userHeadtop-icon"> <a href="__URL__/register/role/3" title="用户注册"><imgsrc="__PUBLIC__/Images/xxx></a> </div> <div class="userHeadtop-icon"> <a href="__URL__/register/role/2" title="管理员注册"><imgsrc="__PUBLIC__/Images/xxx" ></a> </div> <div class="top-icon"> <a href="__URL__/register/role/1"title="超级管理员用户注册"><imgsrc="__PUBLIC__/Images/xxx "></a> </div> {elseifcondition="$role eq 2"/} // 此处最后一定要加/不然会出错,当时找了好久的错误 <div class="userHeadtop-icon"> <a href="__URL__/register/role/3" title="用户注册"><img src="__PUBLIC__/Images/xxx"></a> </div> <div class="userHeadtop-icon"> <a href="__URL__/register/role/2" title="管理员注册"><imgsrc="__PUBLIC__/Images/xxx" ></a> </div> {/if}PS:注册功能就不贴了,最简单的添加数据库
退出按钮:
<a href="__URL__/quit"onclick='return del();'> <img src="__PUBLIC__/Images/xxx"> </a> Js: <script> function del(){ if(confirm("是否退出")) { return true; }else { return false; } } </script> 控制器中: function quit(){ session(null);//清空所有session信息 redirect(U('admin/Index/index'),0,'重新登录'); }
模态框多图片上传:
<form action="__URL__/upload" method="POST"enctype="multipart/form-data"> <div class="modal-body" style="height: auto;width: 100%;"> <divclass="col-md-3 chooseImg"> <table> <select name="select[]" id="" class="form-control"> //此处为选择上传类型 <option value="1">竞赛类</option> <option value="2">非竞赛类</option> </select> <input type="file"class="form-control" name="file[]"> <input type="text" class="form-control" placeholder="学号" name="number[]"> <input type="text" class="form-control" placeholder="证书名称" name="Name_project[]"> <input type="text" class="form-control" placeholder="证书等级" name="grade[]"> <input type="text" class="form-control" placeholder="取得时间" name="time[]"> <input type="text" class="form-control" placeholder="指导老师" name="teacher[]"> </table> </div> <!--以下重复7个跟上面一样的div,同时上传8张图片以及对应信息,用select实现上传类型的选择 --> </form>
以下为接收数据代码:
//下面第一部分的代码为判断是否缺少信息或是被工具改过参数,如果是则提示信息并返回 function upload(){ if(!$_POST['select'] || !$_POST['number'] || !$_POST['time'] ||!$_POST['grade'] || !$_POST['teacher'] || !$_POST['Name_project']){ echo "<script type='text/javascript'>alert('参数错误!');</script>"; $URL=U('admin/TheList/index'); echo "<script type='text/javascript'> window.location.href = '$URL'; </script>"; exit; } //接收数据,数据类型为数组 $select = $_POST['select'];//上传的证书是比赛类型或是非比赛 $number = $_POST['number'];//相关学号 $time = $_POST['time'];//取得的时间 $grade = $_POST['grade'];//证书等级 $teacher = $_POST['teacher'];//指导老师 $Name_project = $_POST['Name_project'];//证书名称 //以下代码为判断接收的各类型数据项是否匹配,8张图片下面的信息是否填全,不全则提示 $count2=0; $count3=0; $count4=0; $count5=0; $count6=0; //循环判断数组中有效数据的个数,直接用count的话一直为8,因为前台有八个输入框,就算没输入也会有8个,其中可能部分数据为空 foreach($number as $val){ if($val!='') $count2++; } foreach($time as $val){ if($val!='') $count3++; } foreach($grade as $val){ if($val!='') $count4++; } foreach($teacher as $val){ if($val!='') $count5++; } foreach($Name_project as $val){ if($val!='') $count6++; } if($count2!=$count3 || $count2!=$count4 ||$count2!=$count5 || $count2!=$count6 || $count3!=$count4 || $count3!=$count5 ||$count3!=$count6 || $count4!=$count5 || $count4!=$count6 || $count5!=$count6){ $this->error('输入的信息不匹配'); } /******************保存在服务器上********************/ import('ORG.Net.UploadFile');//导入上传类 $upload= new \UploadFile();// 实例化上传传类 $upload->maxSize = 3145728 ;// 设置附件上传大小 $upload->allowExts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型 $upload->savePath= './Public/Uploads/';// 设置附件上传目录 if(!$upload->upload()) {// 上传错误提示错误信息 echo "<scripttype='text/javascript'>alert('上传错误');</script>"; $URL=U('admin/TheList/index'); echo "<scripttype='text/javascript'> window.location.href = '$URL'; </script>"; exit; }else{ //上传成功获取上传文件信息 $info = $upload->getUploadFileInfo(); //多图片一次性上传,返回一个二维数组 $count = count($info); //$_FILES['img']['tmp_name']; 上传 临时文件的绝对路径 } //for循环,实现上传 for($i=0;$i<$count;$i++){ $select1 = $select[$i]; //接收各个数组同一位置的信息 $number1 = $number[$i]; $time1 = $time[$i]; $grade1 = $grade[$i]; $teacher1 = $teacher[$i]; $Name_project1 = $Name_project[$i]; $datasize =$info[$i]["size"]; //获取当前上传图片的大小,用于条件判断 $name = $info[$i]["name"]; //用于提示信息 if($datasize > 1024*300){ echo '<scriptlanguage="javascript">alert("'.$name.'大小超过300k'.'");</script>'; continue; }else{ if(!($select1 &&$number1 && $time1 && $grade1 && $teacher1 &&$Name_project1 && $info[$i])){ echo '<scriptlanguage="javascript">alert("'.$name.'相关信息不全'.'");</script>'; continue; } switch($select1){ case‘1’: //此处为导入数据库,个人的数据库设置不同 //思路:把图片的路径放在数据库,加上存放的文件名,取出的时候需要在前面加__PUBLIC__ 不能一开始就把__PUBLIC__存在数据库中,TP中是解析这个的,放在数据库取出后系统将其当作变量,不会解析 //实例:(一些安全性判断等这里就不写了,只是举个栗子) $updata['Filecopy_address']="Uploads/".$info[$i]["savename"]; $updata['Name_project']=$Name_project1; $updata['Name_project']=$Name_project1; $updata['Time1']=$time1; $updata['Techer_guidance']=$teacher1; $updata['Grade2']=$grade1; $model->where($where)->save($updata); break; case‘2’: //如上 }//endswitch
PS: 其他功能会陆续上传的!
大家一起学习吧!有问题或是建议欢迎交流!