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

第一次做的一个小小项目(用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{ //上传成功获取上传文件信息

          $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: 其他功能会陆续上传的!
大家一起学习吧!有问题或是建议欢迎交流!

猜你喜欢

转载自blog.csdn.net/qq_36289732/article/details/79052592