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

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

2018-01-13 17:24 2541 查看
第一次做的一个小小项目(用TP实现的)

主要功能:

(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{ //上传成功获取上传文件信息[/b]

$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: 其他功能会陆续上传的!

大家一起学习吧!有问题或是建议欢迎交流!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  PHP 新手 后端 TP
相关文章推荐